知识大全 合理选择盘区的管理方式提高数据库的性能

Posted 空间

篇首语:要让事情改变,行改变我自己,要让事情变得更好,先让自己变得更好。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 合理选择盘区的管理方式提高数据库的性能相关的知识,希望对你有一定的参考价值。

  在Oracle数据库中表空间是由段组成的 而段又是由盘区所组成的 通常情况下 在大型数据库中 合理选择盘区的管理方式 能够在很大程度上提高数据库的性能 并减轻数据库管理员的工作量 笔者对此事深有感触

  

  一 盘区的管理方式

  在Oracle数据库中盘区主要有两种管理模式 分别为目录盘区管理方式和局部盘区管理方式 目录盘区管理方式是一种比较老的管理模式 在这种管理模式下 数据库系统会跟踪数据目录中的自由和已用盘区 并利用递归的SQL语句来修改相关的内容 这种盘区管理模式效率比较低 现在很版本的 Oracle数据库系统虽然还支持这种管理模式 但是不建议使用 为此笔者认为 除非你现在使用的Oracle数据库系统比较旧 只支持目录盘区管理模式 否则的话 还是采用另外一种管理模式为好

  另外一种管理模式就叫做局部盘区管理模式 在这种工作模式下 主要通过位图来跟踪盘区 从而消除了递归SQL带来的效率低下的问题 在 Oracle G以后的数据库系统中 都支持这种管理模式 而且是Oracle数据库推荐使用的管理方式 而这种管理方式 又可以分为Uniform与 Autoallocate两种 其中 Uniform是告诉数据库系统 利用相同的大小来分配和再分配盘区 此时数据库系统在分配盘区的时候都是以固定大小来分配对 而Autoallocate选项则是告诉数据库 根据实际情况来增量增加盘区的大小 如在Windows操作系统上部署Oracle数据库系统 其操作系统的块大小一般为 KB 此时数据库系统在初始化的时候 会为刚开始的几个盘区(一般为 个盘区)分配比较小的空间 如可能只有 KB 当这个段占用的空间超过这个容量后数据库会再为其分配盘区 不过此时分配盘区的大小可能会 MB 如果还不够还需要增加盘区的话 那么这个盘区的大小可能会达到 MB甚至更多 这种分配方式有什么好处呢?显而易见 当段中所含的数据量越大 由于后续分配对盘区比较大 为此这个段所含总的盘区数量在逐渐减少 从而易于管理 对数据库性能的提升也有很大的帮助

  在选择采取哪种盘区管理方式时 笔者如下几个建议可供大家参考

  一是一般情况下 局部盘区管理方式是数据库管理员的首选 除非为了跟以前的数据库兼容或者现在采用的数据库系统不支持这个局部管理方式 否则的话 笔者强烈建议采用这种盘区管理方式

  二是在局部盘区管理方式下 有固定盘区与自动分配两种模式 此时该如何选择呢?一般来说 这要看段所在的表空间的类型 如果这个段所在的表空间是临时表空间的话 那么段下面的盘区采用Uniform为好 如果在数据库中 大表空间与小表空间共存的情况下 则采用自动分配模式比较好 因为自动分配的算法能够让小段持有小盘区 而让大段采用大盘区 以免数据库拥有太多的盘区 所以一般这种管理方式 常用在小段与大段共存的一种情况 这有助于提升数据库的性能

  三是需要注意一些限制的情况 如对于撤销表空间来说 其是不能够使用局部盘区管理模式下的Uniform管理方式 另外 虽然局部盘区管理方式与目录盘区管理方式可以利用系统提供的存储过程进行轻松的转换 但是其转换仍然受到一定的限制 如一般情况下 数据库管理员可以将一个持久表空间的管理模式从目录盘区管理方式转换为局部盘区管理方式 或者说进行相反的转换 但是 对于系统表空间和临时表空间来说比较特殊 他们只能够从低到高进行转换 而不能够从高到低进行转换 即指能够将系统表空间或者临时表空间从目录管理模式转换为局部盘区管理方式 而不能够进行相反的转换 所以对于系统表空间与临时表空间来说 在部署之前需要考虑清楚到底采用什么盘区管理方式 如果选择局部盘区管理方式的话 那么是没有后悔药可吃的 因为这两个表空间不能够进行相反的转换

  二 局部盘区管理方式下的段空间管理方法

  笔者之所以推荐使用局部盘区管理方式 除了以上所谈的原因外 还有一个重要的因素 在局部盘区管理方时下 在段空间的管理方式下也可以作文章 如果采取了局部盘区管理方式的话 数据库管理员可以选择是用手工或者自动的段空间管理方式

  手工管理段空间的方式 主要是为了向后兼容性而保留的 在这种管理方式下 需要用到三个新的名词 分别为自由块列表(可以用来存储数据的块) PCT_FREE(规定块中必须留有的剩余空间以便后续更新块中数据的需要) PCT_USED(规定到块中的使用量达到多少时就不能够再存储数据) 这个手工管理方式的主要思路就是盘区中的块不能够全部存储 而需要留有一定的剩余空间 如此的话 如果这个块中的记录需要更改 如某个内容从 个字符更新到 个字符 那么更新后的纪录就还保存在同一个块中(因为需要更新的块还有一定的剩余空间) 而不会分块保存 从而可以提高数据库的性能 在每个插入或者更新操作之后 数据库系统会比较这个数据块中的剩余自由空间与这个段的PCT_FREE设置 如果剩余空间已经不到这个值设置的时候 数据库系统就会把这个块从自由块列表中移除 如此的话 这个块以后就不能够再用来进行插入操作 虽然有可能剩余的空间还可以插入一条记录 一般情况下只能够进行更新的操作 然后再每次更新或者删除操作之后 数据库系统同样会检查块中的已用空间与PCT_USED参数进行比较 如果更新或者删除操作后 块的已用量低于这个参数设置的话 系统就会将这个块再放入到自由块列表中 后续系统可以对这个块进行插入 删除 更新等操作 这种是数据库系统默认的段空间管理方式 但是需要明白一点 默认的管理方式并不是说数据库推荐使用这种方式 相反 在Oracle G以后的数据库系统中 Oracle官方推荐的是实用自动管理段空间的方式 而这里之所以要把手工管理设置为默认 主要是为了兼容性的考虑

  如果采用自动管理方式的话 数据库系统使用位图而不是采用自由列来管理标识哪些数据块可用于插入操作 那些块不可用 也就是说 如果采用自动管理方式的话 以上设置的一些参数将会被忽略 不过起管理的思路跟上面的是相同的 在确定某个块是否可以被进行插入操作时 仍然会考虑到纪录的连续性 即会为块中数据的更新保留一定的空间 在自动管理方式下 数据库管理员不用费心的去考虑设置以上两个参数 数据库系统会根据实际情况自动进行调节 而这个控制的算法好比手工管理方式下复杂的多 所以采取字段管理段空间的方式 不仅可以减少数据库管理员的工作量 而且还可以提高数据库的性能

  如果数据库管理员需要采用自动管理方式 那么需要注意以下几点

  一是默认情况下 数据库采用的是手工管理段空间的方式 而不是自动管理段空间的方式 为此如果数据库管理员想使用自动管理段空间的模式时 必须要在建立表空间的时候进行明示 如可以通过如下的语句segment space management auto来告诉数据库系统采用自动管理表空间的方式 不过在采用这种段空间管理方式的时候 需要注意兼容性的问题

  二是需要注意 某些表空间是不能够使用这种自动管理段空间的方是 如默认情况下 自动段空间管理方式下 不能够用户临时表空间与系统表空间 可见临时表空间 系统表空 撤销表空间在Oracle数据库中有一些比较特殊的限制 笔者在这里做一个小的总结 对于撤销表空间来说 不能够使用局部盘区管理模式下的autoallocate管理方式 即不能够采用可变的盘区管理方式 而对于临时表空间与系统表空间来说 他们不能够使用自动管理段空间的工作模式 而且在盘区管理方式上 只能够从低级向高级管理方式进行转换 而不能够进行相反的转换 所以在设置盘区与段空间管理方式的时候 这些限制需要引起数据库管理员的重视

cha138/Article/program/Oracle/201311/17768

相关参考

知识大全 数据库完整性设计

  在充分了解数据库完整性各种控制机制的基础上确定要通过数据库完整性约束实现的业务规则然后依据整个系统的体系结构和性能要求合理选择各个业务规则的实现方式最后进行测试解决约束冲突和性能瓶颈这是数据库完整

怎样提高房屋的抗震性能

地震发生时人的生命是否受到威胁,很大程度上取决于房屋的破坏程度。而房屋破坏程度又是受地震强度和房屋抗震能力制约的。因此,提高房屋的抗震能力,对减少地震伤亡至关重要。处在地震区的农村家庭和拥有私有房产的

知识大全 通过缓存数据库结果提高PHP性能

通过缓存数据库结果提高PHP性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  众所周知缓存数据

知识大全 从外到内提高SQL Server数据库性能

从外到内提高SQLServer数据库性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何提高

知识大全 优化数据库大幅度提高Oracle的性能

优化数据库大幅度提高Oracle的性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  几个简单的

知识大全 优化数据库的三板斧 大幅提高Oracle性能

优化数据库的三板斧大幅提高Oracle性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  几个简

知识大全 sysdba权限的管理[1]

  一般对sysdba的管理有两种方式操作系统认证和密码文件认证  具体选择那一种认证方式取决于你是想在Oracle运行的机器上维护数据库还是在一台机器上管理分布于不同机器上的所有的Oracle数据库

知识大全 高级扫描提高数据库查询性能

  一高级扫描使用举例  通常情况下在数据查询的时候数据库会利用索引或者通过全表扫描来查找数据但是如果需要的数据在数据库中存储不连续或者需要查找的记录比较多时此时索引的效果就会大打折扣在这种情况下数据

加强冬季鱼塘管理提高养鱼效益

(一)并塘与销售1.池塘选择。越冬鱼塘应选择东西向,避风向阳,面积以3~5亩为宜,堤埂坚固,保水性能好,水深保持2米以上。电力配套、交通便利、进排水方便。2.并塘越冬。为便于鱼塘清淤修整和鱼种、成鱼上

加强冬季鱼塘管理提高养鱼效益

(一)并塘与销售1.池塘选择。越冬鱼塘应选择东西向,避风向阳,面积以3~5亩为宜,堤埂坚固,保水性能好,水深保持2米以上。电力配套、交通便利、进排水方便。2.并塘越冬。为便于鱼塘清淤修整和鱼种、成鱼上