SAP IQ DML操作產生表鎖(不是行鎖),同時DML同一個表預設直接報錯
Sybase IQ 16 測試時候發現, DML 操作會對整個表實施 lock動作,其他DML不能操作, 直接報錯。
在一個session中執行 : insert into dmreg.dm_test_one values(66,getdate(),'test6'); 不提交。
在另外一個session中DML操作同一個表, 直接報錯 :
[sybase@ssp502-or ~]$ dbisql -c "uid=dba;pwd=sql" -nogui
(DBA)>
(DBA)> insert into dmreg.dm_test_one values(88,getdate(),'test8');
Could not execute statement.
User 'another user' has the row in 'dm_test_one' locked
SQLCODE=-210, ODBC 3 State="40001"
Line 1, column 1
insert into dmreg.dm_test_one values(88,getdate(),'test8')
Press ENTER to continue...
我們修改資料庫引數 (database options) ,
select * from sysoptiondefaults; -- 檢視預設值
set option public.blocking='ON' ; -- 修改 blocking='ON' , 預設是OFF
set option public.blocking_timeout= 0 ; -- 修改blocking_timeout=0, 表示無限期等待,其實預設就是0
sp_iqcheckoptions; --- 檢視修改後的引數值
再次在不同session中執行針對一張表的DML語句, 第一個不提交的情況下, 第二個session會一直等待,直到第一個session的DML提交。
備註: 如果是IQ Multiplex 叢集架構,那麼只有 Coordinator 協調伺服器節點才對以上的設定blocking生效, 其他節點一樣不生效 ,還是會報錯。
在一個session中執行 : insert into dmreg.dm_test_one values(66,getdate(),'test6'); 不提交。
在另外一個session中DML操作同一個表, 直接報錯 :
[sybase@ssp502-or ~]$ dbisql -c "uid=dba;pwd=sql" -nogui
(DBA)>
(DBA)> insert into dmreg.dm_test_one values(88,getdate(),'test8');
Could not execute statement.
User 'another user' has the row in 'dm_test_one' locked
SQLCODE=-210, ODBC 3 State="40001"
Line 1, column 1
insert into dmreg.dm_test_one values(88,getdate(),'test8')
Press ENTER to continue...
我們修改資料庫引數 (database options) ,
select * from sysoptiondefaults; -- 檢視預設值
set option public.blocking='ON' ; -- 修改 blocking='ON' , 預設是OFF
set option public.blocking_timeout= 0 ; -- 修改blocking_timeout=0, 表示無限期等待,其實預設就是0
sp_iqcheckoptions; --- 檢視修改後的引數值
再次在不同session中執行針對一張表的DML語句, 第一個不提交的情況下, 第二個session會一直等待,直到第一個session的DML提交。
備註: 如果是IQ Multiplex 叢集架構,那麼只有 Coordinator 協調伺服器節點才對以上的設定blocking生效, 其他節點一樣不生效 ,還是會報錯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-2095047/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 並行dml操作所需的TM鎖並行
- 關於主外來鍵關係DML父表和DML子表加鎖方式
- 主從表,增,刪,改操作時產生的鎖演示
- DML的鎖,修改表經常遇到的的場景
- 哪種DML操作產生undo多
- 轉載--oracle DML鎖Oracle
- ORACLE DML鎖定機制Oracle
- db2_dml鎖分析DB2
- Parallel DML和append將在表上產生exclusive lockParallelAPP
- 用user_tab_modifications查詢表dml操作時間
- oracle 表(table)上最後一次 DML時間、行(row)上最後DML時間Oracle
- DML操作涉及到的系統表
- 全域性鎖、表鎖、行鎖
- oracle 監控 DML DDL 鎖 的4個檢視Oracle
- Oracl 發生鎖表--解鎖sqlSQL
- Oracle10g DML錯誤日誌表Oracle
- Oracle並行操作——並行DML操作Oracle並行
- ORACLE 11g新特性-允許DDL鎖等待DML鎖Oracle
- MySQL全域性鎖、表鎖以及行鎖MySql
- 基於LOGMINER 的表DML誤操作恢復
- 表中出現碎片,造成查詢、DML操作變慢
- 表的建立修改及增刪改查-DML操作
- 閃回 錯誤的DML 操作
- Oracle中定位資料表的最近DML時間Oracle
- MySQL索引失效行鎖變表鎖MySql索引
- GoldenGate單向表DML同步Go
- 使用 OpenQuery 函式對遠端表執行DMLENQ函式
- InnoDB常用鎖總結(行鎖、間隙鎖、臨鍵鎖、表鎖)
- MySQL 5.5 InnoDB表鎖行鎖測試MySql
- mysql for update是鎖表還是鎖行MySql
- 關於全域性臨時表DML特性案例體現
- 唯一索引操作可能產生的鎖索引
- 鎖表
- Sqlserver如何大概推算一張表最後一次發生DML的時間SQLServer
- sqlserver鎖表、解鎖、檢視銷表SQLServer
- ORACLE表和行的鎖Oracle
- MySQL行鎖、表鎖、間隙鎖,你都瞭解嗎MySql
- 不可見索引在表DML操作過程中依然被維護索引