群讨论--函数索引 -位图索引 -预防死锁
来源:互联网 发布:百度网盘无法连接网络 编辑:程序博客网 时间:2024/05/29 14:43
1)函数索引 2)位图索引 3)预防死锁。
1)select * from T_SYS_LOG t where to_char(created_time,'yyyy-mm-dd')='2012-09-28'
假如在created_time上建立了索引,则上述语句一定用不到索引。
create index IX_CREATED_TIME_SYSLOG on T_SYS_LOG (CREATED_TIME);--这是原来的索引
create index IX_CREATED_TIME_SYSLOG on T_SYS_LOG (to_char(created_time,'yyyy-mm-dd')); --函数索引。
NULL走索引
create index t_ind on t(column_name,0);
1)select * from T_SYS_LOG t where to_char(created_time,'yyyy-mm-dd')='2012-09-28'
假如在created_time上建立了索引,则上述语句一定用不到索引。
create index IX_CREATED_TIME_SYSLOG on T_SYS_LOG (CREATED_TIME);--这是原来的索引
create index IX_CREATED_TIME_SYSLOG on T_SYS_LOG (to_char(created_time,'yyyy-mm-dd')); --函数索引。
NULL走索引
create index t_ind on t(column_name,0);
2)位图索引语法 create bitmap index bix_gendar_student on student(gendar);
select * from student s where s.gendar='MALE';--会高效利用上位图索引。普通b tree索引在这里不适用。
3)死锁问题是很多应用设计或实现不良造成的。例如:
update a set c=c1 where ...;
update b set c=c2 where ...;
update a set c=c3 where ...;
commit;
--这种语句出现在大并发的应用中,你就等死...锁吧。
update a set c=c1 where ...;
update b set c=c2 where ...;
update a set c=c3 where ...;
commit;
--这种语句出现在大并发的应用中,你就等死...锁吧。
改进后:
update a set c=c1 where ...;
update a set c=c3 where ...;
update b set c=c2 where ...;
commit;
update a set c=c1 where ...;
update a set c=c3 where ...;
update b set c=c2 where ...;
commit;
死锁会导致程序挂起。这是dba首先应该去看alert.log.然后通过sql捕获死锁
v$lock
导致死锁的头号原因是外键未加索引,第二个原因是表上的位图索引遭到并发更新。
q1 如果更新了父表的主键(倘若遵循关系数据库的原则,即主键应当是不可变的,这种情况就很少见),由于外键上没有索引,所以子表会被锁住;
q2 如果删除了父表中的一行,整个子表也会被锁住(由于外键上没有索引)。
第一个原因是因为外键未加索引意味着关联的外键表无法利用索引,就需要做全表扫描,效率降低了,增加了资源占用时间;
第二个不用多说,并发更新相同的数据行通常都会发生死锁
v$lock
导致死锁的头号原因是外键未加索引,第二个原因是表上的位图索引遭到并发更新。
q1 如果更新了父表的主键(倘若遵循关系数据库的原则,即主键应当是不可变的,这种情况就很少见),由于外键上没有索引,所以子表会被锁住;
q2 如果删除了父表中的一行,整个子表也会被锁住(由于外键上没有索引)。
第一个原因是因为外键未加索引意味着关联的外键表无法利用索引,就需要做全表扫描,效率降低了,增加了资源占用时间;
第二个不用多说,并发更新相同的数据行通常都会发生死锁
- 群讨论--函数索引 -位图索引 -预防死锁
- 位图索引引发的阻塞与死锁
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- 位图索引
- jsp、java、url传值写二级页面
- hive效率优化
- Ubuntu12.04 + 虚拟机VMware 9 + Secure CRT + EditPlus 本地C++开发环境搭建
- 是一坨屎还是一堆养分,取决于你所在的位置
- 【揭秘CPU占用率高的原因】
- 群讨论--函数索引 -位图索引 -预防死锁
- dstat的使用
- maven 配置篇 之 settings.xml
- 1130 - Host ‘win7' is not allowed to connect to this mysql server
- Activity的跳转与传值
- The resource is not on the build path of a PHP project
- 使用maven2 进行团队配置
- 对控制反转/依赖注入的理解
- oracle & 和 ' 特殊字符处理