日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究

發(fā)布時間:2025/1/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

通過以下實驗,來驗證Bitmap位圖索引較之普通的B-Tree索引鎖的“高昂代價”。位圖索引會帶來“位圖段級鎖”,實際使用過程一定要充分了解不同索引帶來的鎖代價情況。

1.為比較區(qū)別,創(chuàng)建兩種索引類型的測試表
1)在表t_bitmap上創(chuàng)建位圖索引
SEC@ora11g> create table t_bitmap (id number(10), name varchar2(10),sex varchar2(1));

Table created.

SEC@ora11g> create bitmap index t_bitmap_idx on t_bitmap(sex);

Index created.

2)在表t_btree上創(chuàng)建普通B-Tree索引
SEC@ora11g> create table t_btree (id number(10), name varchar2(10), sex varchar2(1));

Table created.

SEC@ora11g> create index t_btree_idx on t_btree(sex);

Index created.

2.每張表中初始化兩條數(shù)據(jù):“一個男孩”和“一個女孩”
注釋:
M - Male - 表示男孩;
F - Femail - 表示女孩。

1)初始化數(shù)據(jù)t_btree表數(shù)據(jù)
SEC@ora11g> insert into t_btree values (1, 'Secoooler', 'M');

1 row created.

SEC@ora11g> insert into t_btree values (2, 'Anna','F');

1 row created.

2)初始化數(shù)據(jù)t_bitmap表數(shù)據(jù)
SEC@ora11g> insert into t_bitmap values (1, 'Secoooler', 'M');

1 row created.

SEC@ora11g> insert into t_bitmap values (2, 'Anna','F');

1 row created.

SEC@ora11g> commit;

Commit complete.

3)查看初始化之后的結(jié)果
(1)t_btree表中包含兩條數(shù)據(jù)
SEC@ora11g> select * from t_btree;

??????? ID NAME?????? S
---------- ---------- -
???????? 1 Secoooler? M
???????? 2 Anna?????? F

(2)t_bitmap表中包含兩條數(shù)據(jù)
SEC@ora11g> select * from t_bitmap;

??????? ID NAME?????? S
---------- ---------- -
???????? 1 Secoooler? M
???????? 2 Anna?????? F

3.在兩個不同的session中,對具有普通B-Tree索引表t_btree演示插入、修改和刪除“男孩”數(shù)據(jù)
第一個session中的插入后不要提交
SEC@ora11g> insert into t_btree values (3, 'Andy', 'M');

1 row created.

第二個session中插入同樣的狀態(tài)數(shù)據(jù),可以看到,插入、修改和刪除均能夠成功完成
SEC@ora11g> insert into t_btree values (4, 'Tutu', 'M');

1 row created.

SEC@ora11g> update t_btree set sex='M' where id=2;

1 row updated.

SEC@ora11g> delete from t_btree;

2 rows deleted.

4.在兩個不同的session中,對具有Bitmap位圖索引表t_bitmap演示插入、修改和刪除“男孩”數(shù)據(jù)
1)第一個session中的插入后不要提交
SEC@ora11g> insert into t_bitmap values (3, 'Andy', 'M');

1 row created.

2)第二個session中對男孩數(shù)據(jù)進行處理,可以看到,只要操作信息中涉及到位圖索引列的插入、修改和刪除均無法完成!!
(1)插入測試
當(dāng)插入數(shù)據(jù)涉及位圖索引列“sex”字段時,是無法完成的。
SEC@ora11g> insert into t_bitmap values (4, 'Tutu', 'M');
問題出現(xiàn)了:出現(xiàn)了“鎖等待”停滯不動的現(xiàn)象!

當(dāng)插入數(shù)據(jù)未涉及位圖索引列“sex”字段時,是可以完成的。
SEC@ora11g> insert into t_bitmap(id,name) values (4, 'Tutu');

1 row created.

SEC@ora11g> commit;

Commit complete.

(2)更新測試
此時第二個會話的測試數(shù)據(jù)內(nèi)容如下。
SEC@ora11g> select * from t_bitmap;

??????? ID NAME?????? S
---------- ---------- -
???????? 1 Secoooler? M
???????? 2 Anna?????? F
???????? 4 Tutu

當(dāng)更新位圖索引列“sex”字段值為“M”時,是無法完成的。
SEC@ora11g> update t_bitmap set sex='M' where id=1;

1 row updated.

此時成功,是因為第一行數(shù)據(jù)的sex值本身就是“M”。

SEC@ora11g> update t_bitmap set sex='M' where id=2;
問題出現(xiàn)了:出現(xiàn)了“鎖等待”停滯不動的現(xiàn)象!

SEC@ora11g> update t_bitmap set sex='M' where id=4;
問題出現(xiàn)了:出現(xiàn)了“鎖等待”停滯不動的現(xiàn)象!

另外,特別注意一下,如果更新的列不是位圖索引對應(yīng)的列,將不會受位圖段級索引鎖的限制。如下所示。
SEC@ora11g> update t_bitmap set name='Xu' where id=2;

1 row updated.

(3)刪除測試
當(dāng)刪除的數(shù)據(jù)包含位圖索引列“sex”字段值為“M”時,是無法完成的。
SEC@ora11g> delete from t_bitmap where id=1;
問題出現(xiàn)了:出現(xiàn)了“鎖等待”停滯不動的現(xiàn)象!
當(dāng)刪除表中的所有數(shù)據(jù)時,同樣的道理,也是不能刪除的。
SEC@ora11g> delete from t_bitmap;
問題出現(xiàn)了:出現(xiàn)了“鎖等待”停滯不動的現(xiàn)象!

5.小結(jié)
? 本文以對數(shù)據(jù)本身沖擊力最小的插入動作為例,演示了B-Tree和Bitmap索引的鎖代價。對于B-Tree索引來說,插入動作不影響其他會話的DML操作;但是,對于Bitmap索引來說,由于是索引段級鎖,會導(dǎo)致與操作列值相關(guān)的內(nèi)容被鎖定(文中提到的“M”信息)。進一步,對于更新動作來說,

? 產(chǎn)生上面現(xiàn)象的原因:
? 位圖索引被存儲為壓縮的索引值,其中包含了一個范圍內(nèi)的ROWID,因此ORACLE必須針對一個給定值鎖定所有范圍內(nèi)的ROWID,不支持行級別的鎖定。
? 換一種描述方法:使用位圖索引時,一個鍵指向多行(成百上千),如果更新一個位圖索引鍵,會同時將其他行對應(yīng)位圖索引字段進行鎖定!

? 較之B-Tree索引優(yōu)點:
? 位圖以一種壓縮格式存放,因此占用的磁盤空間比B-Tree索引要小得多

? 較之B-Tree索引缺點:
? 這種鎖定的代價很高,會導(dǎo)致一些DML語句出現(xiàn)“鎖等待”,嚴(yán)重影響插入、更新和刪除的效率,對于高并發(fā)的系統(tǒng)不適用。

? 位圖索引使用原則:
? 位圖索引主要用于決策支持系統(tǒng)或靜態(tài)數(shù)據(jù),不支持索引行級鎖定。
? 位圖索引最好用于低cardinality列(即列的唯一值除以行數(shù)為一個很小的值,接近零),例如上面的“性別”列,列值有“M”,“F”兩種。在這個基本原則的基礎(chǔ)上,要認(rèn)真考慮包含位圖索引的表的操作特點,如果是并發(fā)操作高的系統(tǒng),不適合使用位圖索引!

轉(zhuǎn):http://blog.itpub.net/519536/viewspace-611296/

轉(zhuǎn)載于:https://www.cnblogs.com/andy6/p/5766934.html

總結(jié)

以上是生活随笔為你收集整理的【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品国产污污免费网站入口 | 荒野求生21天去码版网站 | 91精品视频一区二区三区 | 一级黄色在线 | 成人av专区 | 精品欧美 | 人日人视频 | 亚洲精选在线 | 国产精品探花在线观看 | 全国探花| 中文在线字幕免费观 | 欧美日韩生活片 | 日韩精品一线二线三线 | 中文字幕在线观看视频一区 | 最新超碰 | 成人激情视频在线观看 | 亚洲美女色 | 91av不卡 | 中文字幕在线观看的网站 | 免费黄网站在线观看 | 欧美激情va永久在线播放 | 四虎国产视频 | 久久久久久99精品 | 91麻豆国产视频 | 在线视频97 | 日本免费一二区 | 欧洲成人免费视频 | 蜜臀99久久精品久久久久久软件 | www.男人的天堂.com | 熟女视频一区二区三区 | 91黄视频在线观看 | 天天干天天插天天射 | babes性欧美69| www.五月天婷婷 | 国产精品久久久久久亚洲 | 国产午夜av | 欧美一区二区三区影视 | 亚洲色成人www永久网站 | 久久综合伊人77777麻豆 | 污污网站在线 | 精品国产97 | 综合成人 | 色综合久久久久综合体桃花网 | 亚洲视频日韩 | 成人欧美一区二区三区黑人免费 | 亚洲最大成人综合网 | 黄91在线观看 | 日本免费不卡视频 | 欧美精品 在线观看 | 国产午夜精品久久久 | 亚洲成人黄色在线 | 国产视频二区 | 欧美绿帽交换xxx | 亚洲永久视频 | 伊人久久香 | 黄色大片网站在线观看 | 玩弄白嫩少妇xxxxx性 | 黄色av成人| 国产激情视频在线 | 亚洲三级中文字幕 | 激情文学综合网 | 亚洲精品www. | 一区视频在线 | 日韩欧美xxx| 日本美女黄色 | 精品国产无码AV | 97夜夜操| 喷水了…太爽了高h | 插我舔内射18免费视频 | 久久久久久久久久艹 | 韩日毛片 | 亚洲资源站 | 捆绑无遮挡打光屁股调教女仆 | 日韩二区在线观看 | 国内偷拍精品视频 | 天天网综合 | 欧美自拍色图 | 免费成人国产 | 亚洲人成电影在线 | 亚洲福利二区 | 天天操精品 | 欧美黄色a视频 | 免费在线观看www | 国产福利片在线 | 国内精品在线播放 | 久久久久麻豆v国产精华液好用吗 | 久啪视频 | 制服丝袜第一页在线观看 | 天天爽夜夜爽人人爽 | 真人一及毛片 | 一个色在线视频 | 女同vk| 青青操av在线| 色精品视频 | 国产色网站 | 国产精品3 | 成人免费看片网站 | 人妖性生活视频 | 小明天天看 |