Какой эффект имеет предупреждение «разделить таблицу изменений»? - PullRequest
0 голосов
/ 11 февраля 2019

Я использую синхронизатор 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 Ответ

0 голосов
/ 11 февраля 2019

Почему он разделяет оператор

В TiDB несколько DDL должны выполняться один за другим.Если вы выполните один запрос с muti DDL (например, изменив несколько столбцов в одном запросе) в исходной версии MySQL, он будет разделен на несколько запросов (один запрос только с одним DDL) в Syncer, а затем выполнен в TiDB.

Как это влияет на мою схему или данные tidb

Эффект запроса не изменится так же, как выполнение нескольких запросов один за другим, если ваш исходный запрос объединяет несколько DDL.Фактически, вы можете воспринимать это предупреждение как info .

...