Стратегия разделов для MySQL 5.5 (InnoDB) - PullRequest
1 голос
/ 25 ноября 2011

Попытка реализовать стратегию секционирования для таблицы MySQL 5.5 (InnoDB), и я не уверен, что мое понимание верно или если мне нужно изменить синтаксис при создании раздела.

Таблица "Яблоко" имеет 10 рядов мельниц ... Столбцы от "А" до "Н" ПК - столбцы «А», «В» и «С»

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

Я дал эту команду: ALTER TABLE Apple РАЗДЕЛЕНИЕ КЛЮЧОМ (A);

После просмотра информации о разделе с помощью этой команды: ВЫБЕРИТЕ PARTITION_NAME, TABLE_ROWS ОТ INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'Apple';

Я вижу, что все данные находятся на разделе p0

Я ошибаюсь, думая, что MySQL собирался автоматически разбивать разделы на группы по 2 миллиона?

Нужно ли было указывать количество разделов в команде Alter?

Я надеялся, что это создаст группы из 2 миллионов строк в разделе, а затем создаст новый раздел по мере поступления новых данных с уникальным значением для столбца «A».

Извините, если это было слишком многословно. Спасибо - ДжеффСпиколи

1 Ответ

1 голос
/ 13 января 2012

Да, вам нужно указать количество разделов (я полагаю, по умолчанию было создано 1 раздел).Секция по KEY использует функцию внутреннего хеширования http://dev.mysql.com/doc/refman/5.1/en/partitioning-key.html, поэтому секция выбирается не по значению столбца, а по хешу, вычисленному из него.Хеш-функции возвращают один и тот же результат для одного и того же ввода, так что да, все строки с одинаковым значением будут находиться в одном разделе.

Но, возможно, вы захотите разделить на RANGE, если хотите иметь возможность DROP PARTITION (потому что если разделить с помощью KEY, вы знаете только, что строки разделены равномерно в разделах, но вы много разных значений в конечном итоге в одном разделе).

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