Hot Index Creation
TokuDB allows you to add indexes to an existing table and still perform inserts and queries on that table while the index is being created.The
ONLINE
keyword is not used. Instead, the value of the tokudb_create_index_online
client session variable is examined. More information is available in TokuDB Variables.
Hot index creation is invoked using the
CREATE INDEX
command after setting tokudb_create_index_online=on
.Here's an example:
SET tokudb_create_index_online=ON; Query OK, 0 rows affected (0.00 sec) CREATE INDEX index table (field_name);
Alternatively, using the ALTER TABLE
command for creating an index will create the index offline (with the table unavailable for inserts or queries), regardless
of the value of tokudb_create_index_online
. The only way to hot create an index is to use the CREATE INDEX
command.Hot creating an index will be slower than creating the index offline, and progress depends how busy the mysqld server is with other tasks. Progress of the index creation can be seen by using the
SHOW PROCESSLIST
command (in another client). Once the index creation completes, the new index will be used in future query plans.If more than one hot
CREATE INDEX
is issued for a particular table, the indexes will be created serially. An index creation that is waiting for another to
complete will be shown as Locked in SHOW PROCESSLIST
. We recommend that each CREATE INDEX
be allowed to complete before the next one is started.