Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.04.02;
Скачать: [xml.tar.bz2];

Вниз

Запросы не поделили Buffer I/O   Найти похожие ветки 

 
Ринсвинд ©   (2015-07-23 14:58) [0]

Всем привет.

Есть сервер. Обычный, железный, не виртуальный. Не первой свежести, но все же неплохой: Windows server 2008 R2, 32 ГБ ОЗУ, 64 bit.

На нем стоит MS SQL SERVER 2012 standart edition.

В нем есть БД сторонней программы. Разумеется, ее нельзя менять, на нее нельзя навешивать триггеры, индексы и т.д. Но ее нужно мониторить: вылавливать определенные события и сообщать про них пользователям.

Для этого у меня есть программа, опрашивающая базу с определенной периодичностью. Все работало нормально до апгрейда ПО. Но вот сторонняя программа обновилась, это потребовало обновление БД, а вот железо осталось прежним.  Теперь пользователи сторонней программы начали жаловаться на фризы.

Монитор активности показывает, что во время выполнения запросов мониторящей программы, появляется несколько других запросов, ожидающих ресурса "Buffer I/O". Для отслеживания событий используются действительно крупные запросы, объединяющие в себе несколько таблиц с миллионами записей. Предположительно, новая версия MS SQL SERVER оказалась более прожорливой к ресурсам, и для выполнения запроса, ищущего события, съедаются все имеющиеся ресурсы.

Вряд ли получится оптимизировать запросы. Я и так из них все соки выжал... Согласно плану выполнения, основные затраты времени в самом большом запросе идут на поиск по кластерному индексу в большой таблице. Чуть меньше времени идет на сканирование еще одной очень большой таблицы. Даже индексы на нее навесить нельзя, т.к. она чужая...

Посоветуйте, пожалуйста, что можно сделать в данной ситуации? Возможно, в MS SQL SERVER есть какие-нибудь способы отслеживания событий, не влияющие на функционирование БД?

Если менять сервер, то, как я понимаю, прежде всего нужно ставить больше оперативки? Сейчас ее 32 ГБ. Замена сервера все равно рано или поздно будет необходима. Но сейчас это проблематично. Поэтому хотелось бы знать ваше мнение - действительно ли апгрейд может помочь, и, если да, то какой? Удвоение ОЗУ до 64 ГБ?

Заранее спасибо.


 
Ринсвинд ©   (2015-07-23 15:16) [1]

Еще возникла идея убрать файл подкачки. Но для этого тоже придется останавливать сервер, а системные администраторы говорят, что это нежелательно. Насколько это может помочь? Хотя, не думаю, чтобы MS SQL SERVER путал ОЗУ и подкачку и размещал свой буфер на жестком диске.


 
backuper   (2015-07-23 21:15) [2]

вопрос глупый, но все же.. (nolock) прописан в запросах?


 
Ринсвинд ©   (2015-07-24 08:42) [3]


> backuper   (23.07.15 21:15) [2]

Увы, но ни NoLock, ни даже уровень изоляции транзакции READ UNCOMMITTED не помогает... Дело не в блокировках, это видно и в мониторе активности.

Зато помогает постоянное выполнение одного запроса. Если выполнять его с интервалом в несколько секунд, почти все страницы участвующих в нем таблиц перекачиваются в пул, и запрос начинает выполняться на 20-30 сек а всего 5-10. Т.е., как я понял, дело именно в том, что оперативной памяти не хватает на то чтобы забуферизовать все. Отсюда и мое предположение, что если ее будет больше, то, возможно, SQL SERVER не будет выгружать из нее страницы предыдущих выборок, и не будет так много операций Buffer I/O. Но не факт...


 
Ринсвинд ©   (2015-08-06 12:53) [4]

Оказалось, что на сервере была 32-разрядная MS SQL SERVER, и использовалось не 32 ГБ ОЗУ, а 3.5ГБ... Удивительно не то, что появилась нехватка ресурса Buffer I/O, а то что ее не возникло раньше.


 
Rouse_ ©   (2015-08-06 12:59) [5]

Я может и не в тему, но на сколько я помню MS SQL использует AWE для доступа к памяти свыше 4 гигабайтного лимита (т.е. по факту должны использоваться все 32 гигабайта).


 
Ринсвинд ©   (2015-08-06 14:10) [6]


> Rouse_ ©   (06.08.15 12:59) [5]

Насколько я понял, в SQL SERVER 2012 уже нет AWE (https://support.microsoft.com/en-us/kb/2644592)


 
Rouse_ ©   (2015-08-06 14:36) [7]

О как оно, Михалыч, ну тогда да :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2017.04.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.001 c
15-1459882239
Игорь Шевченко
2016-04-05 21:50
2017.04.02
Кто что посоветует по перехвату вызовов API ?


1-1327322645
Light-blr
2012-01-23 16:44
2017.04.02
Выделенный элемент ListView при потере фокуса становится серым


15-1459978202
Юрий
2016-04-07 00:30
2017.04.02
С днем рождения ! 7 апреля 2016 четверг


2-1438149724
Abcdef123
2015-07-29 09:02
2017.04.02
Компиляция кода D2007 в XE8.


1-1350307626
Чайник
2012-10-15 17:27
2017.04.02
Обход компонентов на форме...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский