Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
Доброго времени суток.

Прошу помочь.

На работе имеем 2 сервера. Оба в связанны друг с другом. Сервер #1 для работы программы (около 200 клиентов подключается ежедневно), сервер #2 - для работы сайта. Между ними есть репликация: сервер 1 - распространитель, сервер 2 - подписчик. Есть 3й сервер, тоже подписчик, но про него не будем. В общем, на сервере 2 уменьшил время ожидания запроса с 600 сек. до 30. Сайт так же закрывает запрос через 30 сек. Выделение памяти под запрос изменил с 1024 на 512 кб. После этого сайт стал ощутимее быстрее отвечать, можно сказать моментально. Но вот проблема в том, что в момент репликации сервер 2 на столько просаживается, что сайт практически перестает получать данные от сервера. Сервера на Win Server 2008. MS SQL 2008 R2 у сервера 1, 2012 - у сервера 2. База на сервере 1 весит 500гб, на сервере 2 - 250, т.к. реплицируется часть. Вот и получается, как только начинается репликация, сервер 2 "встает", именно MS SQL, сама машина работает хорошо. В среднем репликация 5-6 млн. команд в очереди, бывает и по 15 млн. Оба сервера на Intel Xeon (по 2 в каждом), ОЗУ 48гб, жесткие диски SSD в RAID-1 (если память не изменяет).

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

Прошу помочь советом, верны ли предположения на тему ОЗУ?

Заранее спасибо!
17 авг 13, 17:57    [14722088]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
ChiwosFake
Вот и получается, как только начинается репликация, сервер 2 "встает"
А какого типа репликация, что значит "начинается"?
17 авг 13, 18:38    [14722124]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
alexeyvg,

Односторонняя репликация. Может не совсем верно выразился. Имею ввиду, когда в таблицы базы распространителя записывают новые данные, агент инициализируется, после чего начинает доставку на сервер-подписчик. Я про этот момент.
17 авг 13, 18:47    [14722138]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
Репликация транзакций*
17 авг 13, 18:53    [14722143]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
ChiwosFake,

На подписчике верните настройки обратно и включите RCSI.
17 авг 13, 19:37    [14722173]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31984
ChiwosFake
alexeyvg,

Односторонняя репликация. Может не совсем верно выразился. Имею ввиду, когда в таблицы базы распространителя записывают новые данные, агент инициализируется, после чего начинает доставку на сервер-подписчик. Я про этот момент.
Так какая репликация, транзакционная?

Если да, то она вообще обычно очень слабо влияет.
Может, снапшёт-репликация? Тогда понятно.
17 авг 13, 19:56    [14722194]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
invm,

т.е. вернуть и время ожидания, и кол-во памяти на запрос? Что посоветуете на счет настройки "Использовать волокна Windows (использование упрощенных пулов)"? Можно по-подробнее про rcsi?
17 авг 13, 20:00    [14722197]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
alexeyvg,

Репликация транзакций. Да, на втором подписчике репликация проходит моментально, на первом (основном), который как раз отдает данные на сайт, репликация идет очень туго. Я думаю это из-за того, что давно не делали реиндексацию. Просто нет возможности ее делать постоянно. А последнее время вообще проблематично, т.к. база большая, данных много, и не всегда получается уложиться в ночь. Одна из таблиц, которая участвует в репликации содержит в себе порядка 1,8 млрд записей. Каждый день в ней перезаписывается порядка 50 млн. строк. К примеру клиент может после окончания расчета разом в базу записать 5-10 млн строк. Иногда больше. И соответственно это все начинает реплицироваться. На распространителя это никак не вляет, т.к. его записи не просматривают тысячи пользователей через сайт, но вот подписчик, получается, что при запросе на сайте процедура начинает делать отбор из этой таблицы. Пока репликация простаивает, отбор на сайте происходит быстро. Как только начинается передача записей на подписчик сайт может даже не открыться толком, т.к. все процедуры вызываемые php скриптами зависят именно от этой громадной таблицы. К сожалению иначе никак.
17 авг 13, 20:13    [14722210]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
ChiwosFake
т.е. вернуть и время ожидания, и кол-во памяти на запрос?
Да
ChiwosFake
Что посоветуете на счет настройки "Использовать волокна Windows (использование упрощенных пулов)"?
Посоветую не трогать, пока не выясните что это и зачем. И подходит ли для вашего случая.
ChiwosFake
Можно по-подробнее про rcsi?
Судя по всему, у вас банальный конфликт читателей и писателей. Поможет перевод читателей на какой-либо версионный уровень изоляции транзакций. Самый простой и прозрачный способ, если у вас читатели работают на read committed, - включить у БД опцию READ_COMMITTED_SNAPSHOT.
Understanding Row Versioning-Based Isolation Levels
17 авг 13, 20:38    [14722238]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
Посоветую не трогать, пока не выясните что это и зачем. И подходит ли для вашего случая.


На самом деле описание гласит, что мол повышает производительность.

Судя по всему, у вас банальный конфликт читателей и писателей. Поможет перевод читателей на какой-либо версионный уровень изоляции транзакций. Самый простой и прозрачный способ, если у вас читатели работают на read committed, - включить у БД опцию READ_COMMITTED_SNAPSHOT.
Understanding Row Versioning-Based Isolation Levels
[/quote]

Спасибо большое, почитаю побольше, может поможет.

А что на счет увеличения ОЗУ? Поможет?
17 авг 13, 21:15    [14722293]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
ChiwosFake
На самом деле описание гласит, что мол повышает производительность.
Не нужно вырывать из контекста. В документации же сказано в каком именно случае следует использовать этот режим.
ChiwosFake
А что на счет увеличения ОЗУ? Поможет?
Хотя памяти много не бывает, все же следует сначала убедиться, что узкое место именно память.

ЗЫ: Оптимизация методом "тыка" обычно ни к чему хорошему не приводит.
17 авг 13, 22:37    [14722443]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
Да, я согласен что мой метод похож на метод тыка. Поэтому и задаю вопросы. Хочу понять как можно больше. Знаю очень мало...
17 авг 13, 23:47    [14722554]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
ChiwosFake
Что посоветуете на счет настройки "Использовать волокна Windows (использование упрощенных пулов)"?
Не советовал бы. Фибры - довольно скользкая штука, подозреваю что когда-то они были введены для галочки. Примерно как создание баз на RAW-разделах - теоретически до сих пор подддерживается и возможно (вроде бы?), но на практике никто не использует.

В моей практике включение lightweight pooling приводило к внезапным необъяснимым тормозам. Ну и даже в доке сказано, что теоретический прирост производительности, если и будет, то очень небольшой.
18 авг 13, 08:30    [14722769]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
Andrey Dmitriev
Member

Откуда:
Сообщений: 2
+1. Один из главных поинтов - надо все мерить и то что в одном случае стало быстрее еще ни о чем не говорит.
Заодно и ссылка на предстоящий доклад: http://codefreeze.timepad.ru/event/77260/
19 авг 13, 00:23    [14723690]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
Andrey Dmitriev
+1. Один из главных поинтов - надо все мерить и то что в одном случае стало быстрее еще ни о чем не говорит.
Заодно и ссылка на предстоящий доклад: http://codefreeze.timepad.ru/event/77260/


С удовольствием посетил бы, но к сожалению я в Москве и покинуть рабочее место не смогу.

На счет RCSI: проверил, в настройках действительно ISOLATION LEVEL установлен в READ COMMITTED. У меня вопрос: как много времени может занять включение READ_COMMITTED_SNAPSHOT в базе размером в 250 гб, хотя бы примерно? И не приведет ли включение данного параметра к какому-либо побочному эффекту для репликации? Очень не хочется делать переинициализацию подписки...
19 авг 13, 13:10    [14725251]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
Andrey Dmitriev
Member

Откуда:
Сообщений: 2
Запись видео никто не отменял - видео будет.
20 авг 13, 01:00    [14728361]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
Andrey Dmitriev,

это замечательно ) кстати, снапшот включил, благодарю за то что направили, и объяснили - очень много интересного нашел в этом направлении, доволен полученной информацией, многое понял, буду продолжать искать информацию в данном направлении. сейчас базы проходят оптимизацию индексов, завтра будет видно что к чему )))
20 авг 13, 01:23    [14728373]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
В общем, сейчас репликация проходит просто молниеносно. Беда с сайтом осталась. И я подумал: это все, получается, помогло только со стороны репликации (оптимизация индексов - точно, снапшот - не знаю, но и хуже не стало)... Процедуры начинают очень долго отрабатывать в часпик, что уж процедуры - если зайти на сервер, то там даже список процедур развернуть сложно. Вот понять пока не могу - что не так. И еще подумал, стоит ли в tempdb включать снапшот?
20 авг 13, 16:38    [14731848]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
ChiwosFake
стоит ли в tempdb включать снапшот?

Так, что ли?
ALTER DATABASE tempdb SET READ_COMMITTED_SNAPSHOT ON 

Msg 5058, Level 16, State 1, Line 1
Option 'READ_COMMITTED_SNAPSHOT' cannot be set in database 'tempdb'.
20 авг 13, 17:03    [14732005]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
ChiwosFake
Member

Откуда: RF
Сообщений: 11
Гость333,

прикольно, я сморозил глупость значит...
20 авг 13, 17:05    [14732020]     Ответить | Цитировать Сообщить модератору
 Re: Предположение по оптимизации конкретной БД. Верно ли?  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
ChiwosFake,

Счётчики производительности SQL Server и Windows
Семь наиболее полезных счётчиков эффективности
sys.dm_os_waiting_tasks (Transact-SQL)
20 авг 13, 17:36    [14732197]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить