连载:告诉你如何设计一个日访问量千万级别的系统,谈oracle的高级设计和开发(3)

上一篇讲到会员系统数据库设计时,在设计上性能考虑的五点中的第一点----合理定义字段的数据类型。

接下来讲解设计上性能考虑的五点中的第二点:将会员表分拆成多个表。

具体做法是将会员表中字段依据业务按读取频率分为三类:频繁读取的、普通频率读取的、很少读取的,然后将这三类字段分别建到三个不同的表中-----会员主信息表、会员基础信息表、会员辅助信息表。例如将经常要读取的会员ID、会员登录名、会员密码、会员类型、会员昵称等字段放到会员主信息表中,将兴趣爱好,QQ号码之类放到会员辅助信息表中。

这点很重要,但为何要这样做,提升性能的原理是如何的,则与oracle数据库的存储结构、读取原理直接相关,接下来重点介绍。

 

数据块(Oracle Data Blocks),本文简称为“块”,是Oracle存储及读写中非常重要的概念。块是oracle最小的存储单位,Oracle数据存放在“块”中。一个块占用一定的磁盘空间。在设计数据库,特别是建表的时候,必须将oracle块大小作为最基本的依据。块大小在安装数据库的时候会设定,目前通常缺省为8K。块的大小设置与系统是OLTP或OLAP有关,通常OLTP设置为8K比较适合,OLAP则可以设置更大一些。

  Oracle每次请求数据的时候,都是以块为单位。也就是说,Oracle每次请求的数据是块的整数倍。如果Oracle请求的数据量不到一块,Oracle也会读取整个块。所以说,“块”是Oracle读写数据的最小单位或者最基本的单位。

  块的标准大小由初始化参数DB_BLOCK_SIZE指定。具有标准大小的块称为标准块(Standard Block)。块的大小和标准块的大小不同的块叫非标准块(NonstandardBlock)。同一数据库中,Oracle9i及以上版本支持同一数据库中同时使用标准块和非标准块。Oracle允许指定5种非标准块(Nonstandard Block)。

  操作系统每次执行I/O的时候,是以操作系统的块为单位;Oracle每次执行I/O的时候,都是以Oracle的块为单位。

补:操作系统同样有块概念,oracle的块大小是操作系统块的整数倍。

有了块以及oracle请求数据是以块为单位的概念,我们就很容易理解在表设计的时候,需要依据业务将访问频率作为依据将表分拆,读取频率高,特别是有时候还需要列表形式展示的字段,集中到一个表中,读取频率低的另外存放。举例:oracle数据块大小为8K,会员表有20个字段,每条记录存储空间1K,也就是说一个块存放8条记录;假如将20个字段依据业务分成2到3个表,其中频繁读取的字段单独建立一张表,存储空间为0.1K,那么一个块可以存放80条记录。假定oracle一次IO请求一个块,则意味着不分表的时候,一次只能读8条记录,而分表后一次能读80条记录。这种性能上的提高就不单单是提高百分之几的问题了。而是好几倍。

查看oracle标准块大小:

select * from v$parameter wherename = 'db_block_size'
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值