Оценка размера базы данных
При проектировании базы данных иногда требуется оценить, каким будет размер базы данных после заполнения ее данными. Оценка размера базы данных помогает определить конфигурацию аппаратного обеспечения, необходимую для достижения следующих целей:
- Получения производительности, необходимой для работы приложений.
- Обеспечения соответствующего физического объема места на диске, необходимого для хранения данных и индексов.
Оценка размера базы данных помогает определить, требуется ли доработка проекта базы данных. Например, может оказаться, что предполагаемый размер базы данных слишком велик для предприятия, а потому требуется ее нормализация. Напротив, оценочный размер может оказаться меньше, чем ожидалось. Это позволит денормализовать базу данных для повышения производительности запросов.
При оценке размера базы данных производится оценка размера каждой из таблиц и сложение полученных значений. Размер таблицы зависит от наличия у этой таблицы индексов и, если они есть, от их типов.
В этом разделе
| Статья | Description |
|---|---|
| Оценка размера таблицы | Определяет шаги и вычисления для оценки места на диске, необходимого для хранения данных в таблице и связанных индексах. |
| Оценка размера кучи | Определяет шаги и вычисления для оценки места на диске, необходимого для хранения данных в куче. Кучей называется таблица, не имеющая кластеризованного индекса. |
| Оценка размера кластеризованного индекса | Определяет шаги и вычисления, необходимые для оценки места на диске, необходимого для хранения данных в кластеризованном индексе. |
| Оценка размера некластеризованного индекса | Определяет шаги и вычисления для оценки места на диске, необходимого для хранения данных в некластеризованном индексе. |
Как увидеть реальный размер базы данных?
Добрый вечер мне нужно хранить примерно 30к строк, и меня интересует как бд на 30000 строк весит столько же сколько и бд но без записей. Вот пример: Вот примерное наполнение таблицы:
Вообщем просто набор букв для таблицы. И как узнать реальный вес бд/таблицы?
Отслеживать
задан 15 сен 2022 в 19:20
62 7 7 бронзовых знаков
При создании БД сразу выделяется некоторое количество памяти для будущего использования. File Space Management
15 сен 2022 в 20:05
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Итак я нашел как посмотреть вес mysql таблиц. Все очень просто (идем путем поиска и взвешивания файлов ).
- Узнаем где храняться все файлы бд и таблиц.
grep datadir /etc/my.cnf
grep -r datadir /etc/mysql/
Вот что вы получите:

- Переходим в директорию после знака = :
cd /var/lib/mysql
- Что бы получить вес таблицы мы переходим в папку с названием нашей базы данных и что бы в приятном виде мы увидели вес файлов нужно ввести:
ls -lh
Вы увидете примерно такое:

Также что бы видеть размер в МегаБайтах можно добавить аргумент —block-size=MB Пример:
ls -lh --block-size=MB
Вот и все мы видим вес любой таблицы.
Отслеживать
ответ дан 15 сен 2022 в 20:38
62 7 7 бронзовых знаков
15 сен 2022 в 20:46
Если нет доступа к самом серверу (к файловой системе), можно попробовать узнать размер сделав SQL запрос:
SELECT table_schema "DB Name", ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables GROUP BY table_schema;
Или не применять округление и получить точный размер в байтах
Узнать размер базы данных через консоль mysql
Существует куча различных инструментов с графическим интерфейсом для управления и обслуживания баз данных (mysqladmin, navicat и прочие), плюс возможности панелей управления сервером, где можно получить информацию о базах данных, таблицах, пользователях. Однако иногда, при работе в консоли сервера через ssh, нужно по быстрому получить размеры существующих баз данных mysql. Для этого достаточно зайти в консольный клиент mysql и выполнить sql запрос.
root@localhost:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43764664 Server version: 5.5.46-0+deb7u1 (Debian) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
В данном случае мы вошли из под рута. Выполняем запрос:
mysql> SELECT table_schema "database_name", sum( data_length + index_length )/1024/1024 "database size in MB" FROM information_schema.TABLES GROUP BY table_schema; +--------------------+---------------------+ | database_name | database size in MB | +--------------------+---------------------+ | database1 | 21.73606873 | | database2 | 0.79687500 | | information_schema | 0.00878906 | | mysql | 0.68143845 | | roundcube | 0.40625000 | +--------------------+---------------------+ 7 rows in set (0.14 sec)
Во второй колонке видим размер каждой базы данных. Что-бы узнать размер какой-то конкретной базы данных, чуть модифицируем sql запрос и получаем:
mysql> SELECT table_schema "database_name", sum( data_length + index_length )/1024/1024 "database size in MB" FROM information_schema.TABLES WHERE table_schema="festivalse"; +---------------+---------------------+ | database_name | database size in MB | +---------------+---------------------+ | database1 | 21.73606873 | +---------------+---------------------+ 1 row in set (0.01 sec)
В данном случае вместо группировки GROUP BY table_schema, мы сделали выборку по имени базы данных WHERE table_schema=»database1″. Удачи.
Узнать размер базы MySQL
Получить размер базы MySQL можно как с помощью команды du (подсчитав размер директории с базой), так и с помощью специального запроса в рамках MySQL непосредственно.
Узнать размер с помощью du можно, например, так:
# cd /var/lib/mysql/ # du -sh slax_site/ 2,9M slax_site/
Размер базы MySQL запросом.
Однако размер базы данных может отличаться от размера занятого директорией места на диске. Для того что бы узнать размер БД, можно сделать запрос к information_schema — базе, в которой хранится информация о всех БД (и их настройках) на сервере. Получить размеры базы данных можно вот таким запросом:
SELECT table_schema AS "Database Name", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size in (MB)" FROM information_schema.TABLES WHERE table_schema = "slax_site" GROUP BY table_schema;

Здесь slax_site — имя базы, размер которой мы хотим узнать.
Для того что бы увидеть размер всех баз, уберём одно условие из запроса:
SELECT table_schema AS "Database Name", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size in (MB)" FROM information_schema.TABLES GROUP BY table_schema;
Так же, мы можем получить информацию о размере таблиц в базе, при этом, запрос будет выглядеть так:
SELECT table_name AS "Table Name", ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size in (MB)" FROM information_schema.TABLES WHERE table_schema = "slax_site" ORDER BY (data_length + index_length) DESC;

Здесь мы получаем размер каждой таблицы в базе slax_site.
