`

Oracle数据库中段管理的四个技巧

阅读更多

在Oracle数据库中,段往往被用来存储特定逻辑对象的所有数据。如当建立数据库表或者索引时,Oracle就会为这些对象分配存储空间,以存放他们所需要的信息。段是由一个或者多个区组成的。不要看段是Oracle数据库中一个不起眼的角色,其实,在其中,仍然隐藏着许多不为人知的管理技巧。若数据库管理员能够掌握这些内容,或许,其工作会变得轻松许多。

技巧一:对大表执行分区段

表分区段用于存储分区表中某个分区的数据。如把某一个表分为几个区,每个区就对应一个表分区段。这么设置是可行的。因为根据段管理规则,在一个表空间上可以包含一个或者多个段,但是,一个段只能够存放在一个表空间上。

在实际工作中,我们经常会碰到这种情况。如在一个大型零售企业的信息化管理系统中,一张销售表的年数据总量可能会达到几亿条,其数据总容量可能会有近十个G。如果平均分配到每个季度的话,则就有2.5G。此时,如果不对这张销售表进行分区分段管理的话,则这一年的销售记录都会存储在一张表中。此时,如果需要做年度分析的话,那么数据库的性能将会受到很大的影响。如现在用户想知道六、七月份空调的销量变化情况,此时数据库就需要扫描整个数据表中近10G的纪录。这需要用户等待比较长的时间。

但是,此时若数据库管理员在数据库设计的时候,就能够预计到这种情况,对销售表进行分区分段管理。即把这张销售表分区段管理,也就是说,把销售表分为四个分区段,每个季度一个区段。如此的话,若要统计六、七月份的空调销售情况,则只需要查询5G的数据即可,其数据查询量将近减少了一半。显然,在实际工作中,如果对大表进行分区段管理,则可以大大降低I/O次数,并有效提高数据库查询性能。若销售量大的话,甚至可以把销售表分为十二个区段,一个月对应一个区段。

所以,通过使用分区选项,采用表区段管理大表,可以将一张大表的数据部署到多个不同的分区段中。通过这种管理方式,可以降低I/O(输入输出)读取次数,最终提高I/O性能。这是数据库优化专家在提高数据库性能时,经常用到的一种手段。特别是在零售行业的信息化管理系统中,经常被用到。

技巧二:合理利用索引组织表段

在Oracle数据库中,跟索引相关的表段主要有三个,分别为索引段、索引分区段与索引组织表段。

索引段主要用来存储索引数据。当数据库管理员建立索引时,数据库系统就会自动为索引建立相应的索引段,其名字跟索引的名称相同。在对索引段进行管理时,有一个基本的原则,即一个索引段只能够存放在一个表空间中。

索引分区段主要用来存储分区索引某个分区的数据。他跟笔者上面所说的表分区段类似。每个分区对应一个索引分区段。通过使用分区选项可以将大索引的数据部署到几个不同的分区段中,从而达到降低输入输出次数、提高数据库性能的目的。不过其在管理中,比表分区段多了一个限制条件,即索引分区只能够建立在分区表上,而不能够建立在普通表上。其他的管理跟分区表段类似,就不再重复阐述了。

索引组织表是以B数结构来组织表数据的,其对应的段就是索引组织表段。其管理方式跟索引段类似。当数据库管理员建立索引时,就会自动创建这个段,用来保存相关的数据。

现在摆在数据库管理员面前,就有一个难题。在什么时候用索引段,什么时候用索引组织表段,又在什么时候采用索引分区段呢?为此,笔者给出一个建议,供大家参考。

通常情况下,如果表中的数据经常需要引用主键列莱检索的话,则可以考虑建立索引组织表,即通过索引组织段来管理。因为如果建立索引组织表段,则表和表主键索引的数据会存放在索引段中。从而提高查询的速度。而在普通表中,表与索引数据分别存放在表段与索引段中。这就是两者最本质的区别。另外需要提醒的是,如果数据库管理员建立索引组织表时,数据库开发人员必须要定义主键列。否则的话,就会以失败告终。

而如果索引比较大的话,则可以将大索引的数据部署道几个不同的分去段中,这可以有效提高数据库的性能。

技巧三:减少临时段的使用

临时段主要用来存储排序等操作所产生的临时数据。如现在某张数据表中,有A、C、B、F、E、D等记录。此时,若用Order By子句对其进行排序,数据库系统就会返回A、B、C、D、E、F数据。这些被重新排序过的数据,就叫做临时数据。通常情况下,这些临时数据会存放在两个地方,分别为PGA工作区与临时段中。默认情况下,这些临时数据会先存储在PAG工作区。如果因为临时数据比较大,PGA工作区已经满了的情况下,数据库会把剩下的临时数据存放到临时段中。

从理论上讲,无论是把数据存放在PGA工作区还是存储在临时段中,对于用户的最终结果没有影响。但是,如果从数据库性能方面考虑,则两者就有比较大的差异。

PGA工作区,又叫做程序全局区域,它是包含服务器进程的数据和控制信息的非共享内存区域。通常情况下,只要数据库服务器进程启动,则Oracle就会在内存中创建程序全局区域。在10G以后的版本中,Oracle数据库能够自动根据内存的使用情况来管理程序全局区域,而不用数据库管理员去手工的干预,从而使得PGA工作区的使用率更高。所以,一般来说,把临时数据存放在PGA工作区,其效率更高。

在实际工作中,数据库管理员应该尽量避免产生大量的临时数据,或者说,尽量不让临时数据超过PGA工作区所能够承受的最大容量。从而数据库不得不把临时数据存放到临时段中。

在实际工作中,很多Select语句都会产生临时数据。如在Select语句中,若加入Order By、Group By等子句,都会导致数据库对数据文件中的记录进行重新组织,从而产生大量的临时数据。为此,在应用程序设计中,就最好能够加入一些默认的查询限制条件,从而避免产生大量的临时数据。如在销售表查询的时候,如果用户没有输入具体的查询条件,则应用程序默认只查询近30天的销售记录,并按交易的日期或者产品进行排序。如果这些记录不能够满足用户的需求,再进行全部记录的查询。如此设计的话,就可以在一定程度上减少临时数据,减少临时段使用的频率。因为根据相关统计,用户在查询的时候,往往不会主动加入查询条件。而他们所需要的数据,往往都是最近一些的交易记录。为此,在应用程序设计过程中,加入一些默认的查询条件是非常有必要的。

技巧四:LOB段最好独立与普通表

在Oracle数据库中,除了可以存放一些字符、数字等基本数据类型外,还可以存储附件、图像、音频、视频文件等等。用来存放这些数据的段,就叫做LOB段。当数据库在创建这些特殊类型的列时,Oracle数据库系统就会自动为他们建立对应的LOB段。通常情况下,如果这些特殊数据类型的长度比4000字节要少,则这一列与其他普通列的数据会一起存放在表段中,如果数据长度超过了4000字节,则数据库就会被存放在LOB段中。

如果从数据库性能方面考虑,最好能够把这些特殊的数据类型跟其他数据类型分别存放。如现在有一张产品信息表,需要包含产品ID、产品名称、产品规格、产品图像等内容。那么,在数据库设计的时候,最好能够建立两张表,一张用来存储产品ID、产品名称、产品规格等信息;另一张表中存储产品ID、产品图像等信息。如此设计,主要是出于两个方面的考虑。

一是在实际工作中,并不是每次查看产品信息时,都需要产品图像的内容。如在生成订单时,没有必要再每次下单时都显示产品图片。因为对于一些老产品来说,这个产品图像早就印在用户脑海中。即使系统显示图片信息,用户也不会去关注。

二是这会影响数据库的查询性能。众所周知,数据库查询效率跟数据容量有很大的关系。数据容量越大,其查询的效率越低。而LOB段中存储的数据往往都是一些大容量的数据。所以在用户不需要的情况下,显示图像等信息,就会大大降低数据库的性能。再说,在一些应用程序中,由于网速或者刷新率等原因,其显示图像信息本身就要比显示文字信息来的慢。这就更加延长了用户的等待时间。

所以,LOB段的数据类型最好能够跟表中的其他字段分开来管理。在数据库设计的时候,就可以把他们存放在独立的表中,然后通过关键字进行关联。

分享到:
评论

相关推荐

    Oracle数据库精讲之数据库管理_ Oracle数据库管理视频

    2. 提供oracle数据库dba日常管理方法。 3. 掌握oracle数据库体系机构,为oracle优化奠定基础。 三、适合人群: 1.有意从事oracle 数据库工作,担任dba角色的人员; 2. Oracle数据库设计、开发和备份等管理人员; ...

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf

    《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle...

    Oracle 数据库管理教程

    Oracle数据库是一个大型、多层次、多用户的关系型数据库管理系统。为了深入学习和理解Oracle数据库管理,本教程将从数据库基础、Oracle服务器构成、用户管理、数据库启动与关闭、Oracle NET、数据字典、数据库存储...

    Oracle数据库管理员手册

    根据提供的文件信息,我们可以归纳出一系列关于Oracle 9i数据库管理员手册的重要知识点: ### 一、Oracle 9i 数据库简介 **Oracle 9i**是Oracle公司发布的一款企业级数据库管理系统,它提供了强大的数据存储与管理...

    Oracle数据库图书管理系统实验报告.pdf

    Oracle数据库图书管理系统实验报告.pdf

    oracle 数据库管理员指南

    总的来说,Oracle数据库管理员指南涵盖了Oracle数据库管理的各个方面,从基础操作到高级技巧,旨在帮助读者全面掌握数据库管理技能,提升工作效率,确保数据库系统的稳定、高效和安全。通过深入学习和实践,你将成为...

    Oracle数据库管理指南

    Oracle 9i是Oracle公司推出的数据库管理系统的一个重要版本,它提供了许多先进的特性和功能,以提高数据存储、管理和访问的效率。这份指南涵盖了从基础概念到高级操作的全方位知识,帮助数据库管理员(DBA)更好地...

    Oracle数据库大作业

    【Oracle数据库大作业】是一个关于Oracle数据库在教务管理系统中的应用项目,可能涵盖了数据库设计、实施、优化等...通过研究这个大作业,可以提升数据库管理和开发的技能,对教务管理系统的设计和实现有更深入的理解。

    ORACLE数据库DBA管理手册(电子书PDF).part1

    ORACLE数据库DBA管理手册,PDF版,有目录,高清晰,这是卷一。

    oracle数据库管理的一组经典文档

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其在企业级应用中占据着重要的地位。这一组经典文档涵盖了Oracle数据库管理的关键方面,包括密码管理、数据库恢复、数据对象分析、操作控制以及高可用性方案...

    Oracle数据库处理时间的技巧

    Oracle 数据库处理时间的技巧是数据库管理员和开发者需要掌握的重要技能。处理时间信息是监控、诊断和处理数据库性能问题的重要依据。但是,Oracle 数据库的时间计量单位是厘秒,可能会导致一些问题,例如一些操作...

    查看登录oracle数据库用户记录.docx

    Oracle 数据库是一个强大的关系型数据库管理系统,提供了强大的数据存储和管理功能。为了管理和监控数据库的访问情况,需要对登录 Oracle 数据库的用户记录进行跟踪和查看。本文将介绍如何查看登录 Oracle 数据库的...

    Oracle数据库系统应用与开发

    四、Oracle数据库管理 数据库管理员(DBA)的角色包括数据存储管理、性能优化、安全性和备份恢复策略。这需要熟悉Oracle企业管理器(EM)、SQL*Plus和其他管理工具,以及如何执行数据库备份、恢复和故障排查。 五、...

    Oracle 数据库管理员指南

    《Oracle 数据库管理员指南》是一本专为Oracle数据库管理员(DBA)设计的手册,旨在帮助读者深入理解和熟练掌握Oracle数据库的管理和维护。手册涵盖了Oracle数据库的基础知识、安装配置、性能优化、备份恢复、安全...

    Oracle数据库管理系统的体系结构

    本文档讲的是Oracle数据库管理系统的体系结构

    单位oracle数据库管理员培训资料

    这份“单位oracle数据库管理员培训资料”旨在帮助初学者和在职DBA深入理解Oracle 9i和10G版本的核心概念与操作技巧,以提升数据库管理能力。 首先,让我们详细探讨“2.oracle体系结构”。Oracle数据库的体系结构...

    易语言连接Oracle数据库

    在IT行业中,数据库管理系统(DBMS)是至关重要的组成部分,Oracle是其中的佼佼者,尤其在企业级应用中广泛使用。易语言,作为一种简洁易学的编程语言,提供了与Oracle数据库交互的能力,使得开发者可以方便地进行...

    Oracle数据库课程设计报告学生成绩管理系统.rar

    1. **Oracle数据库介绍**:Oracle数据库是一款关系型数据库管理系统(RDBMS),由甲骨文公司开发。它支持SQL标准,提供强大的数据存储、处理和管理功能,适用于大型企业级应用。 2. **数据库设计**:在构建成绩管理...

Global site tag (gtag.js) - Google Analytics