Spec-Zone .ru
спецификации, руководства, описания, API
|
Каждая таблица имеет .frm
файл, который содержит табличное определение. Сервер
использует следующее выражение, чтобы проверить часть информации таблицы, хранившей в файле против верхнего
предела 64 Кбит:
if (info_length+(ulong) create_fields.elements*FCOMP+288+ n_length+int_length+com_length > 65535L || int_count > 255)
Часть информации, хранившей в .frm
файл, который проверяется по выражению, не
может вырасти вне предела 64 Кбит, так, если табличное определение достигает этого размера, больше столбцов не
может быть добавлено.
Соответствующие факторы в выражении:
info_length
пространство, необходимое для "экранов". Это связывается с наследием
MySQL Unireg.
create_fields.elements
число столбцов.
FCOMP
17.
n_length
полная длина всех имен столбцов, включая один
байт за имя как разделитель.
int_length
связывается со списком значений для ENUM
и SET
столбцы. В этом контексте "интервал"
не означает "целое число". Это означает
"интервал", термин, который обращается
все вместе к ENUM
и SET
столбцы.
com_length
полная длина комментариев столбца.
У выражения, только описанного, есть несколько импликаций для разрешенных табличных определений:
Используя долгие имена столбцов может уменьшить максимальное количество столбцов,
как может включение ENUM
или SET
столбцы, или использование комментариев столбца.
Таблица может иметь не больше, чем 255 уникальный ENUM
и SET
определения. Столбцы с идентичными списками элемента считают тем же
самым против этого limt. Например, если таблица содержит эти два столбца, они рассчитывают как один (не
два) к этому пределу, потому что определения идентичны:
e1 ENUM('a','b','c')e2 ENUM('a','b','c')
Сумма длины имен элементов в уникальном ENUM
и SET
определения рассчитывают к пределу 64 Кбит, так хотя теоретический
предел на числе элементов в данном ENUM
столбец 65 535, практический предел - меньше чем 3000.