---
title: "Размер базы данных"
canonical_url: "https://www.zone.lv/help/ru/kb/razmer-bazy-dannyh/"
post_type: "ht_kb"
published: "2024-11-13T19:57:52+00:00"
modified: "2024-11-13T23:31:13+00:00"
language: "ru"
author: "silver"
taxonomies:
  ht_kb_category:
    - name: "MariaDB / MySQL"
      url: "https://www.zone.lv/help/ru/kb-categories/mariadb-mysql-ru/"
    - name: "Техническое"
      url: "https://www.zone.lv/help/ru/kb-categories/tehnicheskoje/"
  ht_kb_tag:
    - name: "mariadb"
      url: "https://www.zone.lv/help/ru/kb-tags/mariadb-ru/"
    - name: "mysql"
      url: "https://www.zone.lv/help/ru/kb-tags/mysql-ru/"
    - name: "оверхед"
      url: "https://www.zone.lv/help/ru/kb-tags/overkhed/"
---

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

## Что определяет размер базы данных?

Общий размер базы данных – это сумма размеров ее таблиц.

Размер таблицы – это не только размер строк, которые можно увидеть в таблице, но и дополнительные функции таблицы (различные типы ключей и индексов), а также неиспользуемое пространство, оставшееся в результате запросов и действий.

Размер таблицы базы данных состоит из трех частей:

- данные
- индексы
- оверхед

Данные для каждого типа данных хранятся на сервере базы данных в файлах, которые занимают свободное дисковое пространство на сервере.

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

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

Размер базы данных и ее таблиц можно посмотреть с помощью различных клиентских программ и phpMyAdmin или непосредственно из SSH-терминала.

 Инструкция [Как войти в phpMyAdmin?](https://www.zone.lv/help/ru/kb/kak-vojti-v-phpmyadmin/)

Для этого мы будем использовать phpMyAdmin.

Войдя в phpMyAdmin, выберите нужную базу данных в левой колонке, для которой на первой вкладке `Structure` отобразятся все таблицы, а в самом конце, в последней строке таблицы, будет показан общий размер таблиц. Однако это не включает оверхед таблиц:

![phpMyAdmin - Database Tables](https://www.zone.lv/static/sites/5/phpmyadmin_database_tables-1.png)

Чтобы узнать реальный размер таблицы (данные + индексы + оверхед), нужно перейти на вкладку `Structure` таблицы и найти таблицу` Space usage` в подразделе `Information`. В строке `Effective` – фактический размер таблицы на сервере базы данных:

![phpMyAdmin - Structure of the table](https://www.zone.lv/static/sites/5/phpmyadmin_table_structure-1.png)

![phpMyAdmin - Space usage of the table](https://www.zone.lv/static/sites/5/phpmyadmin_space_usage-1.png)

## Что такое оверхед таблицы?

Оверхед – это неосвобожденное пространство таблицы базы данных MySQL / MariaDB, которое выделено для таблицы, но не используется.

Это можно увидеть в таблице` information_schema.TABLES` в столбце `Data_free`. Размер отображается в байтах.

Причиной Data\_free является неиспользованное и фрагментированное пространство из-за удаления строк из таблицы (DELETE), обновления строк (UPDATE) с большими значениями, уменьшения и перегруппировки пространства таблицы, резервирования места для будущих запросов (INSERT, UPDATE).

 Data\_free Хотя пространство Data\_free не используется и не отражается непосредственно на размере базы данных, оно все равно физически использует дисковое пространство на сервере базы данных в качестве файла таблицы базы данных.

## Как найти таблицы с большими оверхед?

Если в базе данных имеется большое количество таблиц и вы не знаете, какая из них может иметь большие оверхед, вместо того чтобы просматривать вкладку `Structure` для каждой таблицы, более быстрый способ найти проблемную таблицу – использовать следующий SQL-запрос.

 Чтобы сделать SQL-запрос в phpMyAdmin, вам нужно перейти на вкладку `SQL`, написать или вставить запрос в текстовое поле, а затем нажать кнопку `Go`, чтобы выполнить запрос.

 ```
SHOW TABLE STATUS WHERE `Data_free` > 0;
```

Столбец `Data_free` таблицы результатов запроса показывает объем таблицы, размеры отображаются в байтах:

![phpMyAdmin - SQL query: SHOW TABLE STATUS](https://www.zone.lv/static/sites/5/phpmyadmin_show_table_status-1.png)

Более подробный SQL-запрос, показывающий размеры в мегабайтах каждого из трех типов данных в отдельности и общий фактический размер таблицы (данные + индексы + оверхед).
Замените в команде` [DATABASE_NAME]` на фактическое имя базы данных:

```
SELECT `TABLE_SCHEMA` AS "Database", `TABLE_NAME` AS "Table", `ENGINE`, `ROW_FORMAT`, `TABLE_ROWS`, ROUND(((`DATA_LENGTH`) / 1024 / 1024), 2) AS "Data Size (MiB)", ROUND(((`INDEX_LENGTH`) / 1024 / 1024), 2) AS "Index Size (MiB)", ROUND(((`DATA_FREE`) / 1024 / 1024), 2) AS "Overhead (MiB)", ROUND(((`DATA_LENGTH` + `INDEX_LENGTH` + `DATA_FREE`) / 1024 / 1024), 2) AS "Total Size (MiB)" FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = '[DATABASE_NAME]' AND `DATA_FREE` > 0 ORDER BY `DATA_FREE` DESC;
```

![phpMyAdmin - SQL query: SELECT all sizes and total size results](https://www.zone.lv/static/sites/5/phpmyadmin_select_all_sizes_results-1.png)

Видно, что размер таблицы опций WordPress составляет 113,3 MiB, а под неосвобожденное пространство засунуто 8337 MiB или 8,1 GiB – это более чем в 70 раз больше, чем размер данных таблицы!

![phpMyAdmin - SQL query: SELECT al sizesl and total size](https://www.zone.lv/static/sites/5/phpmyadmin_select_all_sizes-1.png)

## Освобождение неиспользуемого пространства – оптимизация таблиц

Чтобы освободить неиспользуемое пространство таблицы, необходимо провести оптимизацию таблицы.

Для оптимизации таблицы существует ссылка `Optimize table` в таблице `Space usage` на странице вкладки `Structure`, а также на странице вкладки `Operations`.

В качестве альтернативы можно составить SQL-запрос для оптимизации таблицы (замените `[DATABASE_NAME]` и `[TABLE_NAME]` в команде на название базы данных и таблицы):

```
OPTIMIZE TABLE `[DATABASE_NAME]`.`[TABLE_NAME]`;
```

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

Более подробную информацию можно найти в документации к соответствующей базе данных:
[MariaDB: OPTIMIZE TABLE](https://mariadb.com/kb/en/optimize-table/)
[MySQL: OPTIMIZE TABLE Statement](https://dev.mysql.com/doc/refman/en/optimize-table.html)
