オンラインインデックス処理(作成、リビルド、削除)

(8.0.22)
https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html


drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);


create index ind1 on tab1(col1) ALGORITHM=INPLACE;

alter table tab1 engine innodb , ALGORITHM=INPLACE, LOCK=NONE;

drop index ind1 on tab1 ALGORITHM=INPLACE;


※ALGORITHMは指定しない場合、下記順に選択されるため、指定しなくてもよい
INSTANT メタデータの変更のみ。DMLはブロックされない

INPLACE DMLはブロックされない

COPY DMLはブロックされる

※LOCKは指定しない場合、下記順に選択されるため、指定しなくてもよい
NONE 読み書き許可

SHARED 読みだ許可、書き不許可

EXCLUSIVE 読み書き不許可

結論として、MySQLの場合、ONLINE句の付与は気にしなくてよい

 

(19c)

drop table tab1 purge;
create table tab1(col1 int);
insert into tab1 values(1);
commit;

create index ind1 on tab1(col1) online;

alter index ind1 rebuild online;

drop index ind1 online;


※インデックスリビルドはEEエディションが必要

 

(13)

drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);

create index concurrently ind1 on tab1(col1);

reindex index concurrently ind1;

drop index concurrently ind1;

 

 

(2019)


drop table tab1;
create table tab1(col1 int);
insert into tab1 values(1);

create CLUSTERED index ind1 on tab1(col1) with( online=on );

alter index ind1 on tab1 rebuild with( online=on );

drop index ind1 on tab1 with( online=on );

create NONCLUSTERED index ind2 on tab1(col1) with( online=on );

alter index ind2 on tab1 rebuild with( online=on );

drop index ind2 on tab1 with( online=on );
drop index ind2 on tab1 ;


※オンラインで削除できるのは、クラスター化インデックスだけです。

※EEエディションが必要