2013-04-01 58 views
1

進程正在對具有多於5萬行的文件的表執行LOAD操作。
onstat -k命令顯示插入行的行鎖,我認爲這是正常的。
我看到的異常情況是onstat -u結果顯示對這個會話有巨大的鎖定。在informix中加載操作鎖定表

而且它訪問表的其他進程越來越SQLERR-245

我的問題是,爲什麼龐大的插入操作應該鎖定表?它不應該只鎖定行嗎?該表的默認鎖模式是row

的Informix版本IDS 11.5

+0

其他進程獲取錯誤'-245無法通過索引在文件中定位「是可以預期的,因爲這將取決於在其會話中使用的集合隔離以及您的加載事務處理的時間。關於鎖,對不起,對我來說不清楚你看到的是不正常的,如果'onstat -u'顯示'onstat -k'的鎖的數量不同(AFAIK沒有這種情況會發生),或者如果你看到一個表鎖。 – ceinmart

回答

1

是否使用DB-訪問執行LOAD?還有一些可以做LOAD的其他工具,並且每個工具都有自己的實現 - 實際上它不是DBMS自身內置的操作(我不會因爲這種情況的原因而給你提供詳細信息)。

您是否考慮過使用DB-Load?其優點之一是它可以將大量負載分解爲易於管理的事務 - 例如,它可以提交每1000行加載的數據。這極大地降低了鎖定系統的應變。

您可能還想考慮一下EXTERNAL TABLE是否會改善負載性能。

+0

是的,'LOAD'是通過dbaccess完成的。我正在嘗試探索'dbload'。但即使它進行了批量提交,它也會鎖定表格,直到插入所有行。我有大約100萬行插入。因此,其他進程將無法訪問表,因爲它們使用「CR」隔離級別。 – cppcoder