DB2优化-异常的DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68, DRIVER=3.62.56

     一台DB2数据库,近期交易总是锁表,报错如下:

    - DB2 SQL Error: SQLCODE=-911, SQLSTATE=40001, SQLERRMC=68, DRIVER=3.62.56 

        一般报  SQLCODE=-911的错误时,我们优先就会想到是不是索引问题,但这次从日志中看,报错时间点的数据库更新并不频繁,也没有对同一张表的同一行做UPDATE操作,而且报错的表字段少,且是用主键执行UPDATE,因此不可能是索引问题。

        回看了报错时间前10分钟的日志,发现之前有大的数据量查询、更新,但都是很正常的,只有到这条SQL时,突然就出现异常了。因此,我判断是数据库自身性能问题。

       过程我就不细写了,最终判断为缓冲池的问题。修改完后系统速度立马从拖拉机变成飞机。

        附上修改方案:

       说明:TBS.TABLE是经常锁表的表名

      1、 在数据页中预留空间

 alter table TBS.TABLE(表名)  PCTFREE 30(预留30%)

 load from TABLE.ixf of ixf modified by pagefreespace=30 replace into TBS.TABLE

       2、新建缓冲池:
     

 db2 create bufferpool bp_tbs size 1000 pagesize 4k
       
 alter tablespace TBS bufferpool bp_tbs

       当脏页超过CHNGPGS_THRESH(%,db cfg)时,缓冲池将被清空并写回

       3、延展缓冲池:
       ESTORE_SEG_SZ& NUM_ESTORE_SEGS(db cfg)
       

db2 alter bufferpool ibmdefaultbp [ not ] extended storage

      4、表格重整:

db2 reorg table TBS.TABLE

      5、索引重整:

db2 reorg indexes all for table TBS.TABLE _options_

options:allow read|write|no access, cleanup only pages|all(不重建索引结构,只回收空索引页)

 

参考文献:

数据页的缓冲池管理

DB2数据库性能调整的相关命令

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值