Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427192
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类:

2008-06-18 00:17:00

数据字典缓冲区

数据字典缓冲区,用来存放数据库的数据字典信息,在数据库系统启动时分配,是共享内存空间,所有进程都可以访问。

数据字典是数据库的一个重要组成部分,是对数据库本身作详细说明的数据集。系统维护人员对数据库系统地维护,最终要反映在数据字典中;用户对数据库中数据的访问,需要通过数据字典返回结构化的信息。根据信息所起作用的不同,数据字典中的信息可以分为以下几类:

1)数据库的物理结构。说明数据库使用了那些操作系统文件、裸设备,表空间如何被创建等等。

2)数据库的逻辑结构。一个数据库包括:表、索引、视图、触发器、存储过程等结构,这些结构就是数据库对象。数据库的逻辑结构,就是对数据库对象的结构说明及定义。对一个表来说,在数据字典中要存放:表中的字段、字段的类型、字段中是否存在完整性定义、表中是否有索引、表中是否有外健等信息;此外,还要说明表存放在那个表空间中,系统如何为表分配存储空间等。

3)用户定义及授权信息。保存可以访问数据库的用户信息,记录为不同用户设定的操作权限等。

4)数据库对象的统计信息。这些信息,是对表、索引中存放的数据进行统计后得到的。优化器进程根据这些信息,生成SQL语句费用最低的执行计划。经常被使用的统计信息有:表中记录的数量、字段上数值的分布、表使用的数据页数量、索引的深度以及使用的数据页数量等等。

数据库系统对用户请求的处理过程,可以清楚地说明数据字典的关键作用。当数据库系统接收到用户的SQL语句请求后,首先需要获取SQL语句的执行计划,然后按照执行计划处理数据,最后将结果返回。要获取SQL语句的执行计划,优化器需要按照以下的步骤,对SQL语句进行分析、优化:

1)验证SQL语句是否存在语法错误。以访问一个表来说,系统要检查是否存在这个表,表中的字段是否相符、数据类型是否匹配、是否违反字段的完整性定义、是否违背唯一索引限制、是否违背参照完整性等等。

2)检查发出请求用户的执行权限。根据SQL语句要执行的操作,检查用户是否有相应的操作权限。不仅要检查用户获得的直接授权,还要检查所有可能的隐含授权。对视图的访问来说,不仅要检查用户是否有访问该视图的权限,还要检查视图所基于数据表的访问权限。

3)选择SQL语句的执行计划。优化器首先生成SQL语句的所有执行方式,根据数据库对象的统计信息,评估所有的执行方式,选择费用最低执行方式为该SQL语句的最终执行计划。

从以上的处理过程,可以明确地看出数据字典的重要作用。由于数据字典信息要不断被使用,因此应当避免在系统的正常运行过程中,不断地将数据字典信息读出和读入内存,这可以通过加大数据字典缓冲区的内存空间而实现。

阅读(1475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~