2013-06-03 66 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個新插入的行來完成,從而避免 遍歷該指數爲每個單排...

生病嘗試測試這個和評論回

亞歷克斯