IT分销/经销数据库统计

统计数据(1) - 收集的时机

最近坛子里的朋友们热烈的讨论了优化器和统计收集的话题.
在这里我提运维中一个常见的问题,请各位发表下看法.

对CBO引擎来说,统计数据的收集对性能优化是至关重要的.
而对于数据巨大和众多索引的表的统计数据收集是个相当消耗时间和资源的操作.
在大型OLTP系统中,白天跑ONLINE,晚上跑BATCH是非常常见的运行模式.
很多时候是没有充足的时间来给我们进行收集操作的.
(N年前曾遇到过一家客户拒绝提供给统计数据收集的时间)

问题:
应该选取什么时机和什么方式进行RUNSTATS才更有效率更有效果.

我先来个:
在大量数据LOAD后,应该马上对表和索引进行完整的统计数据收集,
并在事先的估算中,把统计数据收集的时间记在LOAD操作的帐上.
参与19

18同行回答

tivantivan数据库管理员bingo
我这边有一个这样的情况,调用存储过程出现死锁。过程是这样的:1、调用load命令装载数据(每次装载100万),2、装载完用jdbc调用存储过程对装载的数据走业务处理。当以上的过程并发有4个以上的时候(不同的任务,装载不同的目标表),调用存储过程是报死锁异常。DB2 SQL Error: SQLCODE=-...显示全部
我这边有一个这样的情况,调用存储过程出现死锁。
过程是这样的:
1、调用load命令装载数据(每次装载100万),
2、装载完用jdbc调用存储过程对装载的数据走业务处理。
当以上的过程并发有4个以上的时候(不同的任务,装载不同的目标表),调用存储过程是报死锁异常。
DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=2
请问大家有没有遇到这样的问题?收起
IT分销/经销 · 2012-10-18
浏览1189
YmickYmick项目经理Ymick
有点道理显示全部
有点道理收起
互联网服务 · 2012-07-11
浏览1164
jaminwmjaminwm系统架构师PCI
16楼言之有理,可惜我们作为运维难以了解全部,统计数据收集本身就对DB产生一些负载,时间点难。显示全部
16楼言之有理,可惜我们作为运维难以了解全部,统计数据收集本身就对DB产生一些负载,时间点难。收起
软件开发 · 2012-06-03
浏览1146
dannyzhangdannyzhang总裁助理/总经理助理浙商银行
个人感觉,runstat最重要的前提是了解业务,知道这些表示干什么的,有什么使用上的特性,数据量变化的特点,然后才能有针对性的开展。一般的DBA要管理很多数据库,如果一一都要了解,确实难度很大。...显示全部
个人感觉,runstat最重要的前提是了解业务,知道这些表示干什么的,有什么使用上的特性,数据量变化的特点,然后才能有针对性的开展。一般的DBA要管理很多数据库,如果一一都要了解,确实难度很大。收起
银行 · 2012-05-02
浏览1200
jingyufanjingyufan系统工程师招商银行
我们都是夜里做,但有时候还是会遇到夜里调度load的情况,就很容易死锁显示全部
我们都是夜里做,但有时候还是会遇到夜里调度load的情况,就很容易死锁收起
互联网服务 · 2012-05-02
浏览1256
myronaldomyronaldoIT支持Q&Q
Good question, right on time.Statistics can "bite" you if not dealing with properly显示全部
Good question, right on time.
Statistics can "bite" you if not dealing with properly收起
IT分销/经销 · 2011-06-29
浏览1181
cedarbirdcedarbird工程师CDI
自动统计收集在大系统里感觉不是那么好用,还是有计划的手动收集比较好。怎么做计划就得根据需要了。理想状态是当数据的变化对统计有一定影响的时候就收集。除了上面提到的LOAD外,很多操作都需要及时的进行统计收集。增加INDEX,那么可以只对这个索引进行收集。RUNSTATS ON T...显示全部
自动统计收集在大系统里感觉不是那么好用,还是有计划的手动收集比较好。
怎么做计划就得根据需要了。

理想状态是当数据的变化对统计有一定影响的时候就收集。
除了上面提到的LOAD外,很多操作都需要及时的进行统计收集。

增加INDEX,那么可以只对这个索引进行收集。
RUNSTATS ON TABLE TAB FOR INDEX IDX

执行REORG后,也需要统计收集。
这是因为执行REORG会影响CLUSTER状态,特别是需要使用DETAILED选项进行收集的时候。

如果20%以上的数据被更新就需要进行统计收集了。(个人经验)收起
IT分销/经销 · 2011-06-23
浏览1229
drdb2drdb2系统工程师se
回复 10# liuhch0709 good strategy. I like it.auto stats 是所谓“trust IBM 的 dummy法" :P显示全部
回复 10# liuhch0709

good strategy. I like it.
auto stats 是所谓“trust IBM 的 dummy法" :P收起
互联网服务 · 2011-06-22
浏览1183
start2000start2000系统架构师ABB
auto runstats,表多了的确会出现锁系统表的情况,不过也是偶尔出现,基本是系统load很大的时候会出现.显示全部
auto runstats,表多了的确会出现锁系统表的情况,不过也是偶尔出现,基本是系统load很大的时候会出现.收起
互联网服务 · 2011-06-22
浏览1341
liuhch0709liuhch0709数据库管理员IBM
我们之前是使用db2自动收集统计信息,数据量小的时候不存在太大的性能影响。但系统运行了16个月左右,由于数据量大,加之db2决定autorunstats的时间也不好预测并加以控制。所以在前端时间,出现白天业务高峰期的时候对数据量最大的几张表进行进行自动收集统计信息,且持续时间非常...显示全部
我们之前是使用db2自动收集统计信息,数据量小的时候不存在太大的性能影响。但系统运行了16个月左右,由于数据量大,加之db2决定autorunstats的时间也不好预测并加以控制。所以在前端时间,出现白天业务高峰期的时候对数据量最大的几张表进行进行自动收集统计信息,且持续时间非常长!导致全省系统并发性非常低。
所以之后我们采取的策略:
1 业务涉及多的且变动最大的表(这些表每天都涉及到大量的数据插入和更新操作)进行定期手动收集,并限制允许时的资源进行限制。我们是每晚都执行这些表的统计信息收集。
2 对一些数据量大的变动小的表(比如我们业务中的个人信息表基本是1年变动一次,其他时候变动非常小),基本在每年变动大批量变动的时候,在变动的同时就直接做一个统计信息的更新。
3 对一些数据量小并且基本不变动(一般变动都是维护人员操作的变动,业务只涉及到查询的表),更新一次统计信息后就不再管了。

俺说的是我们系统的实际维护情况哈,开始数据量小的时候,我觉得使用db2的自动统计收集还不错。但数据量大了的话对性能还是很有影响的。各位大神觉得我们这方案有什么不足给指点指点哈!收起
互联网服务 · 2011-06-22
浏览1375

提问者

cedarbird
工程师CDI
擅长领域: 数据库

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-06-22
  • 关注会员:1 人
  • 问题浏览:23854
  • 最近回答:2012-10-18
  • X社区推广