MySQL комментирует оператор alter table - PullRequest
0 голосов
/ 09 октября 2018

У меня есть таблица, которая пока пуста, но будет загружена сотнями миллионов записей.Перед тем, как выполнить эту загрузку, я хочу создать несколько разделов в таблице, чтобы повысить производительность запросов и впоследствии разрешить более эффективное удаление (просто обрезать весь раздел).

Используемый код изменения таблицы:

ALTER TABLE `TABLE_NAME` 
 PARTITION BY RANGE (YEAR(DATE_FIELD)) (
 PARTITION y1 VALUES LESS THAN (2017),
 PARTITION y2 VALUES LESS THAN (2018),
 PARTITION y3 VALUES LESS THAN (2019),
 PARTITION ymax VALUES LESS THAN (2050)
 );

Когда я запускаю код в MySQL Workbench, он работает без ошибок.когда я проверяю таблицу, разделы не отображаются в списке: enter image description here

, а в автоматически сгенерированном DDL раздел закомментируется:

CREATE TABLE `TABLE_NAME` (
  `field1` decimal(5,2) DEFAULT NULL,
  `field2` decimal(5,2) DEFAULT NULL,
  `DATE_FIELD` date NOT NULL,
  `field3` float DEFAULT NULL,
  `field4` float DEFAULT NULL,
  `field5` datetime DEFAULT NULL,
  `field6` varchar(50) NOT NULL,
  PRIMARY KEY (`field6`,`DATE_FIELD`),
  KEY `dd_IDX1` (`DATE_FIELD`,`field1`,`field2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE (year(`DATE_FIELD`))
(PARTITION y1 VALUES LESS THAN (2017) ENGINE = InnoDB,
 PARTITION y2 VALUES LESS THAN (2018) ENGINE = InnoDB,
 PARTITION y3 VALUES LESS THAN (2019) ENGINE = InnoDB,
 PARTITION ymax VALUES LESS THAN (2050) ENGINE = InnoDB) */

Я не могу понять, почему это так.Я загрузил несколько фальшивых записей, чтобы посмотреть, не является ли причиной недостаток данных.Я также попытался закомментировать разделы и создал новую таблицу без удачи.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

/*!50100 ... */ - это особый тип комментариев.Он говорит: «Если версия 5.1.0 или более поздняя, ​​включите текст как реальный; в противном случае оставьте его просто комментарием.

Так что, если вы запустите его на сервере 5.0, у него не будет разделов.(В 5.0 не было реализовано PARTITIONs.) Но в 5.1 и более поздних версиях будет.

Вы увидите изменения этого в выводе mysqldump.

Между тем, вы, вероятно, обнаружите, что получаетенет производительности при использовании PARTITIONing. На что вы надеялись?

0 голосов
/ 10 октября 2018

После дальнейших исследований я собираюсь объяснить тот факт, что разделы не отображаются на экране разделов при щелчке Table Inspector на ошибку в GUI.Когда вы выбираете Alter Table и смотрите на вкладку разделения, они появляются там.Кроме того, при проверке информационной таблицы PARTITIONS там также отображаются разделы.См. Ответ Рика Джеймса, чтобы понять синтаксис комментария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...