oracle没有锁不能建立索引
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle没有锁不能建立索引相关的知识,希望对你有一定的参考价值。
oracle没有锁不能建立索引,oracle中添加索引的时候加入online在线方式创建索引,即使用online创建索引:CREATE INDEX 索引名 ON 表名(列名) online;
在线方式创建索引,锁的是行而非表,通过临时表进行索引的创建,所以不会影响DML操作,创建索引的速度慢一些
非在线方式创建索引,锁表,优先创建索引,此时DML都被阻塞,所以速度快。
mysql5.6版本开始支持在线创建--Online DDL
ALTER TABLE table_name ADD INDEX , indea_name ,ALGORITHM=INPLACE,LOCK=NONE
ALGORITHM指定创建或删除索引得算法,有以下几类 参考技术A Oracle数据库不支持锁定,因此无法建立索引。索引是一种数据结构,它可以帮助您快速查找数据库中的特定信息。索引可以提高查询的性能,因此它在查询中起着重要作用。Oracle数据库支持多种索引,包括B树索引、哈希索引、组合索引等。但是,由于Oracle数据库不支持锁定,因此无法建立索引。 参考技术B ALGORITHM=INPLACE
更优秀的解决方案,在当前表加索引,步骤:
1.创建索引(二级索引)数据字典
2.加共享表锁,禁止DML,允许查询
3.读取聚簇索引,构造新的索引项,排序并插
入新索引
4.等待打开当前表的所有只读事务提交
5.创建索引结束
ALGORITHM=COPY
通过临时表创建索引,需要多一倍存储,还有更多的IO,步骤:
1.新建带索引(主键索引)的临时表
2.锁原表,禁止DML,允许查询
3.将原表数据拷贝到临时表
4.禁止读写,进行rename,升级字典锁
5.完成创建索引操作
数据库小技能:Oracle基础之关系
文章目录
以上是关于oracle没有锁不能建立索引的主要内容,如果未能解决你的问题,请参考以下文章