2013-06-03 67 views
0

IM在其访问Sybase ASE 15.0.2,在那里当前的代码访问的远程数据库 (CIS),以使用代理表定义插入一行的应用程序的工作(目标表是一个DOL - DRL表 - PK 行被定义为标识,并且一直在增长)。当前的代码执行一个select来检查行 是否已经存在以避免重复的数据被插入。由于远程表在表格上也有一个PK定义,所以我明白在提交行之前PK验证会再次执行 。 林规划去除选择检查,因为它被有效利用PK验证, 再次这样做,但即时通讯担心,如果接受了许多重复的文件时,当数据被试图将COMMITED表可能遭受 一些不必要的争论。Sybase ASE的远程行插入锁定

它不清楚,我如果Sybase ASE的试图保持最后行并写入来检查 重复之前的数据。另外,如果表格非常大,我也担心它将花费整个索引来查找重复的时间。

我已经找到了一些SQL文件的任何地方,而不是日月光以下链接 http://dcx.sybase.com/1200/en/dbusage/insert-how-transact.html

我能找到的最好的是下面的解释

https://groups.google.com/forum/?fromgroups#!topic/comp.databases.sybase/tHnOqptD7X8

但事实并非如此详细启发该行是如何锁定的(以及是否存在任何种类的优化以将其写在前面或在PK检查的同时) ,以及如果它将浪费完整的PK外观如果im积极地插入一排它的PK 比最后一排正更大COMMITED

感谢

亚历

+0

你看过这里的文档:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase15.cisug/html/omni_ug/BABFDDHD.htm –

回答

0

与SQLAnywhere中没有选项ASE设置wait_for_commit。在插入期间检查主键约束,而不是在提交时检查。我从你的帖子中看到的问题是,如果你从一个可能包含重复项的文件中插入大量数据,就是加载到临时表中,检查重复项,删除重复项,然后插入唯一项。质量插入虽然仍检查主键违规,但速度更快。然而,没有成本相关,因为没有回滚。插入语句总是全部或全部没有。即使一行重复,整个插入语句也会失败。在插入更多无错方法之前进行检查,而不是使用约束进行验证,因为它将失败并且回滚将再次成本高昂。

0

感谢迈克 链接确实有来自独联体的角度插入一个非常快速的解释。它是一个变量,需要注意的是,如果CIS执行数据和语法检查,如果CIS将插入语句转发到目标服务器时会再次完成,那么CIS可能成为代表性的时间消费者 。我很害怕,CIS可能有超越网络流量/时间在锁定一定的影响/ PK检查

拉朱 我不同意,通过检查,如果该行已经通过运行一个选择,并在这样做存在避免了PK重复批处理,但即时通讯目前正在寻找一个停止解决方案,并且可能会执行大约50行的批量插入命令,并将 重复键检查为PK。 希望的PK检查将在加入50个新插入的行来完成,从而避免 遍历该指数为每个单排...

生病尝试测试这个和评论回

亚历克斯