|
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.