Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Добрый день. Подскажите как понять что SQL Server-у памяти не хватает? Какие признаки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 17:46 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
SQL Server 2008 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 17:47 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Как-то запросом это понять можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 17:48 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 17:50 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
дамперДобрый день. Подскажите как понять что SQL Server-у памяти не хватает? Какие признаки? Признак первый. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. И неофициальная ссылка . Признак второй. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И официальная ссылка . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:05 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич https://www.google.ru/search?q=mssql memory bottleneck&oq=mssql memory bottleneck&aqs=chrome..69i57.9247j0j7&sourceid=chrome&ie=UTF-8 Смотрю представление: sys.dm_os_performance_counters и ни как не могу понять какой процент в кэш попадает ( Он же в процентах быть должен... в perfmon посмотреть не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:10 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPдамперДобрый день. Подскажите как понять что SQL Server-у памяти не хватает? Какие признаки? Признак первый. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. И неофициальная ссылка . Признак второй. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. И официальная ссылка . Спасибо. Пытаюсь понять что выводит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:13 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPПризнак первый. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. PLE_SECS = 1637 сек вроде больше 300 сек. Сильно ли 1637 - страшное значение? ... пока со всторым скриптом разбираюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:17 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
дамперAndy_OLAPПризнак первый. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. PLE_SECS = 1637 сек вроде больше 300 сек. Сильно ли 1637 - страшное значение? ... пока со всторым скриптом разбираюсь... Запустите тяжелый и длинный запрос. Если после его окончания значение PLE упадет практически до нуля - памяти для SQL так мало, что в кэши ничего не помещается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:31 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPдамперпропущено... PLE_SECS = 1637 сек вроде больше 300 сек. Сильно ли 1637 - страшное значение? ... пока со всторым скриптом разбираюсь... Запустите тяжелый и длинный запрос. Если после его окончания значение PLE упадет практически до нуля - памяти для SQL так мало, что в кэши ничего не помещается. Понял, благодарю! ... пока со вторым запросом разбираюсь, там sql_memory_utilization_percentage=100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:35 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAP, разюбираюсь с sys.dm_os_process_memory там есть два последних поля, они сейчас 0. Если бы с памятью было бы все плохо - они бы стали 1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:46 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
дамперAndy_OLAPпропущено... Запустите тяжелый и длинный запрос. Если после его окончания значение PLE упадет практически до нуля - памяти для SQL так мало, что в кэши ничего не помещается. Понял, благодарю! ... пока со вторым запросом разбираюсь, там sql_memory_utilization_percentage=100 Используй Силу, Люк! (c) Можно скачать официальную утилиту мелкомягких под названием RamMap, прочитать кошерную статью из официального блога , учесть различные нюансы . И понять, что куда идет на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 18:56 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
дампер, Оценить можно так: Код: sql 1. 2. 3. 4. 5. 6. Если Target > Total, то памяти не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 19:05 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPдамперпропущено... PLE_SECS = 1637 сек вроде больше 300 сек. Сильно ли 1637 - страшное значение? ... пока со всторым скриптом разбираюсь... Запустите тяжелый и длинный запрос. Если после его окончания значение PLE упадет практически до нуля - памяти для SQL так мало, что в кэши ничего не помещается. ерунду сказали, и что он получит? может такой выборки никогда не будет? ну да после этого запроса упадет PLE до нуля, но это не показатель. Как выше уже говорили: ple за период, а не за запрос или час buffercash операци lazy wrire логи сиквела смотрите, если серверу совсем плохо, то это отразится в логах. плюс есть еще пару счетчиков, связанные со страницами и dmv, но не могу точно сказать. все это надо анализировать совместно, а не отдельно, Как то на курсах в MS говорили, что идеально когда память на сервере равна объему бд, но это применимо когда бд небольшие. У меня бд десятки Тб, памяти столько не поставишь, а даже еще сделаешь хуже серверу с огромным объемом памяти. А конкретно по вашему вопросу и случаю, описали бы какой объем у вас есть, размер бд, и почему такой вопрос задаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 00:30 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
invmдампер, Оценить можно так: Код: sql 1. 2. 3. 4. 5. 6. Если Target > Total, то памяти не хватает. не показатель, отчасти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 00:30 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
invmдампер, Оценить можно так: Код: sql 1. 2. 3. 4. 5. 6. Если Target > Total, то памяти не хватает. А если равны? о_О У меня они равны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 10:22 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
дамперУ меня они равны.Тогда смотрите другие счетчики: Page Life Expectancy Buffer Cache hit ratio Page reads / sec Page writes / sec Lazy writes / sec Memory Grants Pending Total Server Memory Target Server Memory Available Mbytes Pages / sec Paging File % Usage Почему вы вообще решили, что у вас проблемы с памятью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 10:57 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Смешались кони люди. Дельное только invm сказал. Так, по порядку: Запустите тяжелый и длинный запрос. Если после его окончания значение PLE упадет практически до нуля - памяти для SQL так мало, что в кэши ничего не помещается. Вообще не показатель. У меня в системе есть хранимка которая выполняется раз в 30 мин. и собирает статистику, выполняется минуты 3-5, выгребает чуть ли не 50 ГБ при кэше в 20. PLE падает до нуля, а Lazy Write счетчик до 900 подскакивает. Этот запрос выбирает данные которые потом и нафиг не нужны следующим запросом, в итоге PLE у меня не бывает больше 1700 примерно, а после этого запроса счетчик Page Read какое то время показывает довольно высокие значения. Вывод, будет скоро брать оперативу, в раза 3 увеличим и будет у меня счастье. Я к тому что надо знать нагрузку и понимать ее приничины, а не просто смотреть на цифры. Buffer Cache hit ratio не показатель - https://www.red-gate.com/simple-talk/sql/database-administration/great-sql-server-debates-buffer-cache-hit-ratio/ Смотрите счетчики которые написал invm, смотрите самые дорогие хранимки и запросы в кэше по i\o Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. Также если совсем все хреново можно еще посмотреть dm_exec_query_resource_Semaphores и dm_exec_query_memory_grants Также учтите, что нехватка памяти может быть не нехваткой как таковой, а просто плохо написанным запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 12:24 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
дамперразбираюсь с sys.dm_os_process_memory там есть два последних поля, они сейчас 0. Если бы с памятью было бы все плохо - они бы стали 1? Это значит, что прямо сейчас памяти у вас хватает. Было бы 1 - прямо сейчас не хватает. Можно посмотреть, не было ли нехватки памяти в прошлом (обычно в течение нескольких дней) с помощью запроса к sys.dm_os_ring_buffers . EventTime - время события, IndicatorsProcess = 2 - Sql Server-у не хватало памяти, IndicatorsSystem = 2 - ОС не хватало памяти. Но, честно говоря, использую этот запрос только для сравнения со средними значениями. Если сообщений о нехватки памяти за день неожиданно стало больше, чем было раньше - стоит посмотреть, что произошло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 12:55 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
invmдампер, Оценить можно так: Код: sql 1. 2. 3. 4. 5. 6. Если Target > Total, то памяти не хватает. Хм, можете пояснить или указать источник? Допустим, Target=56GB, Total=40 GB. Т.е. серверу больше 40 пока не надо. Почему можно считать, что не хватает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 22:26 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
step_ksДопустим, Target=56GB, Total=40 GB. Т.е. серверу больше 40 пока не надо. Почему можно считать, что не хватает?Не обязательно не хватает, а может быть не хватает. Поэтому я и написал "оценить". https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1e51965d-fbb1-4f73-b977-5284516b3d45/total-server-memory-vs-target-server-memory-made-me-crazy?forum=sqldatabaseengine If Total Server Memory is less than Target Server Memory it can be a sign of memory pressure ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2018, 23:51 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
invm, И самое главное авторHowever, I very rarely rely on this as a way to look for memory pressure, there a plenty of other counters that give you a better clue when SQL is in memory contention. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2018, 02:24 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Странно что еще не написали о самом простом: DBCC MEMORYSTATUS Материала для анализа там более чем достаточно. Ну и совсем уж апокалиптический евент 17130 "Not enough memory for the configured number of locks" Неужто никто не наступал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2018, 23:51 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
aleksrovсмотрите самые дорогие хранимки и запросы в кэше по i\oВ случае серьезного memory pressure кэш планов будет достаточно быстро вымываться, так что толку на него смотреть особо нету. Да и впринципе, не понятно какая связь между средним количеством логических операций и памятью? Ну допустим есть дорогие запросы, а как это покажет что "SQL Server-у памяти не хватает"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2018, 01:54 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
ColСтранно что еще не написали о самом простом: DBCC MEMORYSTATUS Материала для анализа там более чем достаточно.Я бы не назвал это самым простым, и скорее проблема в том что материала слишком много. Надо точно знать куда смотреть. У вас есть какие то четкие критерии, типа если это значение больше такого то, значит серверу памяти не хватает? ColНу и совсем уж апокалиптический евент 17130 "Not enough memory for the configured number of locks" Неужто никто не наступал?Нет не случалось. Был другой весьма редкий случай "нехватки памяти". CPU через 1-2 неделю после перезагрузки сервера стабильно уходило в 90%+, при этом все предложенные тут счетчики памяти не показывали вообще ничего, PLE намного больше 300, Free Memory так вообще 4Гб, всякие Total, Target тоже ничего вменяемого. Единственные аномалии были в высоком RESOURCE_SEMAPHORE_QUERY_COMPILE ну и соответственно Big Gateway-и проседали. В итоге, как оказалось, один из клерков (вроде этот USERSTORE_TOKENPERM) утекал, забирая себе всю память, вытесняя всех остальных, но только внутри Stolen Server Memory, не забирая память у Database Cache и не захватывая больше определенного лимита из Free Memory. Соответстенно PLE и прочие совсем не страдали, зато очень сильно страдал Plan Cache, что собственно и приводило к постоянным вытеснениям планов и компиляциям (не рекомпиляциям) ну и как следствие высокой CPU нагрузке. Как раз таки только DBCC MEMORYSTATUS хоть как то намекал что преблема с памятью, но естественно нужно было знать, что конкретно искать, к тому же ожидания на Gateway были далеко не постоянными, так что нужно было еще и поймать тот момент когда это происходило. Ко всему вышеперечисленному, я бы добавил что нужно смотреть на ожидания, а конкретно на: PAGEIOLATCH_XX RESOURCE_SEMAPHORE RESOURCE_SEMAPHORE_QUERY_COMPILE Плюс ожиданий в отличие от предложенных DMV, еще и в том, что они накапливают информацию, а не показывают ее на конкретный момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2018, 02:33 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
MindНадо точно знать куда смотреть. Я бы сказал там надо весь вывод анализировать отдельно по блокам, да я думаю Вы это проходили судя по описанию меморилика стукнувшего по голове процессора Mind Был другой весьма редкий случай "нехватки памяти". Это скорее из области багов, про такое хорошо байки травить когда все уже закончилось. :) Эвент 17130 же является прямым следствием нехватки памяти. Я на него наступил когда заведомо установил сервер с 20% от запланированного объема памяти, логисты наши тогда сильно "провинились" а у меня не было других вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2018, 16:31 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Mindaleksrovсмотрите самые дорогие хранимки и запросы в кэше по i\oВ случае серьезного memory pressure кэш планов будет достаточно быстро вымываться, так что толку на него смотреть особо нету. Да и впринципе, не понятно какая связь между средним количеством логических операций и памятью? Ну допустим есть дорогие запросы, а как это покажет что "SQL Server-у памяти не хватает"? Не то в order by, там есть total_physical_reads, по нему отфильтровать. Среднее кол-во лог. операций покажет что запрос читает много страниц, как вариант. Дорогие запросы покажут что дело именно в них, к примеру как я описывал выше. Или еще пример, есть запрос, в where была конструкция where cast (column as date) =, только убрав это, запрос стал выполняться быстрее, вместо scan seek и кол-во лог. чтений упало в 3 раза. Этот же запрос, смотрим дальше, from table as t1 left join table2 as t2..... прикол в том что тут join и нафиг не нужен был, в select не было ни одного стобца из t2, как не было ни в where ни в group by, убираю его (результат запроса естественно не меняется) и log read падает еще больше так как t2 с 10 млн строк читать не нужно. Итого кол-во прочитанных страниц упало в раз 10 наверно. А теперь если таких запросов много и они выгрибают куча данных, естетсвенно памяти будет не хватать, в 90% проблемы с памятью связанны именно с этим, то что описали вы, это уже оставшиеся 10%. Я к тому что сначала стоит посмотреть что у вас выполняется, да и как я писал вообще знать вашу нагрузку, может у вас каждый час запускается отчет для руководства который пол базы читает. Статистику ожиданий разумеется надо посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 05:40 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Коллеги, благодарю за ответы. т.к. около 95% памяти - это Database Cache Memory, думаю надо искать что в кэше. Database Cache Memory - это, как я понял, кэш страниц базы данных. Т.е. какие-то таблицы в кэшэ. Подскажите пожалуйста, 1) как выяснить что за таблицы в кэше? 2) Как выяснить какие запросы помещают эти данные в кэш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 10:44 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
neodum1) как выяснить что за таблицы в кэше? Выполнить запрос из примера B - sys.dm_os_buffer_descriptors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 17:28 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Eleanorneodum1) как выяснить что за таблицы в кэше? Выполнить запрос из примера B - sys.dm_os_buffer_descriptors Да, спасибо. Выполнил этот же запрос вот из этой статьи: https://docs.microsoft.com/ru-ru/sql/relational-databases/system-dynamic-management-views/sys-dm-os-buffer-descriptors-transact-sql Думаю это то же самое, только на русском. Сейчас остался открытым второй вопрос: 2) Как выяснить какие запросы помещают эти данные в кэш? И появился новый: Можно ли как-нибудь ограничить Database Cache Memory напрямую и имеет ли смысл это делать? Модератор: 21244208 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2018, 18:24 |
|
||
|
Как понять что SQL Server-у не хватает памяти?
|
|||
|---|---|---|---|
|
#18+
Andy_OLAPПризнак первый. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Это всё есть в Код: sql 1. 2. И вы забыли про связь PLE с numa и объёмом памяти. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Но начинал бы я с sys.dm_os_wait_stats. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 20:03 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1690119]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 348ms |

| 0 / 0 |
