第1章 Oracle 10g数据库简介
1.3 Oracle数据库存储简介
我们已经了解到,0racle数据库实际上是位于物理磁盘上的多个文件的逻辑集合,主要包括数据文件、联机日志文件和控制文件。用户的数据实际存放在数据文件里。
那么我们来想象一下,如果要获取某个具体数据的时候,比如要检索雇员表里雇员号为l00的雇员信息,我们应该怎么做?
我们知道雇员信息是位于数据文件里的,那么最简单的方法就是从第一个数据文件的起点开始,依次读取每个文件的最小组成单位(如果位于操作系统上,则操作系统块就是它的最小组成单位,每个数据文件都由许多个操作系统块组成;如果直接放在磁盘上,比如裸设备或ASM磁盘上,则磁盘块就是它的最小组成单位,这时每个数据文件就是由多个磁盘块组成的)里所包含的数据,判断其中是否存在雇员信息。如果没有则读取下一个最小组成单位;如果有雇员信息,则读取其雇员号,判断该雇员号是否等于100,如果不是,则读取下一个最小组成单位。如果是,则返回该雇员信息。如此这般,直到该文件全都读取完毕为止。然后继续读取下一个数据文件,再做一遍这样的事情,直到读完所有的数据文件。这样才能找到所有雇员号为100的雇员信息。
很显然,这种方式是低效的。特别是如果数据文件很多,总数据量很大,比如上百GB,再加上并发用户数很多,很多用户都查找数据,那这种查找数据的方式是几乎不可能完成的任务。这里仅仅是举了一个查询的例子,如果再引入修改数据的话,那后果更不可想象。
Oracle数据库当然不会采用这种方式。为了更好地管理物理磁盘上的数据文件,Oracle引入了逻辑存储的概念。所谓逻辑存储的概念,可以理解为,Oracle把数据在物理文件里摆放的位置等信息都以数据行的形式存放在了相关的表里。
展开