13.08.2024 Уже прочитали 3860 раз Помогло 1 читателям

Как узнать какие таблицы БД в Битрикс имеют большой объем данных

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

Шаг 1: Определение больших таблиц

Для начала нам нужно узнать, какие таблицы имеют большой вес. Для этого:

  1. Заходим в Админпанель Битрикса.
  2. Переходим в раздел НастройкиПроизводительностьТаблицы.
  3. Справа в столбце Размер (или Размер данных) меняем сортировку от большего к меньшему.

Теперь мы видим, какие таблицы имеют большой объем данных.

Шаг 2: Очистка таблиц

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

Рассмотрим пример №1: таблица b_user_session имеет объем 1.1 Гб и хранит информацию о пользовательских сессиях. Для удаления старых записей используем следующую команду PHP:

\Bitrix\Main\Session\Handlers\Table\UserSessionTable::deleteOlderThan(86400);
    

Эта команда удаляет записи сессий старше суток (86 400 секунд).

Другой распространенный случай (Пример №2) — это заполняемость таблиц модуля Веб-аналитики, таких как b_stat_XXX. Для очистки этих таблиц:

  1. Переходим в настройки модуля Веб-аналитики: НастройкиНастройки продуктаНастройка модулейВеб-аналитика.
  2. Во вкладке Время хранения сначала нужно изменить количество дней хранения истории, а затем очистить старую историю.
  3. Спускаемся ниже до Служебные процедуры и выполняем очистку статистики до нужной даты. После этого включаем Оптимизацию таблиц.

Пример №3: Большие файлы. Поищите и удалите ненужный контент на сайте, который содержит объемные файлы.

Искать их удобно с помощью таблицы базы данных b_file. Для поиска файлов отсортируйте записи в таблице по убыванию колонки FILE_SIZE, чтобы видеть самые большие файлы на сайте.

Шаг 3: Проверка размера MySQL базы данных

Чтобы проверить размер MySQL базы данных в Битриксе:

  1. Логинемся на сервер через putty.
  2. Выполняем команду: mysql -u bitrix0 -p, где bitrix0 — это пользователь базы данных. Вводим пароль, который хранится в файле /bitrix/php_interface/dbconn.php:
  3. $DBLogin = "bitrix0";
    $DBPassword = "Iuec+U9qGF0p(oqs9kqZ";
            
  4. Выполняем следующий SQL-запрос:
  5. 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)
            

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


Обратная связь

Материал был полезен?

Оценка помогает понимать, какие материалы стоит развивать и дополнять.

Обсудить задачу

Обратиться за помощью

Опишите задачу и оставьте контакты. Я посмотрю вводные и свяжусь с вами удобным способом.

Направление *