Оценить большой размер базы данных и скорость
-
16-10-2019 - |
Вопрос
Во -первых, я хочу знать, как оценить размер базы данных относительно самой большой таблицы, в которой она будет содержать. У меня следующее:
+----------+------------------+------+-----+---------+-------+
| 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, что отрицательно влияет на любые вторичные ключи.