Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
stavgreengo Member Откуда: Сообщений: 710 |
Добрый день, коллеги !!! Есть сервер сугубо под БД для 1С 8.2 на
|
||
21 фев 13, 11:03 [13959423] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34998 Блог |
может он у вас периодически чистится? |
21 фев 13, 11:16 [13959523] Ответить | Цитировать Сообщить модератору |
stavgreengo Member Откуда: Сообщений: 710 |
ночью после сбора статистики выполняется DBCC FREEPROCCACHE, но по мере наполнения кэша показатель hit ratio более менее стабильно ползёт вверх и после достижения определённого значения(~8Гб) рост места в ОЗУ под процедурный кэш прекращается и начинаются весьма частые скачки с 70 до 90% как подсказывает мне мониторинг обусловлено это SQL Plans hit ratio которого точно также изменяется скачками в отличии от всех остальных структур в процедурном кэше hit ratio которых более менее стабильны. С чем это связано ? Может не надо так часто делать DBCC FREEPROCCACHE и добавить в конфиг формирование стабов для первичного построения планов выполнения на adhoc запросах ? |
||
21 фев 13, 11:49 [13959777] Ответить | Цитировать Сообщить модератору |
Зарегался Member Откуда: Сообщений: 56 |
А какой в этом смысл? После обновления статистики планы запросов и так будут постепенно перекомпилированы. Я бы на вашем месте не заморачивался по поводу hit ratio, если нет явных тормозов с этим связанных. Кроме того, эффективней оптимизировать код самого приложения на предмет динамического формирования запросов, нежели пытаться сгладить недостатки этого кода настройками SQL сервера. |
||
21 фев 13, 14:58 [13961376] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
|
||
21 фев 13, 21:52 [13963721] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
Попробуйте таки EXEC sp_CONFIGURE 'optimize for ad hoc workloads', 1 RECONFIGURE Еще можно посмотреть что там в том кэше хотя бы в общих чертах.
|
|||||
21 фев 13, 22:20 [13963803] Ответить | Цитировать Сообщить модератору |
Sergey Sizov Member Откуда: Сообщений: 1566 |
|
||||
22 фев 13, 12:01 [13965910] Ответить | Цитировать Сообщить модератору |
stavgreengo Member Откуда: Сообщений: 710 |
max server memory (MB) 88000 из них 74,6Гб отдано под буферный и 7,98Гб под процедурные кэши. У скрипта начало срезалось, можете вложить заново ? |
|||||
22 фев 13, 14:30 [13967064] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34998 Блог |
попробуйте выполнить ) |
||
22 фев 13, 14:49 [13967222] Ответить | Цитировать Сообщить модератору |
stavgreengo Member Откуда: Сообщений: 710 |
то есть не срезалось, сорри за дезу ) но...
где подкрутить ? |
||
22 фев 13, 15:03 [13967358] Ответить | Цитировать Сообщить модератору |
komrad Member Откуда: Сообщений: 5607 |
подкрутил : ;WITH cacheobjects AS ( SELECT cacheobjtype, objtype, CAST(cast(SUM(ISNULL(cast(size_in_bytes as bigint),0)) as bigint)/1024./1024. AS DECIMAL(20,2)) AS TotalMB, AVG(ISNULL(cast(size_in_bytes as bigint),0))/1024. AS AvgKB, COUNT(*) AS [Count], SUM(usecounts) AS usecounts, AVG(CAST(usecounts AS BIGINT)) AvgUseCount, SUM(CASE WHEN usecounts = 1 THEN 1 ELSE 0 END) UsedOnceCount, CAST(SUM(CASE WHEN usecounts = 1 THEN ISNULL(size_in_bytes,0)/1024./1024. ELSE 0. END) AS DECIMAL(20,2)) AS UsedOnceMB FROM sys.dm_exec_cached_plans GROUP BY cacheobjtype, objtype ) SELECT cacheobjtype, objtype, TotalMB, AvgKB, [Count], AvgUseCount, UsedOnceCount, CAST(1.* UsedOnceCount/[Count] AS DECIMAL(20,2)) AS [UsedOnceCount%], UsedOnceMB, CAST(1.* UsedOnceMB/TotalMB AS DECIMAL(20,2)) AS [UsedOnceMB%] FROM cacheobjects UNION ALL SELECT 'Total', 'Total', SUM(TotalMB), CAST(SUM(TotalMB)/SUM(CAST([Count] AS BIGINT))*1024. AS DECIMAL(20,2)) AS AvgKB, SUM(Count), SUM(CAST(usecounts AS BIGINT))/SUM(CAST([Count] AS BIGINT)) AS AvgUseCount, SUM(UsedOnceCount), CAST(1.* SUM(UsedOnceCount)/SUM([Count]) AS DECIMAL(20,2)) AS [UsedOnceCount%], SUM(UsedOnceMB), CAST(1.* SUM(UsedOnceMB)/SUM(TotalMB) AS DECIMAL(20,2)) AS [UsedOnceMB%] FROM cacheobjects ORDER BY TotalMB DESC |
||||
22 фев 13, 15:10 [13967402] Ответить | Цитировать Сообщить модератору |
stavgreengo Member Откуда: Сообщений: 710 |
Такая ситуация считается нормальной ? К сообщению приложен файл. Размер - 64Kb |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
22 фев 13, 15:22 [13967504] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
|
||
22 фев 13, 22:30 [13969282] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
stavgreengo, 43% процедурного кэша занято запросами которые выполнились всего 1 раз, я не думаю что это очень хорошо. Вопрос в том, можно ли что-то сделать. Я просто не много знаю про 1С-ку. Или там реально очень много AdHoc запросов, или же они просто не параметризируются. Если так, то вряд ли что-то можно сделать и проще тупо забить на счетчик hit rates :) |
22 фев 13, 22:45 [13969337] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |