(基礎知識)Oracle中外鍵不加索引?

2021-08-10 03:21:09 字數 706 閱讀 8699

oracle中外鍵不加索引可能會導致3個問題,這裡的外來鍵包括oracle所有種類的外來鍵(普通外來鍵、級聯外來鍵和置空外來鍵)1。

1. 死鎖以及併發問題。

對於父表的delete、update操作都會導致子表鎖定(表級鎖)。這指的是發起指令到指令結束這一段過程中,會鎖表。這個全表鎖可能會導致死鎖2,以及帶來的子表併發性的問題:

a鎖定了子表,等待訪問b鎖定的資源釋放。此時,b繼續對父表進行delete、update,會鎖定子表,等待a釋放子表。從而造成死鎖。

這裡強調一下,對於父表的delete、update操作,發起指令到指令結束這一段過程中,會鎖表。也就是說若delete from 父表 where x = 1; 那麼子表在會話顯示出 *** row deleted.結果之前是鎖定的,顯示出之後又是釋放的。這個很關鍵,有助於理解一些例子。

2. 刪除變慢。

若索引是on delete cascade,也就是級聯外來鍵。即使在不會導致1的情況,也會在刪除過程中,每刪除父表的一行就會對子表進行一次全表掃瞄,造成刪除變慢2。

3. 查詢變慢。

父表查詢子表通過外來鍵聯合查詢下,沒有新增外來鍵索引會導致查詢變慢。

參考資料

[1] oracle程式設計藝術深入理解資料庫體系結構(第3版),p460

[2] oracle程式設計藝術深入理解資料庫體系結構(第3版),p205

[3]

Oracle中外鍵約束問題

關於資料結構的外來鍵約束,一般來說,在開發系統的過程中,外來鍵約束遇到的問題較少,但是在移植程式,公升級程式的過程中,外來鍵約束對程式設計師的困擾尤其嚴重,如果子表a中的乙個欄位同主表b的字段有外來鍵關係,如果b表沒有新增對應的資料,那麼在操作a表的過程中就容易出現外來鍵約束錯誤提示,這樣的情況他一...

Oracle基礎知識

關於oracle的安裝過程這裡不再一一列出,網上有許多的安裝教程以及安裝過程所遇問題的解決辦法。通過學習所達到的目標如下 理解結構化查詢語句的作用 分類 理解select語句的作用 掌握選擇所有列 指定列 表示式 帶空值null 列別名 連線操作符 消除重複行的sql語句書寫方法。結構化查詢語言 s...

Oracle基礎知識

oracle基本划水知識 1.oracle 是乙個資料庫管理系統 啟動 服務 lsnrctl start 啟動資料庫服務 net start oracleserviceorcl 邏輯結構 資料庫 表空間 資料段 資料區間 資料段 進入資料庫 sqlplus 使用者名稱 密碼 切換使用者 conn 使...