Какой эффект имеет предупреждение "разделить таблицу изменений"?
Я использую синхронизатор tidb для репликации данных из mysql в tidb. Но я не совсем понимаю значение предупреждения "будет разделять оператор таблицы".
Я только что выпустил простой запрос таблицы изменений ниже. Почему он разделяет оператор и как он влияет на мою схему или данные tidb.
ALTER TABLE `agg_url_base` ADD COLUMN `price` INT NULL AFTER `consumption`
Ниже приведены журналы синхронизации tidb.
2019/02/11 07:45:44 meta.go:135: [info] save position to file, binlog-name:mysql-bin.000153 binlog-pos:15852122 binlog-gtid:
2019/02/11 07:45:46 ddl.go:103: [warning] will split alter table statement: ALTER TABLE `agg_url_base` ADD COLUMN `price` INT NULL AFTER `consumption`
2019/02/11 07:45:46 ast.go:508: [info] spec &{node:{text:} Tp:2 Name: Constraint:<nil> Options:[] NewTable:<nil> NewColumns:[0xc0003616c0] OldColumnName:<nil> Position:0xc0005d10a0 LockType:0 Comment: FromKey: ToKey: PartDefinitions:[] Num:0}
2019/02/11 07:45:46 ddl.go:107: [warning] splitted alter table statement: [ALTER TABLE `agg_url_base` ADD COLUMN `price` int(11) NULL AFTER `consumption`]
2019/02/11 07:45:46 syncer.go:745: [info] [query]ALTER TABLE `agg_url_base` ADD COLUMN `price` INT NULL AFTER `consumption` [current pos](mysql-bin.000153, 15852977) [next pos](mysql-bin.000153, 15853214) [current gtid set] [next gtid set]<nil>
2019/02/11 07:45:46 syncer.go:784: [info] [ddl][schema]adn [start]USE `adn`; ALTER TABLE `agg_url_base` ADD COLUMN `price` int(11) NULL AFTER `consumption`;
2019/02/11 07:45:47 meta.go:135: [info] save position to file, binlog-name:mysql-bin.000153 binlog-pos:15853214 binlog-gtid:
2019/02/11 07:45:47 syncer.go:792: [info] [ddl][end]USE `adn`; ALTER TABLE `agg_url_base` ADD COLUMN `price` int(11) NULL AFTER `consumption`;
1 ответ
Почему это разделяет заявление
В TiDB несколько DDL должны выполняться один за другим. Если вы выполняете один запрос с muti DDL (как, например, изменение нескольких столбцов в одном запросе) в восходящем MySQL, он будет разделен на несколько запросов (один запрос только с одним DDL) в Syncer, а затем выполнен в TiDB.
Как это влияет на мою схему или данные TIDB
Эффект запроса не изменится так же, как выполнение нескольких запросов один за другим, если ваш исходный запрос объединяет несколько DDL. На самом деле, вы можете рассматривать это предупреждение как информацию.