ms sql 2016 рост tempdb

1. kurpyaev 30.06.18 16:23 Сейчас в теме
Коллеги, проконсультируйте в следующей проблеме:

Входные данные
Платформа 1С:Предприятие 8.3 (8.3.11.2954)
ОС Windows Server 2016
СУБД MS SQL 2016
Сервер 1С и СУБД на ходяться на одной машине

Наблюдается рост tempdb, как лучше проанализировать причину роста tempdb(к примеру какие события выбрать в Profiler) ?
Или из за чего может наблюдаться рост tempdb?
Сейчас установил ограничение по размеру tempdb , во избежание проблем.
Важная деталь размер tempdb не меняется, когда пользователи в базах не работают.



По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1486 30.06.18 21:13 Сейчас в теме
(1) как-то написал сложный запрос и место на диске закончилось, файлик вырос до 90 гигов)) Пришлось шринкать!

Посмотрите что за доработки были и оптимизируйте запросы.
Еще как вариант обновление БД было. Но файлик вырос потом должен сдуваться, если сервер на рестарт агентов поставили.
10. kurpyaev 01.07.18 10:10 Сейчас в теме
(3)Скорее всего это не запросы. Перевел все базы в автономный режим (т.е. базы 1С вообще никаких операций не выполняют), перезапустил SQL , размер tempdb не поменялся, хотя по идее он по идее должен вернуться к минимальному значению. Или в любом случае нужно выполнять DBCC SHRINKDATABASE ?
11. Xershi 1486 01.07.18 10:13 Сейчас в теме
(10) я не помню какие конкретно действия могут привести к автоматическому уменьшению. Шринк точно поможет!
4. Dream_kz 129 30.06.18 22:00 Сейчас в теме
(1) Посмотреть топ длительных запросов, либо топ нагружающих запросов по операциям чтения+записи, затем настроить ТЖ, с фильтром по запросу, и отловить его контекст

либо попробовать поставить этот сервис http://www.gilev.ru/querytj/
12. kurpyaev 01.07.18 10:14 Сейчас в теме
(4)Скорее всего это не запросы. Перевел все базы в автономный режим (т.е. базы 1С вообще никаких операций не выполняют), перезапустил SQL , размер tempdb не поменялся, хотя по идее он по идее должен вернуться к минимальному значению.
13. Dream_kz 129 01.07.18 13:22 Сейчас в теме
(12) Ну так к начальному размеру и вернулось, 13818 МБ в настройках то выставлено
14. kurpyaev 01.07.18 13:50 Сейчас в теме
(13)Изначальный размер был 1024, видимо запоминается последнее значение прироста.
15. ipoloskov 162 01.07.18 14:07 Сейчас в теме
(14) видимо, кто-то или что-то поменяло этот размер. У меня один раз такое было. Причину тогда не понял.
19. a.doroshkevich 1414 02.07.18 13:49 Сейчас в теме
(14)Всё верно.

Саму проблему предлагаю разделить на 2 части:
1. Как заставить ms sql уменьшать размер tempdb
2. Выяснить причину роста tempdb

По п.1 - создайте регл. задание, которое будет делать шринк tempdb с указанием начального размера и запускайте его раз в 15 минут + указать предельный объём temdb (это у вас уже сделано)

по п. 2 - основная причина это временные таблицы и сортировки, это нормальное поведение ms sql при работе с 1С, так как 1С очень любит временные таблицы как у казали коллеги в комментариях. На kb.1c.ru есть статья "Методика выявления транзакций, приводящих к значительному потреблению tempdb" почитайте, примените на практики советы разработчиков 1С и скорее всего выясните причину. Но не факт что удастся от неё избавиться)
20. alex_sh2008 4 02.07.18 14:00 Сейчас в теме
(1)Происходят частые падения сессий sql в которых делаются временные таблицы, таблицы остаются не удаленными. После перезагрузки сервера база не сжимается, сервер видит что она не пустая и пропускает пересоздание. Нужно про анализировать саму базу и по ней вычислить виновника раздувания.
2. ipoloskov 162 30.06.18 21:04 Сейчас в теме
Кривой запрос, кладущий во временную таблицу большое количество записей. Соответственно в профайлере нужно ловить запросы на INSERT большого количества записей (детали подсказать не могу)
5. Timur.V 78 30.06.18 22:27 Сейчас в теме
При работе 1С:Предприятия 8 в режиме клиент-сервер широко используются временные таблицы.
Кроме того, TEMPDB используется Microsoft SQL Server при выполнении запросов, использующих операторы GROUP BY, UNION, DISTINCT и т.п.
Сейчас установил ограничение по размеру tempdb , во избежание проблем.

Вы ни от каких проблем не избавились. Получите ошибку в 1с - не возможно увеличить tempdb, во время работы.
9. kurpyaev 01.07.18 09:05 Сейчас в теме
(5)Пока не получал, имел ввиду что tempdb заберет все место на диске
6. Timur.V 78 30.06.18 22:28 Сейчас в теме
Причиной увеличения размера базы данных TEMPDB, как правило, является невозможность автоматической очистки журнала транзакций и повторного использования свободного пространства в базе данных TEMPDB из-за наличия активных транзакций, использующих объекты этой базы данных. Основные причины, вызывающие длительную блокировку работы этих механизмов базы данных TEMPDB, заключаются в следующем:

"Большие" транзакции, использующие TEMPDB, выполнение которых занимает большой промежуток времени.
Сетевые ошибки, из-за которых Microsoft SQL Server не получает уведомление о потере сетевого подключения. Если клиентская рабочая станция зависает, перезагружается, или будет выключена во время исполнения определяемой пользователем транзакции, то Microsoft SQL Server будет считать, что клиент продолжает работу, и выполняющаяся клиентская транзакция будет по-прежнему активна. Время обнаружения подобной ситуации зависит от настроек параметров сетевого протокола, используемого Windows . Например, при использовании протокола TCP/IP это время составляет 2 часа.
Если для завершения активных транзакций не хватает места в базе данных, Microsoft SQL Server автоматически увеличивает размер TEMPDB на величину, заданную в параметрах этой базы данных (по умолчанию - 10% от текущего размера).
7. Timur.V 78 30.06.18 22:30 Сейчас в теме
Найдите активные транзакции, по ссылке скрипт ms sql:
http://www.gilev.ru/forum/viewtopic.php?f=15&p=5032
8. Timur.V 78 30.06.18 22:39 Сейчас в теме
Со стороны 1с можно настроить технологический журнал (в яндексе инструкция)
Ниже, данный конфигурационный файл добавляет все операции, длительность которых превышает 10 секунд. Это может оказаться полезным для обнаружения действий пользователей, которые выполнялись длительное время, с целью, например, их последующей оптимизации. Длительность событий выражается в сотнях микросекунд.
(в файле первый символ не должен быть пробелом)
Код
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
 <dump create="false"/>
 <log location="C:\v8\logs" history="168">
    <event>
        <eq property="name" value="admin"/>
        <gt property="duration" value="100000"/>
    </event>
    <event>
        <eq property="name" value="conn"/>
        <gt property="duration" value="100000"/>
    </event>
    <event>
        <eq property="name" value="excp"/>
        <gt property="duration" value="100000"/>
    </event>
    <event>
        <eq property="name" value="proc"/>
        <gt property="duration" value="100000"/>
    </event>
    <event>
        <eq property="name" value="qerr"/>
        <gt property="duration" value="100000"/>
    </event>
    <event>
        <eq property="name" value="scom"/>
        <gt property="duration" value="100000"/>
    </event>
    <property name="all"/>
 </log>
</config> 
Показать полностью
16. Gilev.Vyacheslav 1911 02.07.18 09:48 Сейчас в теме
(0) есть смысл в регулярные технологические окна после остановки сервера 1С делать очистку сеансовых данных и рестартовать службу скуля,

а если кроме баз данных 1С есть внешние обращения, то ограничить таймаут на скуле
EXEC sys.sp_configure N'remote query timeout (s)', N'60'
GO
RECONFIGURE WITH OVERRIDE
GO
17. Painted 49 02.07.18 10:36 Сейчас в теме
(16)
рестартовать службу скуля
Если рестартовать скуль, dmv-ки очищаются. А я по ним (sys.dm_db_index_usage_stats) недействующие индексы вычисляю.
18. Gilev.Vyacheslav 1911 02.07.18 11:50 Сейчас в теме
(17) мы умышленно сбрасываем статистику каждые 12 часов в ноль, чтобы:
1. различать ночные и дневные нагрузки
2. не накапливать искажения от каких то разовых пиков
3. иметь возможность расследовать актуальные проблемы

мы например при этом храним историю статистик "по типам ожиданий" в отдельной таблице, так видны факты изменений и улучшений или наоборот ухудшений

кроме того, недействующие индексы по информации системных представлений - вещь неоднозначная - если этот индекс создан платформой, а не вручную то стоит 10 раз подумать прежде чем его отключать или т.п., а если индекс создан вручную, то и так за ним надо следить в первые дни вручную, отслеживая его "востребованность" и эффект от его создания
21. Painted 49 02.07.18 14:47 Сейчас в теме
(18)
стоит 10 раз подумать прежде чем его отключать или т.п.
Да? Вы меня пугаете ((.
(18)
индекс создан вручную, то и так за ним надо следить в первые дни вручную
Есть индексы, которые работают только во время расчета зарплаты, например, у регистра "Графики работы по видам времени". Соответственно, стараюсь дождаться хотя бы месяц, чтобы оценить их эффективность.
23. Gilev.Vyacheslav 1911 03.07.18 09:16 Сейчас в теме
(21) ну если вы знаете что индекс спроектирован под разовую операцию происходящую 1 раз в длительный цикл, ну так вы можете регламентом отключать после использования в день Х и включать перед следующим таким днем - так вы снизите избыточную запись
и что вам мешает посмотреть период с расчетом зарплаты...
22. Fox-trot 158 02.07.18 17:13 Сейчас в теме
а чего ждать-то? или нет ресурсов тестовый стенд развернуть?
24. user1218675 12.05.19 00:02 Сейчас в теме
А почему у меня фото, прикрепленные к обсуждению не отображаются?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот