Во время работы с базами данных возникает необходимость получить разнообразную информацию (размер, количество записей и пр.) о базах данных или определенных таблицах. Как получить интересующую информацию, читайте далее.
1. Теория
Вся информация о базах данных в MySQL хранится в базе information_schema, если Вы знаете в какой таблице искать, сможете найти необходимые данные.
Основные таблицы, которые Вам могут быть интересны:
COLUMNS - информация о столбцах всех таблиц баз данных. Доступна информация о имени столбца, кодировке, типе данных, правах доступа.
PROCESSLIST - таблица с информацией о текущих процессах базы данных, из этой таблицы получаем информацию о текущих запросах.
- USER - пользователь, который выполняет команду/запрос
- HOST - адрес хоста, с которого произведено подключение
- DB - имя базы данных, с которой происходит работа
- COMMAND - тип команды. Sleep - простой подключения, Query - выполняется запрос
- INFO - SQL-код команды, если он присутствует
SCHEMATA - таблица с перечнем баз данных
TABLES - информация о таблицах баз данных. Имя, Тип, количество записей, размер и пр.
- TABLE_SCHEMA - база данных
- TABLE_NAME - имя таблицы
- TABLE_ROWS - количество записей
- DATA_LENGTH - размер данных в байтах
- INDEX_LENGTH - размер данных индекса в байтах
- AUTO_INCREMENT - "позиция автоинкримента"
- CREATE_TIME - дата создания таблицы
- TABLE_COLLATION - кодировка таблицы
2. От теории к практике
Далее я приведу примеры запросов, с помощью которых Вы сможете получить необходимую информацию о базах данных
2.1 Объем, занимаемый базами данных
SELECT
table_schema "database name",
sum( data_length + index_length )/1024/1024 "Объем БД в Мб",
sum( data_length )/1024/1024 "Размер данных БД в Мб",
sum( index_length )/1024/1024 "Объем данных индексов в Мб"
FROM information_schema.TABLES
GROUP BY table_schema;
Пример результата
database name Объем БД в Мб Размер данных БД в Мб Объем данных индексов в Мб
information_schema 0.15625000 0.15625000 0.00000000
mysql 2.44259167 2.22872448 0.21386719
performance_schema 0.00000000 0.00000000 0.00000000
sys 0.01562500 0.01562500 0.00000000
syslog 362.60937500 355.95312500 6.65625000
2.2. Получаем информацию о размерах таблиц базы данных и средних затратах на 1 запись
SELECT
table_name "Таблица",
(data_length + index_length )/1024/1024 "Объем Таблицы в Мб",
data_length/1024/1024 "Размер данных таблицы в Мб",
index_length /1024/1024 "Объем данных индексов таблицы в Мб",
table_rows "Количество записей",
(data_length + index_length )/1024/table_rows "Средние затраты на одну запись в Кб"
FROM information_schema.TABLES
WHERE TABLE_SCHEMA="ИМЯ_БД"
Пример результата
Таблица Объем Таблицы в Мб Размер данных таблицы в Мб Объем данных индексов таблицы в Мб Количество записей Средние затраты на одну запись в Кб
messages 0.15625000 0.09375000 0.06250000 108 1.48148148
messages_syslog_20171108 0.09375000 0.01562500 0.07812500 2 48.00000000
syslog 362.35937500 355.84375000 6.51562500 602968 0.61538257
2.3. Информация о текущих подключениях к БД
SELECT `USER`, `HOST`, `COMMAND`, `DB`, `STATE`,`INFO` FROM `PROCESSLIST`
Пример результата
USER HOST COMMAND DB STATE INFO
syslog localhost Sleep syslog NULL
root localhost Sleep NULL NULL
root localhost Query information_schema executing SELECT`USER`,`HOST`,`COMMAND`,`DB`,`STATE`,`I...
Данных запросов будет достаточно для получения минимальной информации о состоянии баз данных.
Если Вас интересует как получить определенную информацию о базах данных или таблицах MySQL, задавайте вопросы в комментариях.
Комментариев нет:
Отправить комментарий