alter index XX rebulid online 或者create index XXX on tableXX (ID) online
与不加online的相比,加了online的不阻塞DML。在大的系统中,如果不加online, index 是加不上去的,
并且会造成整个系统的问题。
原因如下:
piner介绍说:
他们加的锁的级别不一样,online是一个级别为2的RS锁,不阻塞级别为3的RX锁,也就是 dml时候加在表上的TM锁。
但是,阻塞大部分的DDL加在表上的X类型的TM锁
如果普通的create index,如果没有online,加的则是级别为4的S类型TM锁。这个会阻塞DML语句加在表上面的类型为RX的TM锁。所以,这个时候表锁都加不上,更不用行锁了,阻塞在表上面。
简单一句话:加 online时 :DDL锁 是有的,但是没有DML锁。不加 online ,DDL锁和DML锁都有
