ITPub博客

Bitmap的问题

原创 Linux操作系统 作者:oracle_ace 时间:2007-12-14 15:59:24 0 删除 编辑

今天工作中发现了产品部署在Oracle上的一个defect,由于在一个low cardinality建立了一个bitmap索引,由于程序对于这个列的修改过于频繁,导致数据库的性能下降。
我们都知道每个位图索引被分为多个bitmap segment,而对于位图索引的更新,其封锁粒度在bitmap segment一级(而不是在行),一个bitmap segment又会对应到多个数据行,这样对于频繁更新的表,位图索引就一定会提高发生锁阻塞的这种可能性,从而降低系统效率。

SQL> create bitmap index my_indx on student(name);

索引已创建。

SQL> update student set name='A' where id=1011;

已更新 1 行。

1 row updated.

另外一个session事务

SQL> update student set name='B' where id=1012;

该事务被阻塞。

位图索引的更新代价比较高,且易于发生锁阻塞,所以其比较适用于静态表,如DSS,而绝对不适用于OLTP系统。因此我在表中取消了这个位图索引,并且正在考虑如何修改应用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12361284/viewspace-598/,如需转载,请注明出处,否则将追究法律责任。

下一篇: dml_locks的参数
请登录后发表评论 登录
全部评论

注册时间:2007-12-10

  • 博文量
    284
  • 访问量
    783587