|
|
|
частичное InnoDB_file_per_table?
|
|||
|---|---|---|---|
|
#18+
MySQL 5.161, часть таблиц MyISAM, основная часть InnoDB. InnoDB_file_per_table=false. В виду специфики софта основные (и при этом самые большие) таблицы очень сильно фрагментированы. А в виду их достаточно больших размеров (50-150гигов каждая, включая индексы), количества индексов (до 8 штук на каждую) и круглосуточной работы БД регулярный OPTIMIZE всех таблиц сделать проблематично. Фрагментация выливается в общую загруженность дисковой полки с БД и другие беды. Насколько корректна идея включить InnoDB_file_per_table, перестроить таблицы, где проводится больше всего циклов удаления и вставки (теперь они будут каждая в своем файле), а таблицы-справочники и таблицы MyISAM оставить в основном табличном пространстве? Не будет ли снижение быстродействия или еще какой беды от такой частичной разборки? И в каком варианте тогда оставлять InnoDB_file_per_table, true или false, после окончания перевода таблиц в отдельные файлы? Есть ли зависимость быстродействия от текущего значения этого параметра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 15:59:08 |
|
||
|
частичное InnoDB_file_per_table?
|
|||
|---|---|---|---|
|
#18+
Aliced, насколько понял я, эта настройка для движка иннодб вцелом.. либо все хором, либо по одной. то что тебе надо для твоей задачи, так это понять, что нету никакой фрагментации файла, ибо файл иннодб не уменьшаеться... задай со старта его с запасом, выключи мускл, дефрагментируй, и будет тебе счастье (если будет) - ввиде цельного файла *.ибд а что касаеться самих записей, то таки да - тут оптимайз тейбл, но не думаю что он уж очень чтото даёт. дело в том, насколько понимаю я, выгоду получиться в каких случаях. винчестер как мы знаем, разбит на кластеры, и работа идёт по кластерно. обычно размер кластера 4Кб, тоесть существенно больше чем длина записи(поля блоб, текст, и подобная бабуйня храняться отдельно, вконце области данных таблицы...аля как будто таблица справочник) итого получаем, если частые запросы типо выбрать запись с ПервичнымКлючом ПК=1000 ИЛИ ПК=2000 ИЛИ ПК = 10000 то эта оптимизация тебе ничего не даст... один чорт надо будет трижды щитать с винчестера чтото. а вот если у тебя частые чтения(обновления) для последовательных записей по ПК(имено так они располагаються после оптимизации) то поможет. мускл как бы не дурак, и если он увидит что тебе надо записи с ПК 1,2,3,4 и все они попадают в один кластер, он не будет 4 раза читать одно и тоже место с шдд(даже если эти четыре записи нужны одновременно но 4 разным запросам), и вырезать нужную часть, - он один раз считает, и для каждого из 4 запросов вырежет из этой цепочки нужный кусок. --вцелом, польза при частых выборках списка записей, насколько не скажу...у меня таблицы на 300Гигов, и я не думал даже оптимизацию им делать возможно будет полезно портиционирование данных в таблицах. всё от специфики задачи зависит, так что давай...делись. Раскажи свою душещипательную историю :) ЗЫ вопрос автору - а как ты получил эти таблицы??? у меня например проблема - как быстро сгенерировать таблицу подчинённую с индексами и внешними ключами на милиард записей(300 гигов получился файл, без ключей внешних). ибо если ключи есть - медлено, ибо перестройка индекса постоянная, если ключи потом добавлять - мускл файл пересоздаёт и очень медленно - счас за сутки гдето 3-4гига обрабатываеться(рост нового файла что он создаёт) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 16:41:08 |
|
||
|
частичное InnoDB_file_per_table?
|
|||
|---|---|---|---|
|
#18+
автора таблицы-справочники и таблицы MyISAM оставить в основном табличном пространстве вы сами-то то поняли что сказали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 16:55:07 |
|
||
|
частичное InnoDB_file_per_table?
|
|||
|---|---|---|---|
|
#18+
ScareCrowвы сами-то то поняли что сказали? Увы, при совершенном понимании предмета темы данной темы не было бы. И что я крамольного сказала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 17:33:20 |
|
||
|
частичное InnoDB_file_per_table?
|
|||
|---|---|---|---|
|
#18+
AlicedScareCrowвы сами-то то поняли что сказали? Увы, при совершенном понимании предмета темы данной темы не было бы. И что я крамольного сказала? автора таблицы-справочники и таблицы MyISAM увас типо счас таблицы иннодб справочники и майисам в одном файле? таблицы майисам храняться в отедльных файлах априори. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 17:55:43 |
|
||
|
частичное InnoDB_file_per_table?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453таблицы майисам храняться в отедльных файлах априори. Каюсь... Почему-то всегда думалось, что они в ибдата1... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 18:07:44 |
|
||
|
частичное InnoDB_file_per_table?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, >>у меня например проблема - как быстро сгенерировать таблицу подчинённую с индексами и внешними ключами на милиард записей(300 гигов получился файл, без ключей внешних). ибо если ключи есть - медлено, ибо перестройка индекса постоянная, если ключи потом добавлять - мускл файл пересоздаёт и очень медленно - счас за сутки гдето 3-4гига обрабатываеться(рост нового файла что он создаёт) Была и у меня такая проблема :) Мою версию Мускула ускорить удалось только капитальным уменьшением кол-ва данных. Были опробованы варианты: создавать и заливать таблицу отдельно, потом строить индексы, заливать и строить одновременно, строить индексы не все сразу, а по одному, делать все вышеперечисленное на движке MyISAM а потом преобразовывать в InnoDB. Infile-outfile тоже пробовала. Как ни странно звучит, время на любой из вариантов затрачивалось примерно одинаковое :) Кстати, еще один рабочий вариант-уменьшить кол-во индексов. Построение каждого следующего индекса занимает раза в полтора больше времени (у меня даже формула, полученная опытным путем, где-то валялась). Percona с этой задачей хорошо справляется, но у меня не Percona :( Теперь к моим баранам :) >>насколько понял я, эта настройка для движка иннодб вцелом.. либо все хором, либо по одной. ну почему? Какие таблицы перестроила, такие и в отдельные файлы пошли. Остальные остались. >>задай со старта его с запасом, выключи мускл, дефрагментируй, и будет тебе счастье (если будет) - ввиде цельного файла *.ибд не могу :( Процесс достаточно долгий, за одну ночь (даже если я ее выбью) не успею. >>возможно будет полезно портиционирование данных в таблицах проходили. По датам софт не поддерживает, дублирует данные. Другое распределение невостребовано. Да и таблицы сечас не такие большие, как раньше были. >> вопрос автору - а как ты получил эти таблицы??? есть ряд таблиц, куда круглосуточно попадают продажи с касс. Из этих таблиц ежедневно удаляются данные старше N-месяцев. Удаление идет по каждой кассе конкретно, то есть из одной таблицы последовательно запускается удаление данных нескольких десятков, если не сотен касс. Одновременно с удалением продолжают поступать свежие данные с касс. Размер ежедневно удаляемых данных не равен ежедневно добавляемым. >>то эта оптимизация тебе ничего не даст optimize table немного уменьшает время запросов к данной таблице. InnoDB_file_per_table- ожидаю, что уменьшится фрагментация. То есть в пределах одногь файла=таблицы фрагментация останется, если с ней не работать, а вот куски разных таблиц в ибдата1 уже перемешиваться не будут, и хотя бы индексы можно будет читать в один прием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2014, 18:19:40 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38672190&tid=1834655]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 292ms |

| 0 / 0 |
