|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
Идея: для уменьшения потребления памяти мускулем решил сконвертировать все таблицы InnoDB в MyISAM, после чего запретить использование InnoDB в my.cf Сделал дамп базы, преобразовал его командой: Код: sql 1.
потом пытаюст импротировать дамп в очищенную базу и получаю ошибку: Код: sql 1.
Гуглю что это. Пишут, что превышена длина ключа, советуют или уменьшить её, поменяв, например, типы полей с varchar(255) на varchar(128), это мне не подходит, пробовал, часть таблиц поменял, но есть там одна, в которой уже нечего уменьшать. Ещё советуют поменять кодировку с utf8 на другую, это тоже не подходит, у меня база используется Drupal и там необходимо использовать таблицы utf8mb4. Подошло бы решение поднять максимальную длину ключа с 1000 до 2000, но я никак не нагуглю как это сделать через my.cf. Подскажите это вообще возможно или это жёсткое ограничение таблиц MyISAM, которое не обойти? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2018, 12:44 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
sunny1983для уменьшения потребления памяти мускулем решил сконвертировать все таблицы InnoDB в MyISAMОчень, мягко говоря, странная идея. Обычно для этого используют настройки расхода памяти . sunny1983запретить использование InnoDBВ современных версиях в InnoDB хранится словарь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2018, 12:52 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
https://dev.mysql.com/doc/refman/8.0/en/create-index.html The prefix length limit is 3072 bytes for InnoDB tables that use the DYNAMIC or COMPRESSED row format. For MyISAM tables, the prefix length limit is 1000 bytes.Вот поэтому и не влезает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2018, 13:03 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
miksoftВ современных версиях в InnoDB хранится словарь. Использую версию mysql-community-5.7 miksoftОчень, мягко говоря, странная идея. Обычно для этого используют настройки расхода памяти. Ну если бы у меня была уверенность правильная эта идея или нет, я бы не спрашивал. Рассуждения были такими, что раз MySQL использует отдельные настройки расхода памяти для таблиц MyISAM: key_buffer_size и max_heap_table_size и отдельные для InnoDB: innodb_buffer_pool_size и innodb_buffer_pool_instances, то отключение одного из типов таблиц как раз позволит потребление памяти заметно уменьшить. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 12:25 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
sunny1983для таблиц MyISAM: key_buffer_size и max_heap_table_sizemax_heap_table_size не привязан к MyISAM. Более того, это лишь максимальный предел, если этот буфер для выполнения запроса не нужен, то память под него либо не выделяется, либо выделяется по-минимуму. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 15:30 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
sunny1983превышена длина ключа, советуют или уменьшить её, поменяв, например, типы полей с varchar(255) на varchar(128), это мне не подходит,Почему? В базе есть значения в 255 символов? Если нет, то можно немного уменьшить, например до 250. По идее, этого должно хватить, если это поле единственное в ключе. Ну или использовать префикс примерно того же размера - 250. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2019, 15:43 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
miksoftПочему? В базе есть значения в 255 символов? Если нет, то можно немного уменьшить, например до 250. По идее, этого должно хватить, если это поле единственное в ключе. Ну или использовать префикс примерно того же размера - 250. Ну пару таблиц я поправил таким способом, рассудив что значения полей aid и cid вряд ли будут длиннее. А вот с такой таблицей вряд ли что можно сделать: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2019, 11:50 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
sunny1983А вот с такой таблицей вряд ли что можно сделать:Надо разбираться детальнее. Во-первых, попытаться ужать размер полей. Например, что за sid, которому нужно 64 символа для хранения? Может, можно перейти на меньший размер и в байтах? Какие самые длинные значения бывают в полях `sid`,`obj`,`name` ? Во-вторых, можно попробовать использовать префиксы при указании первичного ключа так, чтобы сумма их длин не превышала 1000 байт. Зависит от фактического наполнения этих полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2019, 12:36 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
sunny1983 Код: sql 1. 2. 3. 4. 5.
P.S. Но за такое архитектора БД надо увольнять без выходного пособия. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2019, 12:38 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
miksoftP.S. Но за такое архитектора БД надо увольнять без выходного пособия. Вот я не думаю, что в команде разработки CMS, которая входит в top5 бесплатных CMS, дураки сидят. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2019, 12:43 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
sunny1983miksoftP.S. Но за такое архитектора БД надо увольнять без выходного пособия. Вот я не думаю, что в команде разработки CMS, которая входит в top5 бесплатных CMS, дураки сидят.Во-первых, это таблица не из ядра CMS, а из одного из многочисленных модулей. А там за всеми не уследишь. Во-вторых, из top5 никак не следует, что там нет дураков. Я вот нашел, кто индекс превратил в первичный ключ - https://www.drupal.org/project/ctools/issues/504286 А вот кто придумал такой индекс - не нашел. Судя по отсутствию отсылок к типу движка, видимо, еще тогда предполагалось, что будет использоваться InnoDB без вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2019, 13:08 |
|
Увеличить максимальную длину ключа в таблицах MyISAM
|
|||
---|---|---|---|
#18+
sunny1983miksoftP.S. Но за такое архитектора БД надо увольнять без выходного пособия. Вот я не думаю, что в команде разработки CMS, которая входит в top5 бесплатных CMS, дураки сидят. В друпале-то? У меня для тебя плохие новости. Но, если подходить с точки зрения "Вот я не думаю, что в команде разработки CMS, которая входит в top5 бесплатных CMS, дураки сидят.", то незачем трогать тип движка таблиц, раз его выбрали разработчики. MyISAM не подерживает транзакции и блокируется по любому чиху, у тебя есть 100% уверенность, что ничего не сломается из-за этого? Оптимизации расходования памяти надо проводить настройками, а не отключением нормального движка и заменой его на более ущербный. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2019, 18:32 |
|
|
start [/forum/topic.php?fid=47&fpage=41&tid=1829382]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 297ms |
total: | 437ms |
0 / 0 |