数据库与实例的关系
Reference
[1]
⾸先说说,数据库是做什么?
数据库是⽤来长久存储数据的,⽽我们⼤家都知道内存只能临时存储,磁盘等才能真正存储数据.那你说数据库会放那⾥呢?肯定是存放在磁盘上,其实数据库就是磁盘上的⼀个⽂件。
从上⾯我们得出结论:数据库==磁盘上的⽂件.
既然数据库可以看成磁盘上⽂件,我们怎么使⽤数据库呢?
如果说我们可以直接使⽤数据库,那就等价与直接使⽤磁盘上的⽂件.我们知道这样的⼀个常识:必须把磁盘上的⽂件读⼊内存才能使⽤.
数据库应用案例那正确的流程是不是应该这样呢?把磁盘上⽂件先读⼊内存,然后再使⽤呢.
对了,这个才是使⽤数据库的正确流程.
数据库如何读⼊内存呢?
这个时候,就是我们要介绍的instance(实例)了.实例就是内存结构和⼀组后台进程.
实际上,正常的数据库读⼊内存的过程是,由实例中⼀组后台进程从磁盘上将数据⽂件读⼊到实例的内存中,然后经过在内存中对数据的操作再从实例的内存中经过⼀组后台进程写到数据库中.
那实例相对与数据库⽽⾔,应该就是数据库的运⾏环境(虽不准确但也很贴切).
实例是位于物理内存⾥的数据结构,由线程和内存池组成,实例才是真正⽤于操作数据库⽂件的(即前⾯说的⼀系列⽂件);
如Oracle实例: 位于物理内存⾥的数据结构,它由操作系统的多个后台进程和⼀个共享的内存池所组成,共享的内存池可以被所有进程访问。
⽤户如果要存取数据库⾥的数据, 必须通过Oracle实例才能实现,⽽不能直接读取硬盘上的⽂件。
备注:其实Oracle实例也即是平常所说的数据库服务(service)
实例相对与数据库⽽⾔,可以理解为是数据库的运⾏环境(不准确但也还算贴切)。
实例与数据库
Oracle
数据库与实例之间是 1对1或1/n 的关系,即实例只能对于⼀个数据库,⽽⼀个数据库能有对个实例:
在⾮并⾏的数据库系统中每个Oracle数据库与⼀个实例相对应;
在并⾏的数据库系统中,⼀个数据库会对应多个实例,同⼀时间⽤户只与⼀个实例相联系,当某⼀个实例出现故障时,其他实例⾃动服务,保证数据库正常运⾏。
mysql
⼀般情况下⼀个实例操作⼀个或多个数据库;集情况下多个实例操作⼀个或多个数据库。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。