22.6.2 Ограничения по разбиению в зависимости от типов табличных движков
Следующие ограничения применяются к использованию типов табличных движков с пользовательским разбиением таблиц.
Движок MERGE. Пользовательское разбиение и движок MERGE несовместимы. Таблицы, использующие движок MERGE, не могут быть разбиени. Разбитые таблицы не могут быть объединены.
Движок FEDERATED. Разбиение FEDERATED таблиц не поддерживается; создание разбитых FEDERATED таблиц невозможно.
Движок CSV. Разбитые таблицы, использующие движок CSV, не поддерживаются; создание разбитых CSV таблиц невозможно.
Движок InnoDB. InnoDB внешние ключи и разбиение MySQL несовместимы. Разбитые InnoDB таблицы не могут иметь внешние ключи, а также столбцы, на которые ссылаются внешние ключи. InnoDB таблицы, имеющие или на которые ссылаются внешние ключи, не могут быть разбиты.
InnoDB не поддерживает использование нескольких дисков для подразделений. (Это в настоящее время поддерживается только MyISAM.)
Кроме того, ALTER
TABLE ... OPTIMIZE PARTITION не работает должным образом с разбитыми таблицами, использующими движок InnoDB. Для таких таблиц следует использовать ALTER TABLE ... REBUILD
PARTITION и ALTER TABLE ... ANALYZE
PARTITION. Для получения дополнительной информации см. Раздел 13.1.8.1, «Операции ALTER TABLE для разбиения».
Пользовательское разбиение и движок NDB (NDB Cluster). Разбиение по KEY (включая LINEAR KEY) — единственный тип разбиения, поддерживаемый для движка NDB. В обычных условиях в NDB Cluster невозможно создать таблицу NDB Cluster, используя какой-либо тип разбиения, кроме [LINEAR] KEY. Попытка сделать это завершается ошибкой.
Исключение (не для производства): Данное ограничение можно обойти, установив системную переменную new на узлах SQL NDB Cluster на значение ON. При этом следует учитывать, что таблицы, использующие типы разбиения, отличные от [LINEAR] KEY, не поддерживаются в производстве. В таких случаях вы можете создавать и использовать таблицы с типами разбиения, отличными от KEY или LINEAR KEY, но делаете это на свой страх и риск. Также следует учитывать, что данная функциональность теперь устарела и может быть удалена без предварительного уведомления в будущих версиях NDB Cluster.
Максимальное количество разделов, которое может быть определено для таблицы NDB, зависит от количества узлов данных и групп узлов в кластере, используемой версии программного обеспечения NDB Cluster и других факторов. Для получения дополнительной информации см. NDB и пользовательское разбиение.
Начиная с MySQL NDB Cluster 7.5.2, максимальный объем данных фиксированного размера, который может храниться в каждом разделе таблицы NDB, составляет 128 ТБ. Ранее это значение составляло 16 ГБ.
CREATE TABLE и ALTER
TABLE операторы, которые могли бы привести к тому, что таблица с пользовательским разбиением NDB не будет соответствовать одному или обоим из следующих двух требований, запрещены и приводят к ошибке:
Таблица должна иметь явный первичный ключ.
Все столбцы, указанные в выражении разбиения таблицы, должны быть частью первичного ключа.
Исключение. Если таблица с пользовательским разбиением NDB создается с пустым списком столбцов (то есть с использованием PARTITION BY KEY() или PARTITION BY
LINEAR KEY()), то явный первичный ключ не требуется.
Выбор раздела. Выбор раздела не поддерживается для таблиц NDB. Для получения дополнительной информации см. Раздел 22.5, «Выбор раздела».
Обновление разбитых таблиц. При выполнении обновления таблицы, разбитые по KEY и использующие любой другой движок, кроме NDB, необходимо создать дамп и загрузить их заново.
Один и тот же движок для всех разделов. Все разделы разбитой таблицы должны использовать один и тот же движок, и этот движок должен совпадать с движком всей таблицы. Кроме того, если движок не указан на уровне таблицы, то при создании или изменении разбитой таблицы необходимо выполнить одно из следующих действий:
Не указывать никакой движок ни для одного раздела или подраздела.
Указать движок для всех разделов или подразделов.
© 2025 Oracle
Licensed under the GPLv2 License.