在数据库中,当不同程序对同一张表同时执行不同操作时,如何避免锁超时的发生?例如,unload和其它DML操作同时发生(DBMR2123)。

~ 0 min
2016-03-03 03:41

锁对于相同数据库对象上的多个事物之间的并发控制来说,是十分重要的。当多个用户同时访问同一个数据库对象,将会发生锁超时。尽管这是一种正常行为,其目的是为了确保数据库中的数据一致性,然而在一些特定情况下,同时访问的这种需求是可以得到满足的。但是如何处理这种特殊要求呢?这就需要用户根据实际情况来选择不同的处理办法。

以下是以DBMR2123为例进行的详细描述:

当用户从表test中下载数据,另一个应用程序正在同时操作表test(delete, insert etc)时,将会发生锁超时。为了避免锁超时的发生,我们可以使用临时表。

详见如下:

Select * from test into temp_test;

Unload data from (select * from temp_test) to test_file;

这并不会影响原始表的性能,但需要扩展默认表空间,因为临时表通常指定在默认表空间中。

版本: DBMaster 4.x\5.x DBMaster4.x\5.x

产品: Normal

平台: Windows xp

平均分: 0 (0 投票)

你不能对该内容发表评论

标签