【點陣圖索引】在點陣圖索引列上進行更新操作的鎖代價研究
點陣圖索引的特點是不支援行級鎖定,鎖代價很高,請參見文章《【實驗】【Bitmap Index】點陣圖索引的鎖代價研究》(http://space.itpub.net/519536/viewspace-611296)。
提問:若將具有點陣圖索引列的一類值更新為其他已有值資訊,是否會鎖定兩類值的全部記錄?
回答:會!
這也進一步體現了點陣圖索引導致的極高鎖代價!
我們用實驗來說明一下這個問題,這樣會更加的直觀。
1.建立測試表T
sec@ora10g> create table t (x varchar2(10));
Table created.
2.初始化4條資料
sec@ora10g> insert into t values ('Secooler');
1 row created.
sec@ora10g> insert into t values ('Secooler');
1 row created.
sec@ora10g> insert into t values ('HOU');
1 row created.
sec@ora10g> insert into t values ('HOU');
1 row created.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select * from t;
X
----------
Secooler
Secooler
HOU
HOU
3.在T表的X列上建立點陣圖索引
sec@ora10g> create bitmap index t_bitmap_idx on t(x);
Index created.
4.設計更新操作場景
1)第一個session中嘗試將已有的“HOU”記錄更新為已有的記錄“Secooler”
sec@ora10g> update t set x = 'Secooler' where x = 'HOU';
2 rows updated.
2)第二個session中嘗試更新“Secooler”記錄行
sec@ora10g> update t set x = 'Good luck.' where x='Secooler';
特別注意,此時出現了鎖等待現象!此條語句無法完成。
因此也證實了若將具有點陣圖索引列的一類值更新為其他已有值資訊,的確會鎖定兩類值的全部記錄這個結論。
5.小結
透過這個實驗大家應該更加深入體會到點陣圖索引的鎖代價是非常大的。在考慮使用點陣圖索引時需要重點考慮這些因素。
Good luck.
secooler
11.05.03
-- The End --
提問:若將具有點陣圖索引列的一類值更新為其他已有值資訊,是否會鎖定兩類值的全部記錄?
回答:會!
這也進一步體現了點陣圖索引導致的極高鎖代價!
我們用實驗來說明一下這個問題,這樣會更加的直觀。
1.建立測試表T
sec@ora10g> create table t (x varchar2(10));
Table created.
2.初始化4條資料
sec@ora10g> insert into t values ('Secooler');
1 row created.
sec@ora10g> insert into t values ('Secooler');
1 row created.
sec@ora10g> insert into t values ('HOU');
1 row created.
sec@ora10g> insert into t values ('HOU');
1 row created.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select * from t;
X
----------
Secooler
Secooler
HOU
HOU
3.在T表的X列上建立點陣圖索引
sec@ora10g> create bitmap index t_bitmap_idx on t(x);
Index created.
4.設計更新操作場景
1)第一個session中嘗試將已有的“HOU”記錄更新為已有的記錄“Secooler”
sec@ora10g> update t set x = 'Secooler' where x = 'HOU';
2 rows updated.
2)第二個session中嘗試更新“Secooler”記錄行
sec@ora10g> update t set x = 'Good luck.' where x='Secooler';
特別注意,此時出現了鎖等待現象!此條語句無法完成。
因此也證實了若將具有點陣圖索引列的一類值更新為其他已有值資訊,的確會鎖定兩類值的全部記錄這個結論。
5.小結
透過這個實驗大家應該更加深入體會到點陣圖索引的鎖代價是非常大的。在考慮使用點陣圖索引時需要重點考慮這些因素。
Good luck.
secooler
11.05.03
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-694385/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- B-Tree索引與Bitmap點陣圖索引的鎖代價比較研究索引
- 【Bitmap Index】B-Tree索引與Bitmap點陣圖索引的鎖代價比較研究Index索引
- 點陣圖索引(Bitmap Index)——點陣圖索引與資料DML鎖定索引Index
- Oracle索引——點陣圖索引Oracle索引
- 點陣圖索引(Bitmap Index)——從B*樹索引到點陣圖索引索引Index
- 點陣圖索引.sql索引SQL
- 點陣圖索引(Bitmap Index)——索引共用索引Index
- Oracle-點陣圖索引Oracle索引
- 【基礎知識】索引--點陣圖索引索引
- 【索引】Bitmap點陣圖索引與普通的B-Tree索引鎖的比較索引
- oracle點陣圖索引對DML操作的影響Oracle索引
- oracle 點陣圖索引(bitmap index)Oracle索引Index
- 點陣圖索引:原理(BitMap index)索引Index
- 點陣圖索引(bitmap-index)索引Index
- 點陣圖索引的工作原理 - Richard索引
- Python點陣圖索引學習Python索引
- bitmap index點陣圖索引系列(一)Index索引
- B樹索引和點陣圖索引的結構介紹索引
- 關於ORACLE點陣圖索引內部淺論Oracle索引
- zt_深入理解bitmap index點陣圖索引Index索引
- 使用點陣圖連線索引優化OLAP查詢索引優化
- 使用點陣圖連線索引最佳化OLAP查詢索引
- 點陣圖
- 點陣圖索引導致的會話阻塞問題(p7)索引會話
- MySQL點陣圖索引解決使用者畫像問題MySql索引
- 使用點陣圖索引和星形轉換優化OLAP查詢索引優化
- 使用點陣圖選單項——建立點陣圖 (轉)
- 點陣圖排序排序
- 關於點陣圖索引的split及bitmap to rowid實現問題索引
- 【筆記】Oracle B-tree、點陣圖、全文索引三大索引效能比較及優缺點彙總筆記Oracle索引
- 在VC中自建操作BMP點陣圖檔案的類 (轉)
- 使用點陣圖選單項——點陣圖選單項例項 (轉)
- PHP 文字生成點陣圖PHP
- Redis 應用-點陣圖Redis
- 可寫點陣圖(WriteableBitmap)
- 點陣圖字型匯入
- 使用點陣圖選單項——設定點陣圖型別標記 (轉)型別
- 如何優雅地使用Redis之點陣圖操作Redis