12
返回列表 发新帖
楼主: jayli426

[讨论] 对于OLAP系统为何DB_BLOCK_SIZE越大越好?

[复制链接]
论坛徽章:
8
2010广州亚运会纪念徽章:壁球
日期:2010-11-11 18:03:082010广州亚运会纪念徽章:跆拳道
日期:2010-11-11 18:03:13ITPUB学员
日期:2011-04-14 09:58:10ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152012新春纪念徽章
日期:2012-01-04 11:50:442013年新春福章
日期:2013-02-25 14:51:24暖羊羊
日期:2015-03-04 14:50:372015年新春福章
日期:2015-03-06 11:57:31
11#
 楼主| 发表于 2013-2-20 08:39 | 只看该作者
本帖最后由 jayli426 于 2013-2-21 05:42 编辑
Yong Huang 发表于 2013-2-17 13:24
To solearn: You're correct.

To jayli426:


But a bigger db_block_size in Oracle saves the number of requests issued by Oracle?
why?

意思就是更大SIZE容纳的实际业务数据要多于更小SIZE的数据块的业务数据
即一个SIZE为32K数据块要比4个SIZE为8K的数据块要容纳更多的业务数据?

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
12#
发表于 2013-2-21 06:33 | 只看该作者
> a bigger db_block_size in Oracle saves the number of requests issued by Oracle

I should say "saves in". Sorry. Here, I just want to say a bigger db_block_size allows fewer I/O requests than a smaller block size does if the same amount of data needs to be read.

使用道具 举报

回复
论坛徽章:
78
ITPUB15周年纪念
日期:2020-08-28 17:23:53双鱼座
日期:2016-03-19 19:38:31秀才
日期:2016-02-18 09:31:52秀才
日期:2016-01-25 15:02:04双子座
日期:2016-01-19 20:35:54秀才
日期:2016-01-13 12:14:26秀才
日期:2015-12-25 15:31:10秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:56:09秀才
日期:2015-12-14 14:51:16
13#
发表于 2013-2-24 11:09 | 只看该作者
其实没必要,对于DW打开那个multblock read就可以了。非8K的block size遇到BUG机会更大。而且ORACLE没有DB2那种block/page size小了就放不了太宽的表的限制。

使用道具 举报

回复
论坛徽章:
15
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27马上有房
日期:2014-04-04 19:42:43马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08本田
日期:2014-01-16 21:44:06大众
日期:2013-12-14 09:29:562013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48奥运会纪念徽章:射箭
日期:2012-07-26 13:53:55奥运会纪念徽章:跆拳道
日期:2012-07-13 13:54:19
14#
发表于 2013-2-24 14:16 | 只看该作者
jayli426 发表于 2011-10-10 13:16

个人认为Oracle的IO处理最小单位是block,不论是物理IO还是逻辑IO。

就按您的理解,100条记录分散在100个块里的概率,32K的比8K的要小的多。
即使在存储层面IO次数是一样的,但在oracle层面,32K的数据库比8K的数据库调用多块读的次数要少

使用道具 举报

回复
论坛徽章:
15
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27马上有房
日期:2014-04-04 19:42:43马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08本田
日期:2014-01-16 21:44:06大众
日期:2013-12-14 09:29:562013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48奥运会纪念徽章:射箭
日期:2012-07-26 13:53:55奥运会纪念徽章:跆拳道
日期:2012-07-13 13:54:19
15#
发表于 2013-2-24 14:17 | 只看该作者
jayli426 发表于 2011-10-10 13:16

个人认为Oracle的IO处理最小单位是block,不论是物理IO还是逻辑IO。

还有索引,大块显然比小块要好的多

使用道具 举报

回复
论坛徽章:
8
2010广州亚运会纪念徽章:壁球
日期:2010-11-11 18:03:082010广州亚运会纪念徽章:跆拳道
日期:2010-11-11 18:03:13ITPUB学员
日期:2011-04-14 09:58:10ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152012新春纪念徽章
日期:2012-01-04 11:50:442013年新春福章
日期:2013-02-25 14:51:24暖羊羊
日期:2015-03-04 14:50:372015年新春福章
日期:2015-03-06 11:57:31
16#
 楼主| 发表于 2013-2-24 19:32 | 只看该作者
gszoracle 发表于 2013-2-24 14:17
还有索引,大块显然比小块要好的多

这是个神马意思?

使用道具 举报

回复
论坛徽章:
15
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:27马上有房
日期:2014-04-04 19:42:43马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08本田
日期:2014-01-16 21:44:06大众
日期:2013-12-14 09:29:562013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48奥运会纪念徽章:射箭
日期:2012-07-26 13:53:55奥运会纪念徽章:跆拳道
日期:2012-07-13 13:54:19
17#
发表于 2013-2-24 20:51 | 只看该作者
jayli426 发表于 2013-2-24 19:32
这是个神马意思?

大块可以比小块装更多的索引项,索引是有序的,不会像数据数据记录那样这块放一条,那块放一条。oracle可以减少IO,如果压缩,压缩率也更高

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
18#
发表于 2013-2-25 10:23 | 只看该作者
os block<=8k的情况,db_block_size=8k和32k感觉没太大差别,差别就是32k在DB层面少了些IO调用,在CPU资源充足的情况下,这个一般不会是问题,实际测试中,32K也没发现比8K优越多少;在os block>8K的情况,db_block_size=32k优势可能更明显,但前提是OLAP系统,否则,会浪费掉很多IO资源,反而会导致系统性能的下降。

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
19#
发表于 2013-2-25 12:34 | 只看该作者
> os block<=8k的情况,db_block_size=8k和32k感觉没太大差别

I saved URLs for two old performance tests comparing different db_block_size's.

http://www.mofeel.net/254-comp-d ... r/47458a555a-2.aspx
"the db_block_size was set to 4K (was 2k) as a first try.  All batch runs immediately sliced the runtime into half"

http://www.linuxjournal.com/article/5840#N0x850ca00.0x85d3a20
My words in summarizing the above test:
Bert Scalzo investigated the effect of db_block_size on performance running Oracle on Linux. It's understandable that going from 2k to 4k increased performance by 138%. But it's surprising that changing db_block_size from 4k to 8k (the maximum supported on Linux) reduced data load time by almost 32%. Since Linux ext2 filesystem has a 4k block size, this benchmark seems to contradict the common belief that performance is the best when db_block_size matches file system I/O size; instead doubling it may improve performance.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表