版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、快速深入地掌握和管理数据库系统目录 TOC o 1-3 h z u HYPERLINK l _Toc319655816 前言 PAGEREF _Toc319655816 h 1 HYPERLINK l _Toc319655817 第一章 数据库系统的根本概念 PAGEREF _Toc319655817 h 2 HYPERLINK l _Toc319655818 1.1 数据库系统的开展概述 PAGEREF _Toc319655818 h 2 HYPERLINK l _Toc319655819 1.2 数据库系统根本概念 PAGEREF _Toc319655819 h 4 HYPERLINK l
2、 _Toc319655820 1.3 数据库系统相关概念 PAGEREF _Toc319655820 h 7 HYPERLINK l _Toc319655821 1.4 常用数据库系统的体系结构 PAGEREF _Toc319655821 h 10 HYPERLINK l _Toc319655822 1.5 常用数据库系统的特点 PAGEREF _Toc319655822 h 17 HYPERLINK l _Toc319655823 1.6 数据库系统的性能调整 PAGEREF _Toc319655823 h 19 HYPERLINK l _Toc319655824 1.7 本章小结 PAGE
3、REF _Toc319655824 h 22 HYPERLINK l _Toc319655825 第二章 进程管理 PAGEREF _Toc319655825 h 23 HYPERLINK l _Toc319655826 2.1 用户请求的处理过程 PAGEREF _Toc319655826 h 23 HYPERLINK l _Toc319655827 2.2 数据库系统的常用进程 PAGEREF _Toc319655827 h 25 HYPERLINK l _Toc319655828 2.3 进程之间的相互关系 PAGEREF _Toc319655828 h 33 HYPERLINK l _
4、Toc319655829 2.4 进程的调度管理 PAGEREF _Toc319655829 h 33 HYPERLINK l _Toc319655830 2.5 进程配置的一般原那么 PAGEREF _Toc319655830 h 35 HYPERLINK l _Toc319655831 2.6 常用数据库系统的进程管理 PAGEREF _Toc319655831 h 36 HYPERLINK l _Toc319655832 2.7 本章小结 PAGEREF _Toc319655832 h 47 HYPERLINK l _Toc319655833 第三章 内存管理 PAGEREF _Toc3
5、19655833 h 48 HYPERLINK l _Toc319655834 3.1 用户请求处理时的内存使用 PAGEREF _Toc319655834 h 48 HYPERLINK l _Toc319655835 3.2 数据库系统的内存结构 PAGEREF _Toc319655835 h 49 HYPERLINK l _Toc319655836 3.3 内存的调度管理 PAGEREF _Toc319655836 h 53 HYPERLINK l _Toc319655837 3.4 内存配置的一般原那么 PAGEREF _Toc319655837 h 54 HYPERLINK l _To
6、c319655838 3.5 常用数据库系统的内存管理 PAGEREF _Toc319655838 h 55 HYPERLINK l _Toc319655839 3.6 本章小结 PAGEREF _Toc319655839 h 69 HYPERLINK l _Toc319655840 第四章 存储管理 PAGEREF _Toc319655840 h 70 HYPERLINK l _Toc319655841 4.1 数据库存储结构 PAGEREF _Toc319655841 h 70 HYPERLINK l _Toc319655842 4.2 控制数据的存放和读取 PAGEREF _Toc319
7、655842 h 75 HYPERLINK l _Toc319655843 4.3 表的管理和维护 PAGEREF _Toc319655843 h 77 HYPERLINK l _Toc319655844 4.4 索引的管理和维护 PAGEREF _Toc319655844 h 79 HYPERLINK l _Toc319655845 4.5 表和索引的分区 PAGEREF _Toc319655845 h 83 HYPERLINK l _Toc319655846 4.6 常用数据库系统的存储管理 PAGEREF _Toc319655846 h 85 HYPERLINK l _Toc319655
8、847 4.7 本章小结 PAGEREF _Toc319655847 h 92 HYPERLINK l _Toc319655848 第五章 优化器和SQL语句处理 PAGEREF _Toc319655848 h 93 HYPERLINK l _Toc319655849 5.1 SQL语言概述 PAGEREF _Toc319655849 h 93 HYPERLINK l _Toc319655850 5.2 优化器概述 PAGEREF _Toc319655850 h 94 HYPERLINK l _Toc319655851 5.3 优化器对SQL语句的处理 PAGEREF _Toc31965585
9、1 h 98 HYPERLINK l _Toc319655852 5.4 优化器优化过程的改良 PAGEREF _Toc319655852 h 104 HYPERLINK l _Toc319655853 5.5 有关优化器的日常维护 PAGEREF _Toc319655853 h 106 HYPERLINK l _Toc319655854 5.6 基于优化器处理的实际应用 PAGEREF _Toc319655854 h 107 HYPERLINK l _Toc319655855 5.7 常用数据库系统的优化器管理 PAGEREF _Toc319655855 h 113 HYPERLINK l
10、_Toc319655856 5.8 本章小结 PAGEREF _Toc319655856 h 115 HYPERLINK l _Toc319655857 第六章 事务和并发控制 PAGEREF _Toc319655857 h 116 HYPERLINK l _Toc319655858 6.1 事务概述 PAGEREF _Toc319655858 h 116 HYPERLINK l _Toc319655859 6.2 并发控制概述 PAGEREF _Toc319655859 h 120 HYPERLINK l _Toc319655860 6.3 锁机制 PAGEREF _Toc319655860
11、 h 122 HYPERLINK l _Toc319655861 6.4 多版本机制 PAGEREF _Toc319655861 h 130 HYPERLINK l _Toc319655862 6.5 系统并发控制的调整 PAGEREF _Toc319655862 h 132 HYPERLINK l _Toc319655863 6.6 常用数据库系统的并发控制机制 PAGEREF _Toc319655863 h 134 HYPERLINK l _Toc319655864 6.7 本章小结 PAGEREF _Toc319655864 h 141 HYPERLINK l _Toc319655865
12、 第七章 数据库日志 PAGEREF _Toc319655865 h 142 HYPERLINK l _Toc319655866 7.1 数据库日志概述 PAGEREF _Toc319655866 h 142 HYPERLINK l _Toc319655867 7.2 日志文件 PAGEREF _Toc319655867 h 145 HYPERLINK l _Toc319655868 7.3 长事务的处理 PAGEREF _Toc319655868 h 149 HYPERLINK l _Toc319655869 7.4 常用系统数据库的日志管理 PAGEREF _Toc319655869 h
13、150 HYPERLINK l _Toc319655870 7.5 本章小结 PAGEREF _Toc319655870 h 157 HYPERLINK l _Toc319655871 第八章 备份和恢复 PAGEREF _Toc319655871 h 158 HYPERLINK l _Toc319655872 8.1 数据库系统的主要故障 PAGEREF _Toc319655872 h 158 HYPERLINK l _Toc319655873 8.2 数据库的一致性 PAGEREF _Toc319655873 h 160 HYPERLINK l _Toc319655874 8.3 数据库备
14、份 PAGEREF _Toc319655874 h 161 HYPERLINK l _Toc319655875 8.4 数据库恢复 PAGEREF _Toc319655875 h 164 HYPERLINK l _Toc319655876 8.5 数据的导入和导出工具 PAGEREF _Toc319655876 h 167 HYPERLINK l _Toc319655877 8.6 常用数据库系统的备份和恢复管理 PAGEREF _Toc319655877 h 168 HYPERLINK l _Toc319655878 8.7 本章小结 PAGEREF _Toc319655878 h 173
15、HYPERLINK l _Toc319655879 第九章 数据库系统的日常维护 PAGEREF _Toc319655879 h 174 HYPERLINK l _Toc319655880 9.1 数据库管理员的职责 PAGEREF _Toc319655880 h 174 HYPERLINK l _Toc319655881 9.2 操作系统的维护 PAGEREF _Toc319655881 h 176 HYPERLINK l _Toc319655882 9.3 数据库系统的日常维护 PAGEREF _Toc319655882 h 176 HYPERLINK l _Toc319655883 9.
16、4 常用数据库系统的日常维护 PAGEREF _Toc319655883 h 182 HYPERLINK l _Toc319655884 9.5 本章小结 PAGEREF _Toc319655884 h 218 HYPERLINK l _Toc319655885 参考文献 PAGEREF _Toc319655885 h 218前言 数据库管理系统是数据存储和管理的重要手段,已经成为应用系统的核心。对它的任何操作失误和管理不当,都可能引起灾难性的后果。不管是数据库管理员,还是程序设计和开发人员,都应当对自己所操作数据库系统有深入地了解。有关数据库系统理论方面的书籍,着重在于对各种理论知识、实现算
17、法的讲解。对一般用户而言,内容比拟抽象、难以理解。由于理论知识不能和实际工作有机地结合起来,读者往往不能深入、细致地阅读并最终掌握、运用这些知识。而特定数据库系统的管理图书,没有太多的理论讲解,主要是基于实际操作,引导读者一步步从系统的规划、安装到配置,建立起一个实际的系统运行环境。然后在此根底上教导用户如何使用、如何操作、如何解决系统出现的问题。读者往往不能够从整体上快速、深入地把握这个数据库系统。本书从一个全新的角度看待数据库系统,将理论知识和具体数据库系统的管理和维护有机地结合,让读者在掌握理论知识的同时,更快速、深入地了解自己所使用的数据库系统。本书包含九个章节,可以分为四个局部:第一
18、局部包括第1、2、3、4章,分别从系统体系结构、进程管理、内存管理、存储管理几个方面,讲解数据库系统。从CPU、内存、I/O的角度来看,数据库系统并不复杂。它不外乎就是使用这些资源,为用户提供数据存储和维护机制,方便用户对数据的访问和管理。用户对数据库系统的配置,也就是让它合理地使用这些资源,加快数据的处理速度。用户从这样一个全新的角度去看待数据库系统,可以摆脱对数据库系统固有的畏惧感,从而能够快速、深入地掌握数据库系统的管理和配置。第二局部包括第5、6章,涉及数据库系统的作业管理,分别从SQL语句、优化器处理、事务处理、并发控制等多个方面,讲解优化器如何分析、优化SQL语句,如何生成SQL语
19、句的最终执行方案;讲解系统如何维护事务的数据一致性,如何通过并发控制机制实现事务的可串行化调度。通过对这一局部内容的掌握,让用户深入数据库系统内部,帮助用户写出高效率的SQL语句、有目的的控制应用程序的运行,从而保证系统更好、更稳定地运行。第三局部包括第7、8章,从数据库的日志管理、备份和恢复管理,讲解数据库系统中数据平安、可靠的保障手段。日志是数据库系统保证数据一致性的根底,非常重要,然而往往被用户所无视。通过对这一局部内容的掌握,用户可以判断自己当前使用的备份和恢复策略是否适宜;可以采取更合理措施,更好地保障数据的平安、可靠;在系统出现故障时,可以决定应当采取那种最适宜的恢复手段。第四局部
20、包括第9章,讲述数据库系统的日常管理,对数据库管理员的日常管理工作进行了汇总。阅读这一局部,将帮助数据库管理员明确自己的工作职责,对接触系统时间短、没有深入掌握的管理员,会有很大的帮助。针对每一章节,本书选取常用数据库系统:DB2、ORACLE、INFORMIX、SYBASE,作为我们讲解的范围。虽然微软公司的SQL SERVER系统,也有很大的用户群体,但基于以下考虑,没有在本书中讲解:1SQL SERVER不是跨平台的数据库系统,只能够在WINDOWNS操作平台上运行。而大多数关键业务系统,都选用UNIX作为其操作平台。2微软公司和SYBASE公司早期进行合作,共同进行数据库系统的研发。因
21、此SQL SERVER和SYBASE数据库系统,两者无论在内核、管理方式、命令使用等方面,都大体上相同。本书有关SYBASE系统的讲述,大都可以适用于SQL SERVER系统。本书基于UNIX平台书写,所参考的各数据库系统版本,分别为:DB2 8.1、ORACLE 9.2、INFORMIX 9.3、SYBASE 12.5。特定数据库系统的一些配置参数,可能和你所使用系统版本存在细微差异。读者在阅读时,请注意这一点。由于作者水平有限,书中难免存在欠妥之处,欢送专家和广阔读者批评、指正。需要特别说明的是,书中对常用数据库系统的一些评论,只是基于个人的分析和考虑,并没有进行充分的测试和验证,大家不可
22、以此为据。如果由此而引起任何法律纠纷,作者概不负责。第一章 数据库系统的根本概念数据库管理系统Database Management System,DBMS很重要。对它的任何操作失误和管理不当,都可能引起灾难性的后果。然而数据库系统并不复杂,从CPU、内存、I/O的角度来看,它不外乎就是使用这些资源,为用户提供数据存储和维护机制,方便用户对数据的访问和管理。用户对数据库系统的配置,也就是让它合理地使用这些资源,加快数据的处理速度。本章简单介绍了数据库技术的开展历程、数据库系统的根本概念,就实例、并发、并行、裸设备等相关系统概念进行解释和说明。然后,本章着重介绍常用数据库系统的体系结构以及它们的
23、特点,并在最后为数据库系统的性能调整提供可行的方法指导。1.1 数据库系统的开展概述 数据库管理系统已经成为数据存储和管理的重要手段,没有使用数据库的应用系统是不可想象的。它是随着人们对现实世界认知的深入,伴随着计算机技术的进步而出现的,并将在此根底上进一步开展和壮大。1.1.1 数据管理开展的三个阶段 数据是反映客观世界的事实,可以输入到计算机中进行存储和管理。人们可以对数据进行加工处理,从而获取有用的信息。对数据的存储和管理,主要是围绕提高数据独立性、降低数据冗余度、提高数据共享性、提高数据的平安和完整性等方面来进行改良,让使用者能够有效地管理和使用数据资源。数据的存储和管理经历了三个阶段
24、:人工管理阶段、文件系统阶段和数据库系统阶段。在计算机出现的初期,用户自己完全负责数据的组织、存储结构、存储方法、输入输出等数据管理工作;每个用户使用自己的数据,数据完全面向特定的应用程序;程序和数据完全结合在一块,程序随着数据结构的改变而改变。这种数据的存储和管理方法,导致了数据和程序紧密结合、数据的利用率不高、数据不易管理、数据一致性很难维护等问题。到了文件系统阶段,由文件系统提供数据的统一访问控制,负责数据存储、读写等管理工作,向应用程序提供操作接口。但是文件系统只是解脱了程序员对物理设备存取的负担,它并不理解数据的语义,只负责存储;数据的语义信息只能由程序来解释,也就是说,数据收集以后
25、怎么组织,以及数据取出来之后按什么含义解释,只有全权管理它的程序知道;一个应用程序假设想共享另一个应用程序生成的数据,必须同另一个应用程序沟通,了解数据的语义与组织方式,因而文件系统的出现并没有改变数据与程序紧密结合的状况,数据逻辑结构改变那么必须修改应用程序,数据的独立性和共享性仍旧很差。为了进一步提高数据的物理和逻辑独立性,减少数据的冗余,提高数据的利用率,于是数据库管理系统应运而生。数据库系统采用了三级模式结构外模式、模式和内模式,外模式是数据库用户看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。模式是数据库中全体数据的逻辑结构和特征
26、的描述,是所有用户的公共数据视图。内模式是数据物理结构和存储结构的描述,是数据在数据库内部的表示方式。对于每一个外模式,在数据库系统中定义一个外模式模式映象,即外模式与模式之间的对应关系。当模式改变时,由数据库管理员对各个外模式模式的映象作相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻辑独立性。模式和内模式在数据库系统中是唯一的,它们之间的映象定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变了,由数据库管理员对模式内模式映象作相应改变,可以使模式保持不变,从而保证了数据的物理独立性。数据库技术的使用,使得我们修改应用程序而可以不更改后台数据,更改数据
27、结构而不影响应用程序,极大地提高了应用系统的灵活性。同时数据库中的数据可以为许多用户和应用程序所访问,数据的冗余度降低了,利用率提高了。然而数据库技术远非完美,它还不能将数据和应用程序彻底地分割开来。我们在设计应用系统时,所能做的是根据这些原那么,尽可能地降低数据和应用程序的耦合度,而这也已经成为应用系统设计好坏的一个衡量标准。1.1.2 数据库技术开展的三个阶段 为了把现实世界中的具体事物转换成计算机能够处理的数据,必须要使用某种手段来抽象和描述这些数据,这就是数据模型。数据模型是对现实世界中各种事物或者实体特征的数字化模拟和抽象,用以表示现实世界中的实体和实体之间的联系,是之能够存放到计算
28、机中,并通过计算机软件进行处理。在数据库技术的开展过程中,按照数据模型和时间的先后,可以把数据库技术的开展和演化划分为以下几类:层次数据库系统、网状数据库系统、关系数据库系统。在现实世界中,许多实体之间的联系呈现一种自然的层次关系,如:行政机构、家族关系等。因此层次数据模型可以自然地表达数据间具有层次规律的分类关系、概括关系、局部关系等。层次数据库系统使用层次数据模型,出现于上个世纪六十年代末期,以IBM公司的IMS系统为代表。由于层次数据模型只支持实体之间的1 : 1、1 : N联系,实体之间的M : N联系,需要数据记录的多处存放,数据冗余量大。另外,对任何数据记录的访问,都需要从根结点开
29、始进行扫描,处理时间长。这些缺点使层次数据库系统没有得到广泛使用。现实世界中事物之间的联系大多数是网状的,因此网状数据模型更具有普遍性,层次模型可以看作是网状模型的一个特例。网状数据库系统使用网状数据模型,出现于上个世纪七十年代早期,以美国CODASYL组织的DBTG标准为根底。网状数据模型能直接地描述现实世界,但由于结构复杂,数据库设计和应用程序之间的实现比拟困难,从而限制了它的进一步开展。关系数据库系统使用关系数据模型,从上个世纪八十年代以来,得到长足开展,至今仍长盛不衰。我们常见的数据库系统,如:DB2、ORACLE、INFORMIX、SYBASE等,都是关系数据库系统。关系数据模型使用
30、关系表表示实体和实体之间的联系。在关系数据模型中,每个实体、实体之间的联系都用一个关系表表示,关系表从结构上看就是一张二维表格,表中的每条记录都表示一个实体对象或者一个联系。在关系表中,通过外部关键字直接表达实体之间一对一、一对多、多对多的联系,不需要任何转换或者中间环节。和层次数据模型、网状数据模型相比,关系数据模型面向记录集合,有较高的数据独立性,概念单一、结构简单,可以直接处理多对多的联系,因此得到了广泛的应用。1.2 数据库系统根本概念本书基于关系数据库系统,主要讲解常用系统:DB2、ORACLE、INFORMIX、SYBASE的管理和配置。在开始进一步的讲解之前,我们有必要对一些相关
31、概念进行阐述,以加深我们对数据库系统的理解。1.2.1 什么是数据库管理系统 通俗地来说,数据库就是存放数据的仓库,用来存放人们日常生活、工作中各种各样的数据。对这些数据,人们希望在需要时可以快速、方便地获取。由于这种要求,数据不能杂乱无章、毫无目的的存放在数据库中,而应当被编码、分类、有规划地存放。有关数据的定义和管理信息也放置在数据库中,被称为数据字典。日常生活中和数据库很类似的一个例子是图书馆。图书馆可以看作是图书的仓库,在这里图书代替了数据。图书被分类、编码,有规那么地摆放在一排排的书架上。为了便于图书的查找,需要按照作者、出版社、日期等信息建立图书的索引。数据库既然是数据的仓库,我们
32、就需要一套软件对它进行管理。该软件应当至少具备以下的功能:1数据定义:定义数据库中存放什么样的数据、数据采用什么样的格式。2数据维护:在定义了数据格式之后,可以向数据库中插入数据,也可以删除或者更新已插入的数据。3数据查询:用户可以根据需要,随时从数据库中获取数据。为了数据的平安,该软件还应当能够定义用户,并给不同的用户授权;为了保证数据不被破坏,还应当能够对数据进行备份和恢复等等。基于以上的讨论,我们可以将数据库管理系统看作由一个互相关联的数据集合和一组用以访问这些数据的程序组成,这个数据的集合通常被称作数据库。1.2.2 数据库系统与操作系统的关系 操作系统是最贴近硬件的系统软件,我们可以
33、将它的管理工作划分为以下五大功能: 1进程管理。又可以称为处理机管理。实质上是对处理机执行“时间的管理,即如何将CPU真正合理地分配给每个任务。在多道程序环境下,现代操作系统中处理机的分配和运行都是以“进程为根本单位,因而对处理机的管理可归结为对进程的管理。2内存管理。任何程序必须调入内存之后才能运行。在多道程序设计中,对内存的管理主要涉及内存空间的充分利用技术,以及多道、多重处理和内存的分配、保护、扩充等。3存储管理。就是以不同类型的文件、目录和文件夹的形式储存数据,方便用户检索,实现用户之间的数据共享,同时又要保证数据的平安和可靠。4作业管理。用户可以以交互方式、批处理方式向计算机提交自己
34、的处理请求,作业管理负责这些请求的调度和管理。5设备管理。其实质是对硬件设备的管理。现在的计算机配备了许多外部设备,通过设备管理,用户无需了解设备的细节,要使用什么设备,只要向操作系统发命令就可以了。数据库系统运行在操作系统平台之上。除设备管理之外,数据库系统具有自己的进程管理、内存管理、存储管理、作业管理。这些功能的实现都是基于底层操作系统的功能调用,和操作系统的各功能模块密切相关。所不同的是,它们着重于对数据库中数据的管理和维护,以方便用户访问和操作这些数据。数据库系统和操作系统密切相关。操作系统的任何硬件、软件失败,都可能影响数据库系统的正常运行;而发生在数据库系统中的处理故障,也会在操
35、作系统中有所表达。因此,对数据库系统的管理和维护,离不开操作系统的管理和维护。1.2.3 数据库系统的体系结构 数据库系统尽管重要,但并不复杂,用户不要对它心存畏惧。从CPU、内存、I/O的角度来看,数据库系统就是使用这些资源,为用户提供数据存储和维护机制,方便用户对数据的访问和管理。从CPU资源的使用来看,数据库系统提供了许多功能模块。这些功能模块可以让用户定义或者更改自己的数据格式;可以接收用户请求,决定请求的处理方式,以及在请求处理完成后将结果返回给用户;可以实现数据的备份和恢复等等。这些功能模块可以进程、也可以线程的方式实现,不同数据库系统会选用不同的方式。所有这些功能模块需要协同处理
36、,共同完成对用户数据的管理工作。这就是数据库系统的进程管理,我们将在第2章中讲述。从内存资源的使用来看,数据库系统需要一块内存空间,存放需要处理的用户数据;为了获取用户数据格式以及判断用户是否有执行权限,需要一块内存空间存放数据字典信息;为了防止数据更新的丧失,处理前系统要给数据加锁,需要一块内存空间存放锁的信息,等等。所有这些内存空间,为系统对数据的处理提供了一个工作场所。除此之外,各功能模块的运行也需要堆栈、存放执行代码等的内存空间。不同数据库系统对内存的使用也各不相同,但大体上存在相似的结构。对所有这些内存空间的管理,就是数据库系统的内存管理,我们将在第3章讲述。从I/O资源的使用来看,
37、数据库系统对用户数据的管理和维护,需要不断地将数据读入内存进行处理、在更新完成后写入磁盘。数据在磁盘上按照一定的格式存放,用户需要决定数据的组织和存放方式,以及确定何时对数据进行整理。这是数据库系统存储管理需要完成的工作,我们将在第4章中讲述。因此,从数据库系统对CPU、内存、I/O系统资源的使用来看,我们可以将数据库系统的体系结构划分为:进程管理、内存管理、存储管理。本书也就是从这个角度来看待数据库系统,让用户能够从整体上快速、深入地掌握数据库系统。有关常用数据库系统的体系结构,可以参看第1.4一节。由于数据库系统对CPU、内存、I/O系统资源的使用,用户对它的管理和配置也就是让这些资源相互
38、协调、合理运用,不能在某一个资源上面存在瓶颈。这也是数据库系统性能调整的主要目标,有关数据库系统性能调整,可以参看第1.6一节。1.3 数据库系统相关概念1.3.1 实例 数据库系统由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这个概念只是对数据库系统作了一个静态的、简单的描述。如果要对具体的、实际运行的数据库系统进行说明,就需要一个新的概念:实例。1. 什么是实例许多资料都曾讲到实例,但都没有给出明确的解释。其实,我们可以将实例看作是数据库系统的一个具体化,就是用户根据自己的要求,对系统进行裁剪和配置,创立数据库使用的存储空间,从而建立适合自己需要的一个数据库系统运行环境。我们
39、知道,在计算机上安装了数据库系统软件之后,还不能够使用。用户还需要完成以下的工作:1选择并分配存放数据的磁盘空间。2配置运行环境,如:选择语言、字符集、可启动的进程数、可使用的内存空间、使用的网络协议及相关配置,等等。在以上操作正确完成之后,数据库系统才可以启动。而该过程的处理,就是用户根据自身要求,创立一个具体的数据库系统运行环境,也就是创立一个实例。由于不同用户、不同应用程序需要访问和管理不同的数据,其运行环境也不尽相同。因此在同一台计算机上,其他用户也可以根据自身需要,创立另外的实例。这些实例和实例之间互不影响。一个系统实例包括:对运行环境进行设置的各种配置信息、存放数据的磁盘空间等。在
40、实例启动之后,根据配置信息启动的进程、分配的内存空间也属于这个实例。2. 实例和数据库系统的关系实例是数据库系统的具体化。它和数据库系统之间的关系,就如同面向对象技术中的对象和类。对象和类是面向对象技术中的两个最根本的概念。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规那么、方案或事件。而具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象。具体到我们的现实生活,人可以看作一个类,具有五官、四肢等特征,是从世界上所有人抽象出来的一个概念;而对于特定的一个人,如:张三,属于人这个类中的一个对象,具有人这
41、个类的所有特征,但同时张三这个人已经被具体化,拥有区别于人这个类中其他对象的特征。我们提到张三,就不会想到李四。同样的道理,数据库系统可以看作一个类,是一个抽象的概念;而实例那么是数据库系统这个类被具体化的对象,一个实例和另一个实例之间互相区别。3. 实例和数据库的关系实例是具体化了的数据库系统,包含了存放数据的数据库。在实例和数据库之间,可以建立两种关系,见图1-1和图1-2。1单实例多数据库在一个实例下,可以建立多个数据库,这些数据库只能属于这个实例。不同的数据库存放不同的用户数据,共享同一个实例的运行环境。2多实例单数据库一个实例只能管理一个数据库,而一个数据库可以有多个运行环境,即多个
42、实例。用户可以通过多个运行环境,访问同一个数据库中的数据。每一个实例可以单独运行在一台机器上。由于I/O操作往往是系统的瓶颈,这种由多个节点访问相同数据的做法,自然会降低系统的性能。1.3.2 进程和线程 进程是一个具有独立功能的程序在计算机上动态执行的过程,简单地说,进程就是指程序的一次执行过程。线程属于进程,是进程中执行运算的最小单位,一个进程的所有线程都共享该进程的内存地址空间。现代计算机系统采用多道程序设计,系统中同时存在多个进程,执行多个任务,从而实现资源共享,提高CPU利用率。一个进程在等待资源或者其运行时间到达设定的时间片之后,就放弃资源进行切换,使其它进程能够获取资源而执行。对
43、放弃资源、停止执行的进程,系统需要保存它的当前运行环境,以使该进程在重新获取资源后,能够从这一点继续往下执行。由于进程之间的切换需要较多的系统资源,而且进程之间的通讯效率也受到限制,因此为了减少系统开销、提高通信效率,在计算机系统中引入了线程的概念。线程使用进程的资源,不会从系统中获取新的资源,因此线程之间的切换很快。另外,同一进程中的各个线程可以通过直接读取数据段来进行通讯。进程和线程之间,存在以下的关系:1一个线程只能属于一个进程,而一个进程可以包含多个线程。2系统将资源分配给进程,不同的进程有不同的地址空间。同一个进程的所有线程共享该进程的所有资源。3线程在运行过程中,需要协作同步。同一
44、个进程的线程可通过直接读写数据段进行通信,不同进程的线程之间要利用消息通讯的方法实现同步。1.3.3 并发和并行 并发concurrent和并行parallel这两个概念,在数据库系统的资料中经常出现,然而有关它们的定义和区别却没有明确的说法。这里,我们根据这两个概念在资料中的使用,对它们的不同做一个说明。并发是指多个任务的同时执行,任务与任务之间没有联系。由于数据库系统要同时为许多用户提供效劳,每个用户都可以发出自己的访问请求,一个请求就是一个任务。在一个时间点,数据库系统可能要同时处理多个任务。因此,数据库系统一定要具备并发处理能力。并行是指将一个任务划分为多个子任务,这些子任务同时执行。
45、在所有子任务处理完成后,将它们的结果进行合并,就得到该任务的最终处理结果。在数据库系统中,如果要执行一个大的数据查询,为了提高速度、降低响应时间,用户可以通过系统配置或者在命令中,要求对该大数据量查询进行并行处理,将该查询划分成多个子查询。这些子查询同时执行,最后系统将所有子查询的处理结果进行合并,作为该查询处理的最终结果。现有的大型数据库系统都支持并行处理。需要说明的是,并发和并行与数据库系统采用多进程还是多线程体系结构无关。对采用多进程结构的数据库系统,所有的任务、子任务通过进程来处理;而对采用多线程结构的数据库系统,这些工作是由线程来完成。数据库系统的并发控制,涉及到任务的调度、数据的一
46、致性及可靠性等,我们将在第6章进行介绍。而数据库系统的并行处理,主要涉及任务的处理速度、系统性能等方面,本书将不做讨论。1.3.4 表空间和裸设备 空间是一块逻辑磁盘空间,用来存放数据库中的数据,可以建立在裸设备、操作系统文件、目录只能在DB2数据库系统中使用上。在创立数据库对象时,我们可以指定表空间,使对象中的数据只能存储在这个表空间中,从而可以有效地控制数据的存放位置。如果不指定表空间,系统就自动为它设定一个表空间,该表空间一般就是缺省表空间。有关表空间的进一步描述,可以参看第4章。裸设备是一块物理磁盘空间,用户不能直接访问。对它的数据读写,需要通过操作系统底层调用。和操作系统文件相比,对
47、裸设备的管理和维护不是很方便。然而也正是由于这一点,使用裸设备会更加平安、可靠,数据库系统不会轻易遭到破坏。在WINDOWS平台上,裸设备就是没有被格式化的磁盘分区。如果表空间使用操作系统文件创立,在读取数据时,数据库系统要将数据读取请求交给操作系统,由操作系统将文件中的数据首先读入自己的内存缓冲区,然后再交给数据库系统处理,也就是从操作系统的内存缓冲区移动到数据库系统使用的内存缓冲区。在写数据到磁盘时,数据库系统首先将数据交给操作系统,也即从数据库系统的内存缓冲区移动到操作系统的内存缓冲区,最后由操作系统完成磁盘的写操作。如果表空间建立在裸设备上,数据库系统对磁盘中数据的读取,就绕过操作系统
48、,使用操作系统底层调用,直接存取磁盘。和操作系统文件相比,对裸设备的数据读取不需要操作系统的内存数据缓冲,因此加快了I/O处理速度。1.4 常用数据库系统的体系结构 DB2、ORACLE、INFORMIX、SYBASE是我们常用的关系数据库系统。在WINDOWS平台下,它们都采用多线程体系结构,所有的功能模块通过线程来实现的。在UNIX平台下,它们的体系结构会有所不同。本书基于UNIX平台,我们下面就各系统在UNIX平台上的体系结构进行讲解。1.4.1 DB2系统 DB2数据库系统使用单实例多数据库模式,采用多进程体系结构,所有的功能模块使用进程来实现的。整个系统的体系结构见图1-3图中只画出
49、整个实例的一个数据库。一个DB2系统实例需要启动的进程包括:1代理、监听进程等,这些进程在数据库管理器运行时启动;2异步预取、页去除、检查点、日志写进程等,这些进程在数据库运行时启动。需要为实例分配的内存空间包括:数据库管理器共享内存在数据库管理器运行时分配、进程专用内存在代理、监听、异步预取、页去除等进程启动时分配、数据库全局内存在数据库运行时分配。一个数据库的存储结构包括:配置文件、历史文件、容器、日志文件等,这些存储空间在数据库创立时建立,可以在运行过程中给数据库增加容器。在一个DB2系统的实例中,可以创立多个数据库。数据库和数据库之间互相隔离,互不影响,这主要表达在:1每个数据库有单独
50、的进程,如:异步预取、页去除等,执行本数据库的相关操作。2每个数据库有单独的内存结构数据库全局内存,存放本数据库运行过程中要处理的数据及控制信息。3每个数据库单独保存和维护自己的数据字典、用户数据,所有的存储资源,如:表空间、容器等,不能在多个数据库之间共享。4每个数据库有单独的配置文件,可以根据需要对本数据库进行设置,使本数据库具有不同于其它数据库的运行特性。5每个数据库有单独的日志文件,存放本数据库中事务所产生的所有日志信息。由于以上原因,DB2系统还存在一个数据库管理器,用来管理和监控所有数据库及整个实例的运行。在每一次启动数据库系统实例时,首先要启动数据库管理器。数据库管理器的启动,将
51、获取以下资源:1启动监听、代理、监控进程等。监听进程接受客户端的访问请求,然后交给代理进程处理;监控进程监测所有数据库的运行状况并记录相关信息。2获取内存空间。为要启动的进程分配专用内存空间,创立数据库管理器使用的共享内存。在数据库管理器正常启动后,可以使用以下两种方式启动数据库:1手工启动。使用命令,激活要启动的数据库。在数据库不再被使用后,仍旧需要使用命令关闭数据库。2自动启动。在第一次接收到用户对数据库的连接请求后,系统就自动激活对应的数据库。在数据库的所有连接都断开之后,系统就自动关闭数据库。在数据库的启动过程中,需要为数据库启动相关进程、分配共享内存空间,然后将相关数据字典信息读入内
52、存。由于这些原因,为防止第一次访问数据库时的较慢响应,可以在数据库管理器正常启动后,手工启动数据库。整个DB2系统的配置参数可以在数据库管理器、数据库两个级别上设置,数据库管理器的配置在整个实例上起作用。数据库中用来存放数据的表空间,建立在容器上,容器可以是目录、操作系统文件、裸设备。此外,DB2系统还有一个管理效劳器,用来方便客户端管理软件对数据库效劳器的访问,运行定时执行的程序脚本。该DB2系统部件是可选的,我们这里不再深入讲述。1.4.2 ORACLE系统 在有些ORACLE系统资料中,只是将启动的进程、分配的内存空间合称为实例,这种说法应该不是很确切。ORACLE系统实例也是数据库系统
53、的具体化,是用户根据自身需要建立的一个运行环境,并通过这个运行环境来管理和维护数据库中的数据。在这一点上,ORACLE系统的实例和其它数据库系统的实例完全一样。仅仅所不同的是,在并行运行环境下,多个ORACLE系统实例可以同时管理同一个数据库中的数据。因此,除了启动的进程、分配的内存空间之外,我们说ORACLE系统实例还包括设置运行环境的各种配置信息、存放数据的数据库等,只不过这个数据库被共享使用,可以归属到多个实例中去。ORACLE数据库系统使用多实例单数据库模式,访问和管理同一个数据库的不同实例可以运行在不同的节点计算机上。系统采用多进程体系结构,所有的功能模块是使用进程来实现的。整个系统
54、的体系结构见图1-4图中只画出数据库的一个实例。一个ORACLE系统实例需要启动的进程包括:进程监控进程PMON、系统监控进程SMON、数据库书写器进程DBWR、日志书写器进程LGWR、检查点进程等,需要为实例分配的内存空间包括:程序全局区、系统全局区共享池、缓冲区高速缓存、重做日志缓冲区等。一个数据库的存储结构包括:参数文件、密码文件、数据文件、日志文件等,这些存储空间在数据库创立时建立,可以在运行过程中给数据库增加数据文件。ORACLE系统实例的启动,可以分为以下两个步骤:1启动进程、分配内存空间。在这个启动过程中,系统根据配置信息,启动实例需要的各种进程,如:进程监控进程等;分配实例需要
55、的进程专用内存程序全局区、共享内存系统全局区。2翻开数据库。在这个过程中,系统会检查数据库的控制信息、数据的一致性。只有所有状态都正常,数据库才能被翻开,用户才能进行数据的访问。数据库中用来存放数据的表空间,建立在数据文件上,数据文件可以是操作系统文件、裸设备。1.4.3 INFORMIX系统 INFORMIX数据库系统使用单实例多数据库模式,采用多进程、多线程系统结构。由于进程相对于数据库系统就好比CPU相对于计算机一样,因此在INFORMIX系统中,进程被称为虚拟处理器virtual processor,VP。之所以称为虚拟处理器,说明它并不是物理上的处理器。整个系统的体系结构见图1-5。
56、一个INFORMIX系统实例需要启动的进程包括:CPU、AIO、LIO、PIO、ADM、SCO等,需要为实例分配的内存空间包括:常驻局部缓冲池、锁表、逻辑日志缓冲区、物理日志缓冲区、虚拟局部字典高速缓冲、线程会话信息、SQL语句缓冲区、虚拟扩展局部、通讯局部、VP专用局部。数据库的存储结构包括:配置文件、大块、归档日志文件等,这些存储空间在实例创立时建立,可以在运行过程中给数据库增加大块。在INFORMIX系统的一个实例中,存在多个数据库,分为系统数据库和用户数据库。系统数据库在实例初始化时自动创立,存放实例级别上的监控信息、数据字典信息,用户能够访问而不能修改这些数据。一个实例需要创立的系统
57、数据库有:sysmaster和sysutils。用户数据库由用户根据需要创立,存放用户数据以及和该数据库有关的数据字典信息。INFORMIX系统实例的数据库和数据库之间,关系比拟紧密,这主要表达在:1共用实例进程、线程模块。实例的进程和线程可以访问和处理所有数据库中的数据,用户对数据库的访问就通过这些进程和线程完成。实例的进程和线程在实例运行时被启动。2共用系统内存空间。用户要处理数据库中的数据,首先要将它们读入内存,存放在为实例分配的系统内存空间中。实例的系统内存空间为所有数据库所使用,在实例运行时被分配。3共用存储空间。实例中用来存放数据的表空间,可以为所有数据库使用。一个数据库可以跨越多
58、个表空间,而一个表空间也可以存放多个数据库的数据。4共用数据库日志文件。在实例中被处理事务所产生的所有日志信息,存放在共同的日志文件中,这些事务所处理数据可以来自任何数据库。在启动实例时,系统根据配置信息,启动实例需要的各种进程如:CPU、AIO等,分配共享内存空间如:常驻局部、虚拟局部等,并同时翻开所有数据库。另外,实例的表空间,建立在大块chunk上,大块可以是操作系统文件、裸设备。1.4.4 SYBASE系统 SYBASE数据库系统使用单实例多数据库模式,系统采用多线程体系结构,所有的功能模块都是使用线程来实现的,启动这些线程的进程被称为引擎engine。整个系统的体系结构见图1-6。一
59、个SYBASE系统实例需要启动的进程就是引擎,需要为实例分配的共享内存空间包括:内核和效劳器结构堆栈缓冲、控制信息缓冲、数据字典高速缓存、锁表高速缓存、数据高速缓存、过程高速缓存、可执行代码区。数据库的存储结构包括:配置文件、设备、归档日志文件等,这些存储空间在数据库创立时建立,可以在运行过程中给数据库增加设备。在SYBASE系统的一个实例中,存在多个数据库,分为系统数据库和用户数据库。用户数据库由用户根据需要创立,存放用户数据以及和该数据库有关的数据字典信息。系统数据库在实例初始化时自动创立,包括:master、sybsystemprocs、model、tempdb等,不同的系统数据库有不同
60、的作用。1master数据库存放所有数据库以及实例的管理和控制信息,在遭到破坏后整个实例就无法启动。2sybsystemprocs存放SYBASE系统提供的执行过程,用户通过对这些过程的执行,来管理数据库系统。3model数据库是一个数据库模板,所有新建数据库均按照这个模板创立。可以对model数据库进行设置,使所有新建数据库自动获得某些属性,这样就可以防止对单个数据库的设置操作。4tempdb数据库是系统运行过程中,临时表、临时工作区的可用磁盘空间。一些大的查询、更新处理需要这些空间存放处理过程中产生的中间结果。其它的系统数据库,如:sybsecurity、sybsystemdb、sybdi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村自建房承包合同版
- 2024年度知识产权许可合同:专利技术使用权授权2篇
- 2024年度工程居间与施工监理合同3篇
- 锅炉维护技术服务合同范本
- 二零二四年度广告设计与媒体投放服务合同4篇
- 河北农业大学现代科技学院《知识产权法》2023-2024学年第一学期期末试卷
- 煤电产业行业研究报告:容量保障机制托底下的火电投资
- 《如何进行商务谈判》课件
- 阳台栏杆制作安装合同范本
- 新生儿低血糖应急预案
- 责任书冷库安全责任书
- 生活方式疾病
- 三方委托收款开票合同范本
- 燃气公司财务的管理制度
- 山西省灵丘县山西省刁泉银铜矿业有限公司银、铜矿资源开发利用、地质环境保护与土地复垦方案附件
- 2021年全国普通高等学校体育单招真题英语(含答案解析)
- 物业项目全生命周期个关键节点清单
- 公司装修许可证
- CQI-12涂装系统评审
- 信用管理师(三级)理论考试题库(300题)
- 弯沉值计算表格-你懂得
评论
0/150
提交评论