Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Добрый день! Не нашел ответа в схожих темах, более того - в целом, и в интернете, и в его англоязычном сегменте, тоже ничего найти не удается. Что само по себе странно - ситуация воспроизводится в целом ряде случаев на разном оборудовании и софте.

Собственно, проблема:

Установлена связка MS SQL + 1С 8.3. База - типовая конфигурация бухгалтерии. При попытке выполнить достаточно тяжелый запрос, например, запросить отчет по всем основным средствам - он отрабатывает секунд 30, выводит результат на экран. Далее, ничего не меняя в самом запросе, отчет запрашивается еще раз - результат выдается через те же 30 секунд. Попытки можно продолжать и дальше - ничего не меняется, время выдачи одинаковое.
Ту же самую базу ради интереса носили к коллегам, которые занимаются вопросом 1С профессионально - на их сервере поведение совершенно другое. В частности - первый запрос выполняется те же условные 30 секунд, но каждая последующая попытка запросить данные выполняется мгновенно. Т.е. данные берутся из кэша MS SQL.
Естественно, нам требуется добиться такой же условно-правильной работы софта.

Что делали:
За недостатком знаний пробовали брутфорсить проблему )))

1. Использовали все более мощное оборудование, благо возможность есть. Начинали с простого офисного компа с 8 Гб оперативки, думали - может, памяти не хватает. Крайний сервер - 64 Гб оперативки, Xeon-E5 2403, база и журнал разнесены на разные диски. Таким образом, исключаем зависимость от железа.
2. Меняли версии MS SQL - 2008, 2012.
3. Меняли сервер приложений 1С - 8.2, 8.3, 32/64 бит.

Что установлено сейчас, по железу-софту:

MS Windows Server 2012R2 standart, x64
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Aug 19 2014 12:21:34 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )
Сервер 1С 8.3.7.1949, 32 бита - по лицензии
сервер - 64 Гб оперативки, Xeon-E5 2403, база и журнал разнесены на разные диски

MDOP=1, память SQL ограничена 51 200 Гб, системному пользователю сервиса MSSQL даны права на блокировку выгрузки страниц из памяти. Планы обслуживания базы настроены - перестроение индекса, обновление статистики, очистка процедурного кэша.

К сообщению приложен файл. Размер - 6Kb
24 мар 16, 10:43    [18971987]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
Т.е. данные берутся из кэша MS SQL.

Вы так думаете или вы так промониторили этот процесс ?
24 мар 16, 10:45    [18971995]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
ddobrynin
очистка процедурного кэша

ddobrynin
MDOP=1

Что-то меня смущают Ваши настройки... Вы говорите, что на другом сервере ситуация другая, так быть может стоит посмотреть различие в настройках. Определить почему сам запрос тормозит. Привести его план выполнения. Посмотреть на то как вытесняется память из BufferPool и почему.
24 мар 16, 10:53    [18972019]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
память SQL ограничена 51 200 Гб, системному пользователю сервиса MSSQL даны права на блокировку выгрузки страниц из памяти.

Настройки настройками, а вы мониторили реальные размеры памяти и ее заполнение ?
24 мар 16, 10:59    [18972038]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory
ddobrynin
Т.е. данные берутся из кэша MS SQL.

Вы так думаете или вы так промониторили этот процесс ?


Скажем так - мне объяснили товарищи, у которых все работает как надо. Конкретно у них не мониторили.
У себя на проблемной базе запускал профайлер, там видна серия из запросов к разным таблицам, у каждого свое время, больше или меньше. Как посмотреть, откуда берутся данные - из базы или из кэша - не знаю.

Вы считаете, механизм другой?
24 мар 16, 12:28    [18972537]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
AlanDenton
ddobrynin
очистка процедурного кэша

ddobrynin
MDOP=1

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


По порядку:
- настройки на другом сервере - сличали, там практически все по дефолту;
- торможение запроса - фактически, он не тормозит, время выполнения на данной базе в пределах нормы. Запрос именно что не кэшируется. Могу неправильно употреблять данный термин. Нормальная ситуация выглядит так - первый раз выполняется долго, второй раз - вообще без задержки. Ненормальная - постоянно выполняется долго. Какой другой механизм, кроме использования некоего кэша, позволяет выплевывать с такой скоростью данные - не знаю.
- Можно подробнее про вытеснение памяти?
24 мар 16, 12:34    [18972565]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory
ddobrynin
память SQL ограничена 51 200 Гб, системному пользователю сервиса MSSQL даны права на блокировку выгрузки страниц из памяти.

Настройки настройками, а вы мониторили реальные размеры памяти и ее заполнение ?


Через диспетчер задач. Там видно - после перезагрузки сервера процесс MSSQL занимает ~ 450 Мб. После формирования отчета - прирастает еще МБ 100 где-то. После этого объем почти совсем не меняется, если только не начать делать что-то другое. Т.е. повторное формирование отчета прироста памяти не вызывает.
Активности в базе нет, никто не пользует. Боевая пока в другом месте, но там картина та же, с поправкой на постоянное использование.
24 мар 16, 12:38    [18972591]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
Через диспетчер задач.

Это неправильное срество мониторинга

ddobrynin
Там видно - после перезагрузки сервера процесс MSSQL занимает ~ 450 Мб. После формирования отчета - прирастает еще МБ 100 где-то.

И на другом севрере тоже самое ?
24 мар 16, 12:41    [18972602]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
o-o
Guest
ddobrynin
Как посмотреть, откуда берутся данные - из базы или из кэша - не знаю.

set statistics io on
и смотреть там логические чтения или физические.
последние это то, что с диска пришлось читать.
24 мар 16, 12:47    [18972630]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory
ddobrynin
Через диспетчер задач.

Это неправильное срество мониторинга


Не могу спорить, не специалист. Подскажите, к какой цели мы приближаемся, уточняя эти моменты? Что сделать для того, чтобы приближаться быстрее/правильнее?
24 мар 16, 13:13    [18972765]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory

ddobrynin
Там видно - после перезагрузки сервера процесс MSSQL занимает ~ 450 Мб. После формирования отчета - прирастает еще МБ 100 где-то.

И на другом севрере тоже самое ?


Если другой сервер - это "правильный" сервер, то там выглядит иначе. SQL начинает подбирать все память, достигая максимальной отведенной ему границы, например это происходит, если увеличить объем доступной памяти в настройках.
24 мар 16, 13:15    [18972778]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
o-o
ddobrynin
Как посмотреть, откуда берутся данные - из базы или из кэша - не знаю.

set statistics io on
и смотреть там логические чтения или физические.
последние это то, что с диска пришлось читать.


эээ... нельзя ли детальнее? в каком месте будет видно? В профайлере, или в студии? Или где?
24 мар 16, 13:18    [18972789]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
Подскажите, к какой цели мы приближаемся, уточняя эти моменты? Что сделать для того, чтобы приближаться быстрее/правильнее?

Не брать информацию о кэшировании с потолка.
Не брать данные о текущих потребляемых ресурсах из диспечера.

Использовать для поиска узких мест стандартные методики - счетчики производительности, трассировку.
После нахождения таковых искать способы оптимизации этих конкретных мест.
24 мар 16, 13:18    [18972796]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
Если другой сервер - это "правильный" сервер, то там выглядит иначе. SQL начинает подбирать все память, достигая максимальной отведенной ему границы, например это происходит, если увеличить объем доступной памяти в настройках.

И на какие выводы это наводит ?
Что на 550Мб памяти серверу гораздо труднее кэшировать, чем на 51500 Мб ?
24 мар 16, 13:20    [18972804]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory
ddobrynin
Подскажите, к какой цели мы приближаемся, уточняя эти моменты? Что сделать для того, чтобы приближаться быстрее/правильнее?

Не брать информацию о кэшировании с потолка.
Не брать данные о текущих потребляемых ресурсах из диспечера.

Использовать для поиска узких мест стандартные методики - счетчики производительности, трассировку.
После нахождения таковых искать способы оптимизации этих конкретных мест.


Одним словом - я голословно утверждаю о том, что в нормальной ситуации данные берутся из кэша. Теперь я должен обосновать то, что они должны браться именно оттуда. Я правильно понял, что вы подводите меня к этой мысли?
24 мар 16, 13:27    [18972843]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory
ddobrynin
Если другой сервер - это "правильный" сервер, то там выглядит иначе. SQL начинает подбирать все память, достигая максимальной отведенной ему границы, например это происходит, если увеличить объем доступной памяти в настройках.

И на какие выводы это наводит ?
Что на 550Мб памяти серверу гораздо труднее кэшировать, чем на 51500 Мб ?


Не знаю. Я не сервер - трудно это или нет, виднее ему ))

Я опять попробую перевести на понятный язык: сервер в нормальной ситуации тут же, после холодного старта, должен занять всю доступную отведенную ему память?
24 мар 16, 13:30    [18972866]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
Одним словом - я голословно утверждаю о том, что в нормальной ситуации данные берутся из кэша. Теперь я должен обосновать то, что они должны браться именно оттуда. Я правильно понял, что вы подводите меня к этой мысли?

Вы голословно объявили _причину торможения_.
А не то, что при наличии данных в кэше, данные берутся из кэша.

ddobrynin
Не знаю. Я не сервер - трудно это или нет, виднее ему ))

Т.е. вы где-то поставили какие то галочки/цифирки и считаете, что все остальное - это дело сервера ?

ddobrynin
Я опять попробую перевести на понятный язык: сервер в нормальной ситуации тут же, после холодного старта, должен занять всю доступную отведенную ему память?

Сервер должен попытаться сделать с памятью то, что указано в его конфигурации.
24 мар 16, 13:35    [18972904]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17417
автор
Я опять попробую перевести на понятный язык: сервер в нормальной ситуации тут же, после холодного старта, должен занять всю доступную отведенную ему память?


нет.
24 мар 16, 13:49    [18973040]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory
Т.е. вы где-то поставили какие то галочки/цифирки и считаете, что все остальное - это дело сервера ?
Сервер должен попытаться сделать с памятью то, что указано в его конфигурации.


Могу я более конструктивный вариант общения? Сейчас я себя чувствую юным джедаем, которого упрекают в непонятном. Допустим, я заблуждаюсь в механизме происходящего. Это нормально, иначе разобрался бы сам. Советы никому не даю, наоборот - прошу.

Отвечая на вопросы:
"Т.е. вы где-то поставили какие то галочки/цифирки и считаете, что все остальное - это дело сервера ?"
Теоретически - да. Никаких специальных инструкций на этот счет не нашел, люди у которых работает - также наличие таких инструкций отрицают. Должно работать "из коробки".
"Сервер должен попытаться сделать с памятью то, что указано в его конфигурации."
Опять таки, не могли бы Вы подсказать, что и где в конфигурации может быть не так?
24 мар 16, 13:50    [18973049]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17417
автор
Опять таки, не могли бы Вы подсказать, что и где в конфигурации может быть не так?

SELECT *
FROM sys.configurations
24 мар 16, 13:52    [18973069]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17417
мил человек - ну хоть доку открой. она даже на русском есть.
24 мар 16, 13:52    [18973079]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
ddobrynin,

сделайте два трейса (первый и последующий) на одном сервере и на другом и проанализируйте
там должны быть видны явные различия
из них и будуте делать выводы
24 мар 16, 13:58    [18973127]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
Отвечая на вопросы:
"Т.е. вы где-то поставили какие то галочки/цифирки и считаете, что все остальное - это дело сервера ?"
Теоретически - да. Никаких специальных инструкций на этот счет не нашел, люди у которых работает - также наличие таких инструкций отрицают. Должно работать "из коробки".

Вы "хелп из коробки" прочитали ? Про конфигурации памяти хотя бы?

ddobrynin
Опять таки, не могли бы Вы подсказать, что и где в конфигурации может быть не так?

Для начала узнать, что за настройки в данный момент заданы серверу
24 мар 16, 13:58    [18973138]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
ddobrynin
Member

Откуда:
Сообщений: 18
Glory
Вы "хелп из коробки" прочитали ? Про конфигурации памяти хотя бы?


Честное пионерское: читал много. О чем написал в начале топика. На форум лезу в последнюю очередь, когда совсем глухо.

Вы говорите о каком-то конкретном документе? Если так, можете дать ссылку?

Пока что полез сравнивать конфиги, спасибо, отпишусь.
24 мар 16, 14:06    [18973203]     Ответить | Цитировать Сообщить модератору
 Re: Не кэшируются запросы 1С для последующей выдачи  [new]
Glory
Member

Откуда:
Сообщений: 104751
ddobrynin
Честное пионерское: читал много.

Не надо читать много. Нужно прочитать Memory Management Architecture хотя бы

ddobrynin
Вы говорите о каком-то конкретном документе? Если так, можете дать ссылку?

"В коробке" MSSQL есть хелп. Он также есть на сайте производителя
24 мар 16, 14:11    [18973245]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить