你可以缩小你的事务嘛!
例如你可以将你的“db2 insert into z select g。a,g。b from g,h”语句分成几次提交。(不知道你的h表是做什么用)
做法可以这样:
1.db2 insert into z select a.col1,a.col2 from (select row_number() over (order by g.a,g.b) as row_num,g.a as col1,g.b as col2 from g,h) as a where a.row_num between 1 and 1000;commit;
2.........................between 1001 and 2000;commit ;
...
当然你可以用一个循环来完成。
例如你可以将你的“db2 insert into z select g。a,g。b from g,h”语句分成几次提交。(不知道你的h表是做什么用)
做法可以这样:
1.db2 insert into z select a.col1,a.col2 from (select row_number() over (order by g.a,g.b) as row_num,g.a as col1,g.b as col2 from g,h) as a where a.row_num between 1 and 1000;commit;
2.........................between 1001 and 2000;commit ;
...
当然你可以用一个循环来完成。
2.可否将表拆开,使用视图分割也可以。
3.数据库设计是否得当?像上述情况关联,没有一点条件这也太夸张了吧
既然z是g,h生成的,还要他作什么呢,倒是带来了一致性的问题,
完全可以使用视图。
你不要日志,带事务的数据库都需要记录日志呀,当然在数据表数据被更新时必须
要记录他,
你可以使用EXPORT在不使用日志记录使用IMPORT进去
db2 insert into z select g.a,g.b from g,h
to tanghuan():我的数据库可能和一般的不太一样,数据库的原始数据是在一段时间内集中导入的,导入以后就不再修改了,平时使用就是通过前端的一个软件,对原始数据查询产生一些中间的数据,并保存下来,下次再在中间数据的基础上又查询,如此反复。所以不用担心一致性的问题。不过还是谢谢你的热心!!!
你就没有办法避开事务日志,即使你问任何大型数据库都是一样的不过你使用的是DB2,你可以把日志设置为归档方式,再在一段时间
截断日志,详细查看命令 PRUNE HISTORY。
2。在insert之前用:active not logged initially
3。然后insert就不记日志了。(在commit或断开数据库连接后,active自动失效,下次还需显示active)
1.当sql执行时会在log pool 中记载log记录其包含为该条记录修改前后的值,用于sql出错时roolback.
2.当commit时或log pool的空间使用超过系统默认值时会将 log写入active log中此时的active log应在辅助存储器中如磁盘
3.当active log 满时系统人员会做archive log,将active log备份到磁带中或其他存储器中,释放active log的空间.
另外想请教有人做大型机吗????