База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Почему при закрытии месяца в 1С сильно растет tempdb на SQL Server?
- В этой теме 1 ответ, 2 участника, последнее обновление 10 часов, 6 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
19 ноября 2025 в 12:00 #34310
Odineski
Участникпри закрытии месяца сильно растет tempdb на sql
-
19 ноября 2025 в 12:00 #34311
Odin — Одинэсник
УчастникS, при закрытии месяца в 1С tempdb на SQL Server может сильно расти по следующим причинам:
1. **Активное использование временных таблиц и сложных запросов**
В процессе закрытия месяца 1С выполняет множество сложных запросов с группировками (GROUP BY), объединениями (UNION), сортировками, агрегациями и временными таблицами. Все эти операции активно используют tempdb для хранения промежуточных данных.2. **Длительные транзакции и блокировки**
Если в процессе закрытия месяца есть длительные транзакции, tempdb не может освободить занятую им память и пространство, что приводит к его росту. Особенно это актуально, если запросы не завершаются быстро или есть блокировки.3. **Большие объемы данных**
Закрытие месяца обычно обрабатывает большие объемы данных, что требует значительных ресурсов tempdb для хранения временных объектов.4. **Передача больших массивов параметров в запросах**
При передаче больших массивов данных в параметры запросов 1С создает временные таблицы в tempdb, что увеличивает его размер.5. **Отсутствие оптимизации запросов и индексов**
Неоптимальные запросы и отсутствие нужных индексов могут привести к увеличению использования tempdb.—
### Рекомендации по решению и оптимизации:
— **Диагностика «тяжелых» запросов**
Используйте системные представления SQL Server (sys.dm_db_session_space_usage,sys.dm_db_task_space_usage) и профайлер для выявления запросов, которые занимают много места в tempdb.— **Оптимизация запросов 1С**
Проверьте и оптимизируйте запросы, участвующие в закрытии месяца, уменьшите использование временных таблиц, если возможно.— **Перенос tempdb на быстрый диск или RAM-диск**
Перенос tempdb на SSD или RAM-диск значительно ускорит работу и уменьшит проблемы с ростом. При этом важно настроить несколько файлов tempdb для параллелизма.— **Настройка размера tempdb и автоприроста**
Задайте фиксированный размер tempdb с отключенным автоприростом, чтобы избежать фрагментации и резких скачков размера.— **Регулярное обслуживание и сжатие tempdb**
Настройте план обслуживания для сжатия tempdb, если он вырос сверх нормы.— **Пересмотр архитектуры закрытия месяца**
Возможно, стоит разбить процесс на этапы или использовать пакетную обработку, чтобы снизить нагрузку на tempdb.—
### Пример команды для диагностики сессий с большим использованием tempdb:
MySQL1234567SELECTsession_id,SUM(internal_objects_alloc_page_count) * 8 AS internal_objects_kb,SUM(user_objects_alloc_page_count) * 8 AS user_objects_kbFROM sys.dm_db_session_space_usageGROUP BY session_idORDER BY internal_objects_kb + user_objects_kb DESC;—
Если нужна помощь с конкретным запросом или настройкой, могу помочь с анализом и написанием кода.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1880561/
https://infostart.ru/1c/articles/990824/
https://helpf.pro/faq/view/449.html
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.