CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

db_block_sizes设多大合适呢,急问

楼主zh430(一一)2005-06-06 17:46:50 在 Oracle / 基础和管理 提问

目前要建一个B/S模式的MIS系统,  
  dbms是ORACLE9i,  
  数据库存储大小据估算应该有90-100G,  
  表有150-200个,  
  记录数最多的表可能也不会超过1000万,  
  数据量大的原因是因为有一个存图像的表,  
  每个图像大约500K左右,  
  客户端有100个左右  
   
  象这样的系统,一般db_block_sizes设多大合适呢 问题点数:100、回复次数:5Top

1 楼LGQDUCKY(飘)回复于 2005-06-06 18:09:55 得分 40

安装数据库的时候,块已经是默认了(9I默认是8M),不建议去修改,  
   
  调整其他影响SGA的参数就行了Top

2 楼wangybyangxr(王永斌)回复于 2005-06-06 18:46:18 得分 0

操作系统的最小读写操作单元是操作系统的block,所以当创建一个Oracle数据库的时候我们应该讲数据库的block   size设置成为操作系统的block   size的整数倍,Oracle   block是Oracle数据库中读写操作的最小单元,Oracle9i之前的Oracle数据库版本中Oracle   block一旦在创建数据库的时候被设定后就没法再更改。为了在创建数据库之前确定一个合理的Oracle   block的大小,我们需要考虑一些因素,例如数据库本身的大小以及并发事务的数量等。使用一个合适的Oracle   block大小对于数据库的调优是非常重要的。  
          一个Oracle   block由三个部分组成,分别是数据块头、自由空间、实际数据三部份组成。   数据块头:主要包含有数据块地址的一些基本信息和段的类型,以及表和包含有数据的实际行的地址。   自由空间:是指可以为以后的更新和插入操作分配的空间,大小由PCTFREE和PCTUSED两个参数影响。   实际数据:是指在行内存储的实际数据。   当创建或者更改任何表和索引的时候,Oracle在空间控制方面使用两个存储参数:   PCTFREE:为将来更新已经存在的数据预留空间的百分比。   PCTUSED:用于为插入一新行数据的最小空间的百分比。这个值决定了块的可用状态。可用的块时可以执行插入的块,不可用状态的块只能执行删除和修改,可用状态的块被放在freelist中。   当表中一行的数据不能在一个数据block中放入的时候,这个时候就会发生两种情况,一种是行链接,另外一种就是行迁移了.  
          行链接产生在第一次插入数据的时候如果一个block不能存放一行记录的情况下。这种情况下,Oracle将使用链接一个或者多个在这个段中保留的block存储这一行记录,行链接比较容易发生在比较大的行上,例如行上有LONG、LONG   RAW、LOB等数据类型的字段,这种时候行链接是不可避免的会产生的。   当一行记录初始插入的时候事可以存储在一个block中的,由于更新操作导致行长增加了,而block的自由空间已经完全满了,这个时候就产生了行迁移。在这种情况下,Oracle将会迁移整行数据到一个新的block中(假设一个block中可以存储下整行数据),Oracle会保留被迁移行的原始指针指向新的存放行数据的block,这就意味着被迁移行的ROW   ID是不会改变的。   当发生了行迁移或者行链接,对这行数据操作的性能就会降低,因为Oracle必须要扫描更多的block来获得这行的信息。Top

3 楼wangybyangxr(王永斌)回复于 2005-06-06 18:49:23 得分 20

行链接主要是由于数据库的db_block_size不够大,对于一些大的字段没法在一个block中存储下,从而产生了行链接。对于行链接我们除了增大db_block_size之外没有别的任何办法去避免,但是因为数据库建立后db_block_size是不可改变的(在9i之前),对于Oracle9i的数据库我们可以对不同的表空间指定不同的db_block_size,因此行链接的产生几乎是不可避免的,也没有太多可以调整的地方。  
   
          行迁移则主要是由于更新表的时候,由于表的pctfree参数设置太小,导致block中没有足够的空间去容纳更新后的记录,从而产生了行迁移。对于行迁移来说就非常有调整的必要了,因为这个是可以调整和控制清除的。  
   
          以上内容供楼主参考。Top

4 楼tyrone98(林林)回复于 2005-06-06 19:39:18 得分 20

db_block_size   最主要是和你的应用有关,如果你是OLTP的应用,也就是每一次查询基本都是以主键查询,你可以使用较小的db_block_size,如果是OLAP则需要使用较大的db_block_sizeTop

5 楼bzszp(SongZip)回复于 2005-06-07 08:19:00 得分 20

如果系统将要经常做大量数据读取,则block_size大一些比较好,这样每个块可以存放多个行,减少了I/OTop

相关问题

  • 要控制操作数据库sybase,在vc中,用哪种接口比较合适?ODBC,ADO,DAO,OLE DB?欢迎讨论!
  • 請教﹕怎樣調整db_block_buffers
  • 用StringList还是GridList合适?
  • 大家觉得我这么做合适不合适?
  • Oracle安装完成后,如何增大db_block_size的大小?
  • 那种数据库更合适?
  • 用java开发MIS系统是合适?
  • 人什么时候结婚最合适?
  • include<b.h>放在哪儿最合适?
  • 请推荐一个合适的控件

关键词

  • 数据库
  • 数据
  • db
  • oracle
  • 操作系统
  • 系统
  • block
  • 迁移
  • 表
  • 存储

得分解答快速导航

  • 帖主:zh430
  • LGQDUCKY
  • wangybyangxr
  • tyrone98
  • bzszp

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo