Размер базы данных MySQL - PullRequest
       11

Размер базы данных MySQL

3 голосов
/ 26 ноября 2008

Microsoft SQL Server имеет приятную функцию, которая позволяет автоматически расширять базу данных при ее заполнении. Я понимаю, что в MySQL база данных - это каталог с кучей файлов, соответствующих различным объектам. Означает ли это, что концепция размера базы данных неприменима, а база данных MySQL может быть настолько большой, насколько позволяет доступное дисковое пространство, без каких-либо дополнительных проблем? Если да, то ли это поведение одинаково для разных механизмов хранения?

Ответы [ 2 ]

4 голосов
/ 26 ноября 2008

Это зависит от используемого вами двигателя. Список тех, которые идут с MySQL, можно найти здесь .

В таблицах MyISAM есть файл для каждой таблицы. Этот файл может вырасти до предела вашей файловой системы. По мере того, как таблица становится больше, вам придется настраивать ее, так как есть оптимизация индекса и размера данных, которые ограничивают размер по умолчанию. Кроме того, на этой документации MyISAM написано:

Существует ограничение в 2 ^ 32 (~ 4.295E + 09) строки в таблице MyISAM. Если вы строите MySQL с --with-big-таблицами опция, ограничение строки увеличено до (2 ^ 32) ^ 2 (1.844E + 19) строк. См. Раздел 2.16.2, «Типичная настройка Опции". Двоичные распределения для Unix и Linux построены с этим опция.

InnoDB может работать в 3 различных режимах: используя файлы таблиц innodb, используя весь диск как файл таблицы или используя innodb_file_per_table.

  • Файлы таблиц предварительно создаются для каждого экземпляра MySQL. Обычно вы создаете много места и следите за ним. Когда он начнет заполняться, вам нужно настроить другой файл и перезагрузить сервер. Вы также можете установить его на autoextend, чтобы он добавлял кусок пространства к последнему файлу таблицы, когда он начнет заполняться. Я обычно не использую эту функцию, так как вы никогда не знаете, когда вы снизите производительность при расширении таблицы. На этой странице рассказывается о его настройке.
  • Я никогда не использовал целый диск в качестве файла таблицы, но это можно сделать. Вместо того, чтобы указывать на файл, я полагаю, что вы указываете файлы таблицы InnoDB на неформатированное, не смонтированное устройство.
  • innodb_file_per_table заставляет таблицы InnoDB действовать как таблицы MyISAM. Каждая таблица получает свой собственный файл таблицы. В прошлый раз, когда я использовал это, файлы таблиц не уменьшались, если вы удаляли из них строки. Когда таблица удаляется или изменяется, размер файла изменяется.

Механизм архивации - это сжатая таблица MyISAM.

Таблица памяти вообще не использует диск. Фактически, когда сервер перезагружается, все данные теряются.

Таблицы слияния похожи на разбиение бедняков на таблицы MyISAM. Это вызывает запрос к группе идентичных таблиц, как если бы она была. Кроме определения таблицы FRM, кроме файлов MyISAM, не существует никаких файлов.

Таблицы CSV являются оболочками вокруг файлов CSV. Обычные ограничения файловой системы применяются здесь. Они не слишком быстрые, так как не могут иметь индексы.

Я не думаю, что кто-то больше использует BDB. По крайней мере, я никогда не использовал это. Он использует базу данных Berkly в качестве серверной части. Я не знаком с его ограничениями.

Объединенные таблицы используются для подключения и запроса таблиц на других серверах баз данных. Опять же, есть только файл FRM.

Двигатель Blackhole не хранит ничего локально. Он используется главным образом для создания журналов репликации, а не для фактического хранения данных, так как нет хранения данных:)

MySQL Cluster совершенно другой: он хранит практически все в памяти (в последних выпусках допускается хранение на диске) и сильно отличается от всех других механизмов.

1 голос
/ 26 ноября 2008

то, что вы описываете, примерно верно для таблиц MyISAM. для таблиц InnoDB картина другая и более похожая на действия других СУБД: один (или несколько) большой файл со сложной внутренней структурой для всего сервера. чтобы оптимизировать его, вы можете использовать целый диск (или раздел) в виде файла. (по крайней мере, в Unix-подобных системах, где все является файлом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...