WEB开发网
开发学院数据库DB2 DB2事务日志使用经验 阅读

DB2事务日志使用经验

 2008-11-24 16:34:15 来源:WEB开发网   
核心提示: C:Documents and Settingsadministrator>db2pd -db sample -applicationsDatabase Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:02:36App

  C:Documents and Settingsadministrator>db2pd -db sample -applications
  Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:02:36
  Applications:
  Address AppHandl [nod-index] NumAgents CoorEDUID Status C-
  AnchID C-StmtUID L-AnchID L-StmtUID Appid
  WorkloadID WorkloadOccID
  …..
  0x7AED8080 7 [000-00007] 1 1572 UOW-Waiting 0
  0 185 1 *LOCAL.DB2.081111100729
  1 1
  …..

Application handle为7的应用,对应的L-AnchID为185,L-StmtUID为1。在回话2中继续使用db2pd找到对应的sql语句:

  db2pd -db sample -dynamic
  …..
  Dynamic SQL Statements:
  Address AnchID StmtUID NumEnv NumVar NumRef NumExe Text
  0x7EA7D540 185 1 1 1 1 1 CALL proc_testlog(?)
  …

对应AnchID为185, StmtUID为1的语句,是CALL proc_testlog(?),通过上面的分析,我们可以找到,是调用存储过程proc_testlog导致占用了大量的日志,从而找出导致日志满的罪魁祸首。

解决方案:

首先,尽量规避超大事务的操作,对于必须执行的这种大操作,可以考虑是否可以分解成几个事务进行,如果可以,尽量分解为小事务的方式进行;如果业务上不可以分解,是否可以考虑采用不记日志的方式?比如,load代替insert?表针对这个操作,暂时改为不记日志的方式等等。

注意:当进行不记日志的操作时,必须非常清楚这样的操作的影响,比如,归档日志下数据库前滚的影响,hadr与复制的数据同步影响,操作失败结果如何等等。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:DB 事务 日志

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接