Часто возникает ситуация, когда размер базы данных (БД) становится большим, и необходимо определить, какие именно таблицы занимают значительный объем. В этой статье мы рассмотрим, как это сделать.
Шаг 1: Определение больших таблиц
Для начала нам нужно узнать, какие таблицы имеют большой вес. Для этого:
- Заходим в Админпанель Битрикса.
- Переходим в раздел Настройки → Производительность → Таблицы.
- Справа в столбце Размер (или Размер данных) меняем сортировку от большего к меньшему.
Теперь мы видим, какие таблицы имеют большой объем данных.
Шаг 2: Очистка таблиц
После того как мы определили крупные таблицы, переходим к их очистке. Важно помнить, что просто удалить все записи в таблице через оператор DELETE
может быть не лучшим решением.
Рассмотрим пример №1: таблица b_user_session
имеет объем 1.1 Гб и хранит информацию о пользовательских сессиях. Для удаления старых записей используем следующую команду PHP:
\Bitrix\Main\Session\Handlers\Table\UserSessionTable::deleteOlderThan(86400);
Эта команда удаляет записи сессий старше суток (86 400 секунд).
Другой распространенный случай (Пример №2) — это заполняемость таблиц модуля Веб-аналитики, таких как b_stat_XXX
. Для очистки этих таблиц:
- Переходим в настройки модуля Веб-аналитики: Настройки → Настройки продукта → Настройка модулей → Веб-аналитика.
- Во вкладке Время хранения сначала нужно изменить количество дней хранения истории, а затем очистить старую историю.
- Спускаемся ниже до Служебные процедуры и выполняем очистку статистики до нужной даты. После этого включаем Оптимизацию таблиц.
Пример №3: Большие файлы. Поищите и удалите ненужный контент на сайте, который содержит объемные файлы.
Искать их удобно с помощью таблицы базы данных b_file
. Для поиска файлов отсортируйте записи в таблице по убыванию колонки FILE_SIZE
, чтобы видеть самые большие файлы на сайте.
Шаг 3: Проверка размера MySQL базы данных
Чтобы проверить размер MySQL базы данных в Битриксе:
- Логинемся на сервер через
putty
. - Выполняем команду:
mysql -u bitrix0 -p
, гдеbitrix0
— это пользователь базы данных. Вводим пароль, который хранится в файле/bitrix/php_interface/dbconn.php
: - Выполняем следующий SQL-запрос:
$DBLogin = "bitrix0"; $DBPassword = "Iuec+U9qGF0p(oqs9kqZ";
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
на имя вашей базы данных. Например:
$DBName = "sitemanager";
Вы получите информацию о размере базы данных, например:
+--------------------+---------------------+ | sitemanager | database size in MB | +--------------------+---------------------+ | information_schema | 0.17187500 | | sitemanager | 4901.89062500 | +--------------------+---------------------+ 2 rows in set (0.03 sec)
На этом все! В будущем мы будем дополнять статью полезными советами по оптимизации БД Битрикса и удалению старых записей в таблицах.