在数据库中,当不同程序对同一张表同时执行不同操作时,如何避免锁超时的发生?例如,unload和其它DML操作同时发生(DBMR2123)。
锁对于相同数据库对象上的多个事物之间的并发控制来说,是十分重要的。当多个用户同时访问同一个数据库对象,将会发生锁超时。尽管这是一种正常行为,其目的是为了确保数据库中的数据一致性,然而在一些特定情况下,同时访问的这种需求是可以得到满足的。但是如何处理这种特殊要求呢?这就需要用户根据实际情况来选择不同的处理办法。
以下是以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