mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
0f90728bc0
Introduce the configuration option innodb_log_optimize_ddl for controlling whether native index creation or table-rebuild in InnoDB should keep optimizing the redo log (and writing MLOG_INDEX_LOAD records to ensure that concurrent backup would fail). By default, we have innodb_log_optimize_ddl=ON, that is, the default behaviour that was introduced in MariaDB 10.2.2 (with the merge of InnoDB from MySQL 5.7) will be unchanged. BtrBulk::m_trx: Replaces m_trx_id. We must be able to check for KILL QUERY even if !m_flush_observer (innodb_log_optimize_ddl=OFF). page_cur_insert_rec_write_log(): Declare globally, so that this can be called from PageBulk::insert(). row_merge_insert_index_tuples(): Remove the unused parameter trx_id. row_merge_build_indexes(): Enable or disable redo logging based on the innodb_log_optimize_ddl parameter. PageBulk::init(), PageBulk::insert(), PageBulk::finish(): Write redo log records if needed. For ROW_FORMAT=COMPRESSED, redo log will be written in PageBulk::compress() unless we called m_mtr.set_log_mode(MTR_LOG_NO_REDO).
37 lines
899 B
Text
37 lines
899 B
Text
SET GLOBAL innodb_log_optimize_ddl=OFF;
|
|
CREATE TABLE tz(id BIGINT PRIMARY KEY, i INT)
|
|
ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
|
INSERT INTO tz(id) select * from seq_1_to_10000;
|
|
CREATE TABLE tr(id BIGINT PRIMARY KEY, i INT)
|
|
ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
|
INSERT INTO tr(id) select * from seq_1_to_10000;
|
|
CREATE TABLE td(id BIGINT PRIMARY KEY, i INT)
|
|
ENGINE=InnoDB;
|
|
INSERT INTO td(id) select * from seq_1_to_10000;
|
|
CREATE PROCEDURE a()
|
|
BEGIN
|
|
ALTER TABLE tz ADD INDEX(i);
|
|
ALTER TABLE tr ADD INDEX(i);
|
|
ALTER TABLE td ADD INDEX(i);
|
|
END //
|
|
call a();
|
|
# shutdown server
|
|
# remove datadir
|
|
# xtrabackup move back
|
|
# restart server
|
|
DROP PROCEDURE a;
|
|
CHECK TABLE tz,tr,td;
|
|
Table Op Msg_type Msg_text
|
|
test.tz check status OK
|
|
test.tr check status OK
|
|
test.td check status OK
|
|
SELECT COUNT(*) FROM tz;
|
|
COUNT(*)
|
|
10000
|
|
SELECT COUNT(*) FROM tr;
|
|
COUNT(*)
|
|
10000
|
|
SELECT COUNT(*) FROM td;
|
|
COUNT(*)
|
|
10000
|
|
DROP TABLE tz,tr,td;
|