Оценить большой размер базы данных и скорость

dba.stackexchange https://dba.stackexchange.com/questions/906

Вопрос

Во -первых, я хочу знать, как оценить размер базы данных относительно самой большой таблицы, в которой она будет содержать. У меня следующее:

+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| users_id | int(32) unsigned | NO   | MUL | NULL    |       |
| s        | binary(16)       | NO   | PRI | NULL    |       |
| t        | binary(16)       | NO   | PRI | NULL    |       |
| x        | binary(16)       | NO   | PRI | NULL    |       |
+----------+------------------+------+-----+---------+-------+

Это таблица, которая будет значимой для размера (другая таблица предназначена только для обслуживания пользовательских данных (ID, пользователь, проход, электронная почта), я не ожидаю, что у них будет более 100 записей).

Я ожидаю около 7,61263 * 10^9 записей в таблице выше. Я сделал это простые расчеты: 7,61263 * 10^9 + (4 байта + 16 байтов + 16 байтов + 16 байт) ~ = 395 ГБ. Но я не знаю, как учитывать накладные расходы, исходящие от СУБД (индексы, структура базы данных ...)?

Как оценить размер базы данных?

Как насчет скорости и стабильности MySQL, работающего с этой большой таблицей. Должен ли я разделить данные на две или более базы данных, чтобы уменьшить размер?

Это было полезно?

Решение

Насколько вы спрашиваете об обоих размерах а также Скорость, да, правое Рассел. Тебе придется активировать Заполните таблицу образцами данных, и тестируют представители запросов, чтобы увидеть, как они выполняют.

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

(Например, вы нажмете ограничение 2 ** 32 на ряды в Myisam, поэтому вам придется построить с Поддержка больших столов)

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

Другие советы

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

Для Myisam добавьте 1 байт в строку к вычислению, которое вы дали. Это заботится о данные. Анкет Для каждого индекса математика становится что -то вроде

  • Рассчитайте размеры поля
  • Добавьте 6 для указателя на данные (при условии дефолта)
  • Умножьте, скажем, 1.5, чтобы учесть накладные расходы Btree.

Для Innodb математика намного сложнее. Простой ответ состоит в том, чтобы взять размер индекса Data+для Myisam, а затем умножить на 2 или 3.

Пожалуйста, используйте Show Create Table, а не Desc - я не могу видеть ваши индексы, и я подозреваю, что у вас большой PK, что отрицательно влияет на любые вторичные ключи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top