【點陣圖索引】在點陣圖索引列上進行更新操作的鎖代價研究
點陣圖索引的特點是不支援行級鎖定,鎖代價很高,請參見文章《【實驗】【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 點陣圖索引(轉載)索引
- oracle點陣圖索引對DML操作的影響Oracle索引
- Python點陣圖索引學習Python索引
- 點陣圖索引的工作原理 - Richard索引
- 點陣圖
- MySQL點陣圖索引解決使用者畫像問題MySql索引
- ClickHouse 留存、路徑、漏斗、session 點陣圖 roaringbitmap 點陣圖最佳化Session
- MySQL點陣圖索引解決使用者畫像問題(簡化建立流程)MySql索引
- PHP 文字生成點陣圖PHP
- Redis 應用-點陣圖Redis
- 點陣圖字型匯入
- 可寫點陣圖(WriteableBitmap)
- 如何優雅地使用Redis之點陣圖操作Redis
- 如何利用散點圖矩陣進行資料視覺化矩陣視覺化
- PHP掃描圖片轉點陣 二維碼轉點陣PHP
- Android Bitmap(點陣圖)詳解Android
- 演算法-點陣圖排序演算法排序
- 點陣圖與ERP場景
- 代理模式+react+ 圖片佔點陣圖模式React
- 索引的知識要點與操作索引
- hash join構建點陣圖的理解
- VC 點陣圖按鈕CBitmapButton的使用
- 點陣圖(bitmap)原理以及實現
- layui圖片懶載入-loading佔點陣圖UI
- 尋找陣列的中心索引陣列索引
- 雜湊表擴充套件—點陣圖套件
- 高效壓縮點陣圖在推薦系統中的應用
- DM7 陣列索引陣列索引
- UITableView佔點陣圖的低耦合性設計UIView
- 點亮點陣以及點陣的影像顯示
- Oracle assm三級點陣圖結構解析OracleSSM
- Android實現二值點陣圖識別Android
- MySql 三大知識點——索引、鎖、事務!MySql索引
- DM8管理陣列索引陣列索引
- [每天進步一點點]mysql筆記整理(三):索引MySql筆記索引
- FreeType Glyph Conventions 翻譯(7)——FreeType點陣圖 Bitmaps
- Redis 精確去重計數 —— 咆哮點陣圖Redis
- MySQL索引的優缺點MySql索引
- 索引表和 ES 的一點點思考索引