程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle性能優化之LockContention

Oracle性能優化之LockContention

編輯:Oracle數據庫基礎
1、概念

  DML事務使用row-level locks,查詢不會鎖定數據。鎖有兩種模式:exlusive、share。

  鎖的類型:

  • DML or data locks:

  – Table-level locks(TM)

  – Row-level locks(TX)

  • DDL or dictionary locks

  一個transaction至少獲得兩個鎖:一個共享的表鎖,一個專有的行鎖。Oracle server將所有的鎖維護在一個隊列裡,隊列跟蹤了等待鎖的用戶、申請鎖的類型以及用戶的順序信息。

  Lock在下列情況會釋放:commit;rollback;terminated(此時由pmon清理locks)。

  QuIEsced database:一個數據庫如果除了sys和system之外沒有其他活動session,這個數據庫即處於quIEsced狀態。活動session是指這個session當前處於一個transaction中,或一個查詢中,一個fetch中,或正占有某種共享資源。

  2、可能引起lock contention的原因

  不必要的高層次的鎖;

  長時間運行的transaction;

  未提交的修改;

  其他產品施加的高層次的鎖。

  解決lock contention的方法:鎖的擁有者提交或回滾事務;殺死用戶會話。

  3、死鎖

  Oracle自動檢測和解決死鎖,方法是通過回滾引起死鎖的語句(statement),但是這條語句對應的transaction並沒有回滾,因此當收到死鎖的錯誤信息後,應該去回滾改transaction的剩余部分。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved