Какое оптимальное кол-во таблиц в MySQL?

Тема в разделе "Базы данных", создана пользователем danneo, 24 июл 2012.

Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    У меня форум ipb и CMS стоят в одной базе. Получается более 200 таблиц. Хостер сказал, что таблицы из-за этого летят, нужно разнести по разным базам.
    Действительно много?
     
  2. Viodele

    Viodele Механик

    Administrator
    Регистр.:
    17 дек 2011
    Сообщения:
    114
    Симпатии:
    486
    Каждая отдельная таблица в представлении MySQL хранится в отдельном файле. Причин, по которым таблицы могли бы "лететь" - я лично не вижу. Если раскинуть по разным базам данных, то на файловом уровне вся разница сводится только к тому, что файлы таблиц просто будут находиться в двух разных папках. Посоветуйте хостеру немного почитать для начала мануалы по MySQL и научиться выдумывать более изощренные "отмазки".

    P.S. Все выше написанное действительно в том случае, если хостер не ограничил принудительно количество таблиц на одну базу для своих клиентов.
     
  3. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.377
    При использовании типа баз/таблиц InnoDB такая ситуация возможна при некоторых настройках БД.
    Если точнее, то для повышения производительности при таком типе таблиц достаточно часто изменяют хранилище ibdata* с единого на все базы (дефолтно) на разделенное (каждой InnoDB базе свой файл создается).
    Из за особенностей этого типа хранилищ это значительно снижает нагрузку на диск в ряде случаев, для хостеров это более чем актуально на мой взгляд. Если же при таком раскладе появляется одна большая база на несколько движков с высокой нагрузкой, то разделение ее на несколько меньших баз вполне оправдано.
    Тоесть, если у тебя твоя единая база такого типа, то на самом деле может иметь смысл разделить ее на 2 базы и хостер твой прав.
    Но если у тебя база MyISAM, разделение ничего не изменит и требования хостера по сути безосновательны.
    Посмотри на все таблицы в базе если там нет InnoDB но при этом сама база в InnoDB, то достаточно будет просто сдампить существующую базу, снести ее (или рядом создать новую сначала на всякий случай, типа не получится что-то) и новую сделать MyISAM и залить дамп в нее. Это тоже решит проблему. Если в самих таблицах присутствует InnoDB то чисто теоретически можно сменить их тип на MyISAM и сделать то, что в предидущем предложении посоветовал - вполне может решить траблу, но лучше если не занеш - не лезть и последовать совету хостера в этом случае.

    п.с. Конверт базы "на лету" из InnoDB в MyISAM проблему не решит, а при значительном размере базы положит хост мускула "на раз-два" и хостер тебя вполне обосновано натянет за это. Так что толкьо через дамп и пересоздание базы сразу в нужном типе решается все это.

    п.п.с. А вообще первый раз вижу, чтоб количеством таблиц мерили нагрузку на базу. Какого она у тебя размера в дампе выходит?
     
    Viodele нравится это.
  4. Viodele

    Viodele Механик

    Administrator
    Регистр.:
    17 дек 2011
    Сообщения:
    114
    Симпатии:
    486
    В том то и дело, что IP-бурда по дефолту создает табы MyISAM(на сколько я помню).
     
  5. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.377
    Достаточно 1 таблицы в базе, чтоб у базы появился такой "хвостик". На сколько я помню, эта фигня старая и известная трабла в спорах против мускула и козырь например в марии. Но могу и ошибаться.
    Я очень давно не ставил сам руками мускул, на днях исправлю это недоразумение и посмотрю специально, какой тип таблиц он создаст.
    В портативном сервере XAMPP по дефолту InnoDB точно и его еще и хрен отключиш там.
     
  6. Viodele

    Viodele Механик

    Administrator
    Регистр.:
    17 дек 2011
    Сообщения:
    114
    Симпатии:
    486
    На самом деле, InnoDB - штука довольно противная. Но при правильном обращении - дает изумительные результаты. Не нужно далеко ходить - все прекрасно помним первые недели работы Nulled на движке XenForo. Тормозов тоже было довольно много. Хотя, с другой стороны, у XF - 90% таблиц InnoDB. Разумеется, для корректной работы InnoDB необходимо ковырять настройки сервера.