Как правильно настроить MS SQL сервер для работы с 1С

Опубликовал a-novoselov в раздел Администрирование - Оптимизация БД (HighLoad)

Путем проб и ошибок, путем тестирования на 200+ живых пользователей, консультаций с десятками Гуру и поиска по сотням официальных и не очень сайтов был разработан оптимальный вариант настроек MS SQL для круглосуточной работы более, чем 200 пользователей одновременно.

 1. Настройка сервера

Во-первых нам нужен только сервер, остальные службы, которые к нему относятся и возможно кто-то ими пользуется, нам только тормозят работу. Останавливаем и отключаем такие службы, как FullText Search (у 1С собственный механизм полнотекстового поиска), Integration Services и иже с ними.

Оставляем только:

SQL Server (sqlservr.exe)

SQL Server Agent (SQLAGENT.exe)

SQL  Writer (sqlwriter.exe)

Далее в свойствах сервера, через Server Management Studio устанавливаем:

 

Максимально отведенное серверу количество памяти из расчета:

[Общее количество оперативной памяти сервера] – [4ГБ под систему(2ГБ если Win2003)] – [1,5 ГБ * количество процессов rphost (если SQL и 1С на одном сервере вращаются.)] Например если у нас на сервере всего 36 ГБ оперативной памяти, стоит Windows 2008 и запущено 8 процессов rphost то рассчет идет так: 36 - 4 - 1.5*8 = 20 ГБ ставим ограничение для SQL.

Это необходимо для того, чтобы sql сервер рассчитывал на этот объем и чистил память заблаговременно, т.к. если поставить неограниченный объем, и сервер попробует получить память, которой нет, он начинает крепко задумываться над своим поведением и крайне медленно отвечать на запросы.

Далее:

 

Максимальное количество потоков (Maximum worker threads) ставим 2048, по умолчанию стоит 0 и с таким значением сервер не создает больше 255 потоков, а этого ему не хватает (установлено опытным путем, что при большом количестве одновременных транзакций сервер реально начинает быстрее работать). Также выставляем галку повышенного приоритета сервера (Boost priority).

Собственно с глобальными настройками все. Теперь переходим к настройкам рабочей базы данных (или нескольких баз, если такое имеет место быть).

2. Настройка рабочей базы данных

Заходим в свойства нужной нам базы данных:

 

Если база еще не развернута из .dt файла, и вы знаете примерный ее размер, то первичному файлу размер инициализации лучше сразу указать >= размера базы, но это дело вкуса, он все равно вырастет при развертке. А вот Автоувеличение размера надо обязательно указать примерно по 200 МБ на базу и по 50 МБ на лог, т.к. значения по умолчанию – рост по 1МБ и по 10% очень сильно тормозят работу сервера, когда ему при каждой 3й транзакции надо файл увеличивать. Также, если не используетет RAID массив, то хранение файла базы и файла лога лучше указать на разных физических дисках. Ну и ограничить лог 2-4 ГБ, чтоб сильно не пух.

Остальные настройки как на скришоте:

 

С настройками базы все. Осталось настроить регламентные задания.

3. Настройка регламентных заданий

Сначала создаем Maintenance Plan в разделе Management:

 

Дефрагментацию индексов и сбор статистики нужно производить ежедневно, т.к. если фрагментированость индексов > 25%, это резко снижает производительность сервера. Дефрагментация и обновление статистики делается быстро и не требует отключения пользователей. Насколько ваши индексы фрагментированы можно посмотреть очень хорошей и многофункциональной обработкой Гилева Вячаслава, с названием Lock1C.epf, и которую он убрал со своего сайта из-за наезда 1С-ников за нарушение какого-то пункта лицензионного с., но хорошему админу гугл всегда в помощь J . Также желательно делать полную переиндексацию, с блокировкой БД, хотя бы раз в неделю, естественно после полной переиндексации сразу же делается дефрагментация индексов и обновление статистики.

Настройка бэкапа средствами SQL.

Ту все просто, добавляем 2 новых задания Agent'у:

 Full BackUp, с периодичностью 1 раз в сутки и 2мя шагами T-SQL скриптов:

1.       BACKUP DATABASE [<ИмяБД>] TO  DISK = N'<ПутьКПапке>\Backup\<ИмяБД>.bak' WITH NOFORMAT, INIT,  NAME = N'<ИмяБД>-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

2.       USE [<ИмяБД>]

GO

DBCC SHRINKFILE (N'<ИмяБД>_log' , 0)

GO

И второе задание с периодичностью 1 раз в 1-2 часа Differencial BackUp и с одним T-SQL скриптом:

BACKUP DATABASE [<ИмяБД>] TO  DISK = N'<ПутьКПапке>\Backup\<ИмяБД>Diff.bak' WITH  DIFFERENTIAL , NOFORMAT, INIT,  NAME = N'<ИмяБД>-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

Такой бэкап делается, даже при активной работе пользователей, 4-6 минут и практически не сказывается на быстродействии сервера.

Да, и добавим очистку процедурного после переиндексации (раз в неделю), в задание, кторое у же появилось в агенте после сохранения Maintenance Plan добавляем еще один шаг:

DBCC FREEPROCCACHE

GO

Не забыв поменять в настройках первого шага после завершения не выходить, а перейти к следующему. Спс gilv за подсказку.

Вот, собственно, и все. По поводу бэкапа средствами 1С: http://infostart.ru/public/65849/ - Full BackUp и выгрузку 1С можно делать одновременно.

См. также

Лучшие комментарии

70. 1Це 23.11.2010 11:22
(66) это конечно может быть и верно, но уже не первый раз замечаю, что вы влазите в ветку, начинаете говорить что все неправильно, и что вы знаете как сделать лучше в разы. При этом по делу - ноль, одни туманные фразы типа "скуль просядет", а почему просядет - это уже за деньги. Если это ваш способ рекламы, то он, мягко говоря, гниловат. Если вы решаете написать в ветку, будьте готовы подтвердить вашу критику дельными советами, а если ваша цель - завлечь людей на свой консалтинг, то завлекайте на своем сайте, нефиг тут воду мутить.
# Ответить
36. gilv 19.02.2010 10:34
(31)
Boost priority - увеличивает приоритет сервера.

Ну увеличивает. А как это сказывается (в цифрах и фактах пожалуйста).
Да, сейчас 1С и SQL вместе находятся. До недавнего времени на разных машинах висели, но настройки оптимальные были такими-же...

На счет настройки памяти не соглашуюсь. На отдельно стоящем сиквеле и совмещенном настройки памяти разные.
Опять таки, зачем на отдельно стоящем скуле вообще приоритет повышать.

При переносе SQL на сервер, где 1С вращается, производительность чуть-чуть возросла, хотя сервера были по мегабитному каналу связаны.

Сколько сетевух на сервере? Может быть пора посмотреть 10гигабитку.
К тому же не всегда есть возможность и целесообразность совмещать.
А то Вас тут почитают и таких дров наломают.

Но это так, непринципиальная критика. Просто не хотелось бы рядом с дельными советами видеть "отсебятину". Т.е. лучше меньше советов, но максимально дающих эффект.
# Ответить
30. gilv 18.02.2010 21:49
Boost priority - что дает?
Сервер 1С находится вместе с сиквелом?
почему минимум = 0?

наверно слишком пафосно "правильная настройка", скорее "настройка для случая Х"
еще многе зависит от операционки, разрядности и т.п.

вцелом труд в правильном направлении сделан, хотя некоторые выводы необоснованы
Ответили: (31)
# Ответить
28. glinmn 18.02.2010 16:49
Хи-ха, Я работаю с базами от 40 -120Gb и я посмотрел бы с удовольствием на Ваши действия при падении Log файла или файла базы. Все это очень хорошо при небольших базах , но они имеют дурную привычку быстро расти и при этом начинаются другие проблемы
Ответили: (32)
# Ответить
48. gilv 02.03.2010 16:45
(47) пока ссылку на офицальном сайте, что это рекомендуется все делать
ты хотя бы понимаешь, что удаляешь скомпилированные запросы этим ?
Ответили: (49)
# Ответить

Комментарии

1. larisab 17.02.2010 20:42
Спасибо, полезно!
# Ответить
2. Sindelik 17.02.2010 20:52
Спасибо, то что надо!
# Ответить
3. German 17.02.2010 21:18
Также желательно делать полную переиндексацию, с блокировкой БД


При индексации блокируется только таблица, незачем делать ее в режиме тестирования и исправления.
# Ответить
4. luns 17.02.2010 21:22
Еще бы добавил, что неплохо было бы выставить в свойствах сетевого соединения сервера для компоненты "Служба доступа к файлам и принтерам сети Microsoft" оптимизацию не для файлов а для сетевых приложений.
# Ответить
5. Saint 17.02.2010 23:20
Нифига не понял в формуле расчёта максимального количества памяти.
Ответили: (10)
+ 1 [ Gray777; ]
# Ответить
6. quick 18.02.2010 08:02
Полезная статья. Но в расчет памяти я что то тоже не врублюсь
Ответили: (10)
# Ответить
7. anderson 18.02.2010 09:09
С какой целью делается DBCC SHRINKFILE (N'<ИмяБД>_log' , 0), если у вас recovery model = simple?
Ответили: (11)
# Ответить
8. Androsovych 18.02.2010 11:16
Время выполнения операций, заявленное в обзоре, сильно зависит от размера самой базы; переиндексация на базах больше сотни Гб может длиться дольше часа.
Ответили: (9)
# Ответить
9. a-novoselov 18.02.2010 11:30
(8) Вот поэтому она и сделана на ночь с воскресения на понедельник с 01:00... Люди начнут работать все равно не раньше 08:00
# Ответить
10. a-novoselov 18.02.2010 11:34
(5) (6) Добавил пример.
# Ответить
11. a-novoselov 18.02.2010 11:37
(7) Были преценденты, что лог не урезался, решили добавить ручное "обрезание".
Ответили: (12)
# Ответить
12. anderson 18.02.2010 12:14
(11) а зачем вообще урезание? чем меньше операций по выделению места под файлы данных/лога, тем меньше тормозов
Ответили: (14)
# Ответить
13. Saint 18.02.2010 12:16
А что такое "Общее количество памяти сервера"? Это размер ОЗУ? Но цифра в примере непонятная.
Ответили: (14)
# Ответить
14. a-novoselov 18.02.2010 12:26
(12) Лог, без урезания, начинает сильно фрагментироваться (куча маленьких свободных/занятых кусков внутри файла), что негативно сказывается на работе.
(13) Да, это размер ОЗУ.
Ответили: (16)
# Ответить
15. glinmn 18.02.2010 13:11
Более грамотный подход к архивированию читаете в учебнике http://www.learn1c.ru/ebooks/book002.html
При подходе описанном автором 100% геморрой при восстановлении. и проблнмы с log'ом
А настройка сервера для новичков -хороша.
Ответили: (17)
+ 1 [ Valerich; ]
# Ответить
16. Saint 18.02.2010 13:12
(14) Формула интересная, только вот по ней у меня на сервере нужно установить значение -1 ГБ (т.е. отрицательное значение). :cry:
Ответили: (17)
# Ответить
17. a-novoselov 18.02.2010 13:39
(15) Во-первых ваша ссылка для 7ки (кстати тоже неоднократно посещалась при поиске информации), во вторых никакого геморроя с восстановлением - раз в 2 дня в тестовую базу восстанавливаем: 20 минут из полного файла, 15 минут из diff файла и готовая база примерно на час отстающая от рабочей. А вот при полной модели бэкапа (full а не simple), какраз имеете огромный геморой с восстановлением, т.к. если лог натянете на полный бэкап, то diff не встанет, если diff натянете, то лог не встанет... целостность базы нарушена полюбому. А в simple-модели бэкап лога не нужен.

(16) Если у вас rphost'ы максимум по 500 МБ отъедают памяти в процессе работы, то столько им и оставляйте. Сдесь взято по максимуму и у нас они действительно по столько иной раз занимают (правда не видал, когда все одновременно, но чем чорт не шутит...)
# Ответить
18. _Z1 18.02.2010 13:50
Помимо размера и log рабочей базы
необходимо также настраивать размер и log базы tempdb
Размер этой базы должен составлять от 25% до 40% самой большой базы данных
Лучший вариант размещения базы данных tempdb – на отдельном диске или дисковом массиве RAID0 (эта база данных не нуждается в восстановлении).
Приращение лога для temdb - обязательно не в процентах.
Ответили: (20)
# Ответить
19. _Z1 18.02.2010 14:06
Про Максимальное количество потоков ставим 4096 ИХМО вы что-то перемудрили.
Ставя явно 4096 Вы резервируете для sql сервера пул рабочих процессов.
Если общее количество подключений к серверу меньше этого числа то каждому подключению выделяется свой рабочий поток иначе для коннекта назначается поток из пула.
Т.е если к примеру у Вас общее число подключений к серверу меньше 2000 то 4096
ставить неправильно так как каждый рабочий поток резервирует память ( об этом косвенно говорит и тот факт что для изменения параметра нужна перестартовать sql сервер).
Как действует значение 0 точно не скажу это надо отдельно разбираться взависимости от
(select @@version) версии sql (2000,2005,2008)
Ответили: (21)
# Ответить
20. a-novoselov 18.02.2010 14:07
(18) Насчет размещени tempdb вы абсолютно правы, а вот насчет размера - это довольно спорный вопрос... одно время, еще на старом сервере с небольшим объемом оперативы когда работали, у нас для базы в 6 ГБ tempdb разростался до 30 ГБ, и когда мы решили ограничить размер tempdb до 6 ГБ, то при достижении указанного размера сервер просто вставал, спасал только полный ребут. а без ограничения кое-как работал, правда тормозил неподетски. Вообще конечно продукты MS очень требовательны к ресурсам и очень часто первоопределяющий фактор - быстродействие сервера и наличие рэйда.
Ответили: (22)
# Ответить
21. a-novoselov 18.02.2010 14:16
(19) Возможно число можно указать и поменьше, но памяти процессы резервируют по минимуму и не факт, что стартуют при отсутствии подключений, а вот когда 2 подключения на один поток садятся, то у людей начинаются ториоза, ИМХО число лучше сразу задать как можно больше. Темболее ожидается увеличение количества пользователей до 400-500 человек, и каждый ведь может по несколько раз 1С запустить... + регламентные задания, роботы всякие и т.п.
Ответили: (24)
# Ответить
22. _Z1 18.02.2010 14:22
(20) насчет размера согласен.
Просто эта цифра 25-40% это как общая рекомендация.
Точное значение надо подбирать индивидуально для каждого сервера.
Если есть какая нибудь методика то с удовольствием с ней познакомился бы.
Тут как всегда компромис чем больше размер тем лучше. Но дисковое пространство сервера как правило очень дорогой ресурс и его надо как-то ограничивать.
Как выставлять приращение log для tempdb точно не знаю но желательно чтобы sql
делал это редко.
# Ответить
23. sound 18.02.2010 14:43
полезные штуки
# Ответить
24. _Z1 18.02.2010 14:43
(21) Если пользователь запустил несколько сессий то не факт что он в них одновременно работает. Т.е если у Вас 95% времени выполняется 2000 активных соеденений ( которые что-то считают ) то и выставлять надо 2000. Выставляя 4096 Вы отбираете у sql сервера память и он не сможет её(память) использовать под свои задачи.
Я исхожу из своих знаний на основе sql200,sql2005 Как резервируется память
под это дело в sql2008 я точно не знаю ( думаю что также)
Также надо учитывать и возможности сервера.Предположим что конкретный сервер не может одновременно обслуживать более 3000 потоков. В таком случае ставить 4096 тоже бессмысленно.
Про значение 0
В sql2000 это равно 255 рабочим потокам
В sql2005 ( и наверное sql2008 ) 0 означает что sql сервер сам по внутреним алгоритмам динамически меняет количество рабочих процессов. Для каких то нагрузок это может и хорошо для каких-то не очень хорошо.
При любых других (не 0 ) значениях я считаю что память под рабочие процессы выделяется статически при старте sql сервера.
Ответили: (25) (145)
+ 1 [ a-novoselov; ]
# Ответить
25. a-novoselov 18.02.2010 15:08
(24) Кстати SQL умеет распараллеливать запросы, т.е. 1 большой запрос может идти в несколько потоков.
Ответили: (26) (143)
# Ответить
26. _Z1 18.02.2010 15:18
(25) это тоже надо настраивать отдельным параметром
и как правило не рекомендуют ставить значение больше 5.
Фишка в том что при большом распаралеливании sql начинает слишком много времени тратить на само планирование и разбиение запроса вместо его выполнения
и общая производительность падает вместо ожидаемого роста.
Ответили: (27) (144)
# Ответить
27. a-novoselov 18.02.2010 15:25
(26) Да, мы тоже сперва MaxParallelism в 5 выставили, но с 0 на замерах производительности большие запросы быстрее обрабатывались...
Ответили: (144)
# Ответить
28. glinmn 18.02.2010 16:49
Хи-ха, Я работаю с базами от 40 -120Gb и я посмотрел бы с удовольствием на Ваши действия при падении Log файла или файла базы. Все это очень хорошо при небольших базах , но они имеют дурную привычку быстро расти и при этом начинаются другие проблемы
Ответили: (32)
# Ответить
29. Dimka74 18.02.2010 20:45
Все здорово, осталось только видео сделать и на Ютруб выложить. ;)
# Ответить
30. gilv 18.02.2010 21:49
Boost priority - что дает?
Сервер 1С находится вместе с сиквелом?
почему минимум = 0?

наверно слишком пафосно "правильная настройка", скорее "настройка для случая Х"
еще многе зависит от операционки, разрядности и т.п.

вцелом труд в правильном направлении сделан, хотя некоторые выводы необоснованы
Ответили: (31)
# Ответить
31. a-novoselov 19.02.2010 06:48
(30) Boost priority - увеличивает приоритет сервера.
Да, сейчас 1С и SQL вместе находятся. До недавнего времени на разных машинах висели, но настройки оптимальные были такими-же...При переносе SQL на сервер, где 1С вращается, производительность чуть-чуть возросла, хотя сервера были по мегабитному каналу связаны.
Насчет разрядности вы правы, на 32х все равно больше 4 ГБ оперативы не увидит операционка, и тут уже смысла нет память ограничивать, или 3-3,5 ГБ ограничение ставить, т.к. ее итак нет.
Ответили: (33) (36)
# Ответить
32. a-novoselov 19.02.2010 06:50
(28) Может поделитесь какие проблемы могут возникнуть?
Файл базы у нас падал, и мы его никак не смогли восстановить. Пришлось поднимать базу из бэкапа, перед этим скопировав базу с логом на тестовый сервер... Для аттача этой базы никакие шаманские действия не помогли. Скачал утилиту от MS, которая, типа, битые базы поднимает, она за неделю 50% файла обработала, при том на каждой второй операции сообщала об ошибке... Остановил процесс за ненадобностью.
# Ответить
33. echo77 19.02.2010 09:06
(31)
Насчет разрядности вы правы, на 32х все равно больше 4 ГБ оперативы не увидит операционка, и тут уже смысла нет память ограничивать, или 3-3,5 ГБ ограничение ставить, т.к. ее итак нет.

- в этом вы не правы. Серверная x32 ОС видит больше 4 Гб памяти, для того чтобы SQL-сервер мог адресоваться к памяти выше 4 Гб необходимо включить AWE (см. скриншот 1)
Ответили: (34)
+ 2 [ ojiojiowka; jan27; ]
# Ответить
34. a-novoselov 19.02.2010 09:26
(33) Там страницы по 4 ГБ получаются и обращение к памяти медленно работает. Смысла нет 32х разрядную ось ставить на сервер, где больше 4 ГБ памяти.
Ответили: (35)
# Ответить
35. echo77 19.02.2010 09:53
(34) никто не спорит, но и писать что операционка больше 4Гб не видит - тоже не стоит
# Ответить
36. gilv 19.02.2010 10:34
(31)
Boost priority - увеличивает приоритет сервера.

Ну увеличивает. А как это сказывается (в цифрах и фактах пожалуйста).
Да, сейчас 1С и SQL вместе находятся. До недавнего времени на разных машинах висели, но настройки оптимальные были такими-же...

На счет настройки памяти не соглашуюсь. На отдельно стоящем сиквеле и совмещенном настройки памяти разные.
Опять таки, зачем на отдельно стоящем скуле вообще приоритет повышать.

При переносе SQL на сервер, где 1С вращается, производительность чуть-чуть возросла, хотя сервера были по мегабитному каналу связаны.

Сколько сетевух на сервере? Может быть пора посмотреть 10гигабитку.
К тому же не всегда есть возможность и целесообразность совмещать.
А то Вас тут почитают и таких дров наломают.

Но это так, непринципиальная критика. Просто не хотелось бы рядом с дельными советами видеть "отсебятину". Т.е. лучше меньше советов, но максимально дающих эффект.
# Ответить
37. glinmn 20.02.2010 12:48
Не хорошо писать письма без обратного адреса.
а по делу- по комментируйте(дело было в понедельник 15 февраля), что и как вы по Вашей схеме будете восстанавливать:
ЗАГОЛОВОК: Microsoft SQL Server Management Studio
------------------------------

Не удается вывести требуемое диалоговое окно.

------------------------------
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:

Не удается вывести требуемое диалоговое окно. (SqlMgmt)

------------------------------

SQL Server обнаружил логическую ошибку ввода-вывода, связанную с согласованностью: неверный идентификатор страницы (ожидаемый 1:712; фактический 0:0). Она произошла при прочитать страницы (1:712) в базе данных с идентификатором 4 по смещению 0x00000000590000 файла "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MSDBData.mdf". Дополнительные сведения см. в журнале ошибок SQL Server и журнале системных событий. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку базы данных на согласованность (DBCC CHECKDB). Эта ошибка может быть вызвана многими причинами; дополнительные сведения см. в электронной документации по SQL Server. (Microsoft SQL Server, ошибка: 824)

Чтобы получить справку, щелкните: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=824&L­inkId=20476

------------------------------
КНОПКИ:

ОК
# Ответить
38. glinmn 20.02.2010 13:06
В дополнение предыдущему:
- работающий магазин, остановка очень догая и начальство за спиной стоит
- Win 2003/32, sql 2005/32, 1c 8.1, база ~100Gb
- техника обычная для нашего бизнеса.
Ответили: (39)
# Ответить
39. a-novoselov 24.02.2010 11:35
(37) (38) Дак по-английски ведь написано, что железо сбоит. У нас одно время сервак тупо ребутался, как будьто кто-то резет жмет 2-3 раза в день, в логах винды писал только что "завершение работы было неожиданным..." спас только переезд на другой сервер и отказ от xen-подложки, т.е. без виртуальной машины ща работает. Другие виртуалки на той-же винде на том-же сервере нормально работают, не перезагружаются. Майкросовтовские продукты могут неожиданно себя вести при каких-то железных сбоях и вообще ничего не сообщать и в логи не писать. А по поводу лечения - базу с бэкапа на новом серваке поднять.
# Ответить
40. markers 25.02.2010 07:28
Любые статьи и комментарии по этой теме и по существу, весьма полезны! Подчерпнул пару полезностей из статьи и коментов! Всем спасибо! Больше бы таких статей и коментов!
# Ответить
41. idef 25.02.2010 12:43
Мда, расчет по ограничению памяти сервера действительно спорный получился.
А какие есть мнения по поводу параметра "Max Degree of Parallelism" :?:
Это напрямую должно влиять на производительность.
# Ответить
42. glinmn1 26.02.2010 11:32
Дык по английски мы читать не умеем!!!
А восстановление заняло 5 минут. Всего лишь упал Log у Master.
Какой переезд на другой сервер, какой ребут, я же писал магазин, работающий 24 часа

А вообще по жизни, был хороший ресурс, но теперь для поднятия рейтинга постят ВСЕ. Хорошо если читает грамотной, он разберется ,что к чему, а новичек, прочтет сделает по данной схеме получит геморой в лучшем случае или увольнение после очередного падения сервера
Читайте и думайте.
Ответили: (43) (44)
# Ответить
43. a-novoselov 27.02.2010 07:17
(42) Конечно надо в первую очередь логи SQL посмотреть, а не одно сообщение хз откуда.
Ресурс стараемся поднимать, статья впервую очередь была написана как хорошая тема для обсуждения, для того, чтобы народ делился опытом. Если можете какие-то тезисы опровергнуть, то говорите. Если можете написать лучше - пожалуйста. Здесь я ни одной подобной статьи не встречал, вот и решил написать.
# Ответить
44. a-novoselov 27.02.2010 07:20
(42) Что в настройках вам не нравится? Из-за чего при таких настройках может упасть сервер? При чем тут падение лога у мастера, если тут про настройки системных таблиц вообще ничего не говорится?
# Ответить
45. qSerik 27.02.2010 09:58
Почти к такому же алгоритму построения SQL пришел сам еще задолго до данной статьи, по алгоритму все хорошо, еще добавил ежечастно очистку процедурного кеша, а остальное почти по алгоритму автора, по этому однозначно + и статья имеет достойное место быть вне зависимости от некоторых комментов! Побольше бы таких заний писали, а не негативной критики!
Ответили: (46)
# Ответить
46. CheBurator 02.03.2010 00:16
(45)
еще добавил ежечастно очистку процедурного кеша,

- что это такое и как делается?
Ответили: (47)
# Ответить
47. qSerik 02.03.2010 09:30
(46) В агенте выставляется команда для базы
DBCC FREEPROCCACHE
Удобно раз в час, описание можно найти на официальном сайте, выполнять команду рекомендует 1С.
Ответили: (48)
+ 2 [ Astartes; a-novoselov; ]
# Ответить
48. gilv 02.03.2010 16:45
(47) пока ссылку на офицальном сайте, что это рекомендуется все делать
ты хотя бы понимаешь, что удаляешь скомпилированные запросы этим ?
Ответили: (49)
# Ответить
49. a-novoselov 02.03.2010 17:11
(48) Во время сбора статистики кэш автоматически чиститься? Для проверки надо включить, потестить как оно отрабатывать будет.
Ответили: (52)
# Ответить
50. boogie 05.03.2010 18:24
Можно ламмерский коммент?
36 гигов оперативки на сервере это круутааа :) У нас 2 гига и Win2003. Так и живём :{}
Ответили: (51)
# Ответить
51. dushelov 05.03.2010 20:18
(50) Тут коммерческому предприятию гордиться нечем. У большинства ноутбуки уже мощнее будут.
# Ответить
52. gilv 06.03.2010 15:12
(49) причем тут статистика и кэш?
надо просто понимать рекомендации, а не только тупо их выполнять
если объем данных изменяется не сильно, то очистка процедурного кэша скорее зло, так как скулю придется компилировать запрос заново

именно поэтому у админов есть термины типа "прогретый кэш", потому что все необходимые данные подняты в кэш и скомпилированы запросы
т.е. при первом запуске когда кэши "холодные" запросы исполняются дольше

резюмирую: процедурный кэш надо чистить не ради чистки, а если вы видите что система очень сильно загруженно и очитска кэша ускоряет общую производительность (т.е. когда заново скомплированный запрос работает с новыми условиями типа статистики, объемов строк, индексами и т.п.)
Ответили: (53)
# Ответить
53. a-novoselov 07.03.2010 10:17
(52) Включил очистку раз в сутки система начала тормозить по утрам. Полезная фича получается, если делать ее раз в неделю (после переиндексации) - скомпилированные запросы ссылаются на старые индексы и очистка кеша ускоряет работу.
# Ответить
54. lion11 05.05.2010 13:24
А разве Полная переиндексация не включает в себя Дефрагментацию индексов?
Ответили: (55)
# Ответить
55. gilv 05.05.2010 13:29
(54) я не знаю что значит Полная,
перестройка индексов - это удаление индекса и создание его заново.
После этой процедуры дефрагментировать дополнительно нечего, уже все упорядочено в момент создания.
Ответили: (56)
# Ответить
56. lion11 05.05.2010 15:09
(55) Я так понимаю, что под Полной автор имел ввиду "Rebuild Index", а дефрагментация - это "Reorganize Index". Вот меня и смутила фраза "...естественно после полной переиндексации сразу же делается дефрагментация индексов и обновление статистики." - это уже не требуется.
Ответили: (57)
# Ответить
57. gilv 05.05.2010 17:29
(56) вот поэтому я думаю, что статья называется "как правильно" слегка неадекватно, скорее опыт удачной настройки :)
Ответили: (60)
# Ответить
58. lion11 06.05.2010 12:22
Тем не менее - статья очень полезная! Плюсы заслуженные!
Ответили: (59)
# Ответить
59. gilv 06.05.2010 14:32
(58) полезность штука субъективная,
вот http://kb.1c.ru/articleView.jsp?id=13 куда правильней называется "регламентные операции", а не как правильно делать регламентные операции :)
Ответили: (60)
# Ответить
60. tidex-s1 05.07.2010 17:39
(57),(59)
Молодец! и даже
Критерий оптимальности указал!!!:
1. MS SQL для круглосуточной работы
2. более, чем 200 пользователей одновременно
Все ясно и понятно если MS SQL для круглосуточной работы И более, чем 200 пользователей одновременно ----> пользуйся этой статьей.
# Ответить
61. igyo 02.09.2010 04:39
Эта инструкция на 200 и больше пользователей. А что изменить в этой инструкции на 50 пользователей
Ответили: (62) (64)
# Ответить
62. a-novoselov 02.09.2010 21:42
(61) Это инструкция по оптимальной настройке MS SQL для работы с 1С при любом количестве пользователей. Просто если работают 10 пользователей и вводят по 2 документа в день, пойдет просто файловый вариант или скуль с настройками по умолчанию.
− 1 [ Gilev.Vyacheslav; ]
# Ответить
63. gilv 03.09.2010 10:08
(63) на 1000 пользователей с такими настройками скуль просядет, тем более что на таких масштабах настройки базы также начинают играть ключевую роль!
Ответили: (63) (65)
# Ответить
64. gilv 03.09.2010 10:10
(61) я бы занизил количество соединений в параметрах как минимум
# Ответить
65. a-novoselov 03.09.2010 11:41
(63) А не могли бы подсказать, какие настройки необходимо поменять на 1000 пользователей? Из-за чего скуль просядет? Поможет ли скуль при работе с 1С "ALTER DATABASE Database SET ALLOW_SNAPSHOT_ISOLATION ON;" для уменьшения количества блокировок?
# Ответить
66. gilv 03.09.2010 12:26
(65) нет, не хочу
то что я считал нужным расказать публично, я выкладываю на свой сайт gilev.ru
все что считаю конкурентным преимущество, я "продаю" на курсах или ввиде консалтинговых услуг

но если кто сомневается, что скуль просядет на 1000 юзерах, попробуйте сами...
Ответили: (66) (67) (70) (181)
+ 1 [ Артано; ]
− 1 [ DMSDeveloper; ]
# Ответить
67. a-novoselov 05.09.2010 14:03
(66) Интересно, что вы преподаете такое на курсах, если про вас говорят пацаны из Олми, что вы код ногами пишите?
Ответили: (68)
# Ответить
68. gilv 05.09.2010 15:08
(67) Напишите на почту gilev.ru собачка gmail.com, что КОНКРЕТНО Вас интересует. Я попробую ответить.
Надеюсь, не путаете меня с однофамильцем http://www.spec8.ru/
Ответили: (69)
# Ответить
69. a-novoselov 11.09.2010 02:35
(68) Да, похоже действительно однофамилец.
# Ответить
70. 1Це 23.11.2010 11:22
(66) это конечно может быть и верно, но уже не первый раз замечаю, что вы влазите в ветку, начинаете говорить что все неправильно, и что вы знаете как сделать лучше в разы. При этом по делу - ноль, одни туманные фразы типа "скуль просядет", а почему просядет - это уже за деньги. Если это ваш способ рекламы, то он, мягко говоря, гниловат. Если вы решаете написать в ветку, будьте готовы подтвердить вашу критику дельными советами, а если ваша цель - завлечь людей на свой консалтинг, то завлекайте на своем сайте, нефиг тут воду мутить.
# Ответить
71. dmv78 23.02.2011 18:40
то что надо как раз! Спасибо автору!
# Ответить
72. Cat-MF 24.08.2011 11:38
В настройках базы на скрине выключена корреляция дат. ИМХО, надо бы включить.
# Ответить
73. Jogeedae 12.09.2011 09:57
про Максимальное количество потоков по-умолчанию ссылка:
MSSQL max worker threads на msdn

Вроде неплохие базовые настройки, плохо конечно, что без описания почему-куда, тут gilv верно отметил.
+ 1 [ krv2k; ]
# Ответить
74. westinka 22.11.2011 14:33
спасибо автору, т.к. настройка скл сервера это явно опыт, когда ты поняла косяки и их правишь. а если не знаешь, да в основном в статьях используют типовые, то конечно ошибаешься
# Ответить
75. zzz_natali 09.12.2011 08:52
Почему в настройках базы Auto Shrink стоит False, а не True?
Я обычно взвожу этот флаг.
Ответили: (76)
# Ответить
76. a-novoselov 09.12.2011 10:35
(75) Shrink базы данных довольно затратная процедура, при круглосуточной работе пользователей тормозит базу и мешает людям работать. Если БД постоянно растет, смысла в этой процедуре вообще нет, т.к. SQL использует сперва уже выделенное под БД освободившееся дисковое пространство. Да и выделение нового пространства после Shrink'а затратная процедура... Вобщем, при необходимости (свертка или чистка неиспользуемых регистров) сжать файлы можно и вручную.
+ 1 [ Serg0FFan; ]
# Ответить
77. Motor24 12.12.2011 17:18
Спасибо за статью, думал, что настроил свой вариант "скуль+восьмерка" нормально - ан нет, пойду вносить коррективы.
# Ответить
78. Jackman 19.12.2011 20:56
Спасибо. Лишний раз, для спокойствия, перепроверил параметры скуля.

Кстати, встречалась информация, что связка WinServer2008+MSSQL2008R2+1C8.1 (да и 8.2) дают значительно большие тормоза, чем более ранние версии скуля и винды. Даже тесты делались, дважды тестировали на одном железе, но с разным софтом:

1
Win2003 (32bit) + SQL 2005
Первый тестовый запуск 3:30
Второй тестовый запуск 2:30

2
Win2003 (32bit) + SQL 2005 + оптимизации
Первый тестовый запуск 3:30
Второй тестовый запуск 2:30

3
Win2008R2 + SQL 2008 + 1C x64
Первый тестовый запуск 5:30
Второй тестовый запуск 4:30

4
Win2008R2 + SQL 2008 + 1C x86
Первый тестовый запуск 5:30
Второй тестовый запуск 4:30

5
Win2008R2 + SQL 2005 + 1C x64
Первый тестовый запуск 5:20
Второй тестовый запуск 4:15

6
Win2008R2 + SQL 2005 + 1C x86
Первый тестовый запуск 5:20
Второй тестовый запуск 4:15

7
Win2003 (32bit) + SQL 2005
Первый тестовый запуск 3:15
Второй тестовый запуск 2:20
Ответили: (80) (82)
+ 1 [ solarstrike; ]
# Ответить
79. wowkai 29.12.2011 12:19
спасибо за статтю. а как часто нужно делать дефрагментацию дисков с БД и логом? или нужно вобще?
Ответили: (82) (83)
# Ответить
80. Serg0FFan 29.12.2011 12:22
(78) Jackman, интересно, а
Win2003R2(х64) + SQL 2005 + 1C x64
какие показатели выдаст?
Ответили: (82)
# Ответить
81. profych1 29.12.2011 12:26
спасибо
# Ответить
82. a-novoselov 29.12.2011 13:37
(79) Для файловой системы NTFS дефрагментация в принципе не обязательна. Да и на FAT она дает прирост производительности когда часто записывается / удаляется / перезаписывается большое количество мелких файлов. А база данных храниться в двух больших файлах, дефрагментация ничем не поможет.

(78) (80) Здесь же на инфостарте встречал публикацию (правда найти сейчас не могу, может быть так-же в комментариях было где-то), в которой говорилось о том, что Win 2008x64 + SQL 2008x64 дают большую производительность, чем 2003. Насколько я знаю в 2008 винде очень сильно переписана процедура работы с файловой системой, ускоряющая работу с файлами если не на порядок, то в разы точно. И результаты таких тестов являются частным случаем для конкретного оборудования. Если на сервере 2 ГБ памяти, то и дибилу понятно что поставив туда 2008-е вин и скуль, вы снизите производительность в разы, по сравнению с 2003-ми.
Вобщем желательно самому на своем оборудовании протестировать и решить с чем работать комфортнее. Да и поддержка M$, обновления и т.п. для 2008-х покачественнее, ИМХО.
# Ответить
83. zzz_natali 29.12.2011 13:41
a-novoselov пишет:(79) Для файловой системы NTFS дефрагментация в принципе не обязательна. Да и на FAT она дает прирост производительности когда часто записывается / удаляется / перезаписывается большое количество мелких файлов.

Батенька, Вы бы хоть ИМХО добавляли, чтобы безапелляционно делать такие утверждения. Не нужен дефраг на современных винтах с размером больше терабайта? ну-ну... :)
Ответили: (84)
# Ответить
84. a-novoselov 29.12.2011 13:58
(83) Какая разница какого размера диски? Это же не файловый сервер, а сервер БД.

Вот интересная статья про NTFS:


В самом начале утверждалось, что NTFS не подвержена фрагментации файлов. Это оказалось не совсем так, и утверждение сменили - NTFS препятствует фрагментации. Оказалось, что и это не совсем так. То есть она, конечно, препятствует, но толк от этого близок к нулю... Сейчас уже понятно, что NTFS - система, которая как никакая другая предрасположена к фрагментации, что бы не утверждалось официально. Единственное что - логически она не очень от этого страдает. Все внутренние структуры построены таким образом, что фрагментация не мешает быстро находить фрагменты данных. Но от физического последствия фрагментации - лишних движений головок - она, конечно, не спасает. И поэтому - вперед и с песней...
--------------------------------------------------------------------------------
NTFS - очень экономная система. Размер кластеров в ней разумно минимален - обычно это 4 кб (на стандартных сейчас дисках в десяток-другой гигабайт). Как известно, система сильнее всего фрагментирует файлы когда свободное место кончается, когда приходится использовать мелкие дырки, оставшиеся от других файлов. Тут возникает первое свойство NTFS, которое прямо способствует серьезной фрагментации.
Диск NTFS поделен на две зоны. В начала диска идет MFT зона - зона, куда растет MFT, Master File Table. Зона занимает минимум 12% диска, и запись данных в эту зону невозможна. Это сделано для того, чтобы не фрагментировался хотя бы MFT. Но когда весь остальной диск заполняется - зона сокращается ровно в два раза icon_smile.gif. И так далее. Таким образом мы имеем не один заход окончания диска, а несколько. В результате если NTFS работает при диске, заполненном на около 90% - фрагментация растет как бешенная.

• Попутное следствие - диск, заполненный более чем на 88%, дефрагментировать почти невозможно - даже API дефрагментации не может перемещать данные в MFT зону. Может оказаться так, что у нас не будет свободного места для маневра.

Далее. NTFS работает себе и работает, и всё таки фрагментируется. Этому способствует странный алгоритм нахождения свободного места - второе серьезное упущение. Если файл пишется большими кусками - всё нормально. Но если файл медленно растет - алгоритм такой: берется какой-то определенный объем диска и заполняется файлом до упора. Причем по очень интересному алгоритму: сначала заполняются большие дырки, потом маленькие. Т.е. типичное распределение фрагментов файла по размеру на фрагментированной NTFS выглядит так (размеры фрагментов):
16 - 16 - 16 - 16 - 16 - [скачек назад] - 15 - 15 - 15 - [назад] - 14 - 14 - 14 .... 1 - 1 - 1 -1 - 1...
Так процесс идет до самых мелких дырок в 1 кластер, несмотря на то, что на диске наверняка есть и гораздо более большие куски свободного места.

Может быть я забыл написать что-то еще... Смысл в том, что никак нельзя сказать, что NTFS препятствует фрагментации файлов. Наоборот, она с радостью их фрагментирует. Фрагментация NTFS через пол года работы доведет до искреннего удивления любого человека, знакомого с работой файловой системой. Поэтому приходится запускать дефрагментатор. Но на этом все наши проблемы не заканчиваются, а, увы, только начинаются...
--------------------------------------------------------------------------------
В NT существует стандартное API дефрагментации. Обладающее интересным ограничением для перемещения блоков файлов: за один раз можно перемещать не менее 16 кластеров (!), причем начинаться эти кластеры должны с позиции, кратной 16 кластерам в файле. В общем, операция осуществляется исключительно по 16 кластеров. Следствия:

• В дырку свободного места менее 16 кластеров нельзя ничего переместить (кроме сжатых файлов, но это тонкости).

• Файл, будучи перемещенный в друге место, оставляет после себя (на новом месте) "временно занятое место", дополняющее его по размеру до кратности 16 кластерам.

• При попытке как-то неправильно ("не кратно 16") переместить файл результат часто непредсказуем. Что-то округляется, что-то просто не перемещается.. Тем не менее, всё место действия щедро рассыпается "временно занятым местом". Наверное о нас заботятся, чтобы мы отстали от этого места - чтобы алгоритм дефрагментации не клинило. icon_smile.gif

• "Временно занятое место" освобождается через некоторое время, обычно где-то пол минуты. Гы.

Тем не менее, логично было бы использовать это API. Его и используют. Поэтому процесс стандартной дефрагментации, с поправками на ограниченность API, идет следующими фазами, не обязательно в этом порядке:

• Вынимание файлов из MFT зоны. Не специально - просто обратно туда их положить не представляется возможным. Безобидная фаза, и даже в чем то полезная.

• Дефрагментация файлов. Безусловно полезный процесс, несколько правда осложняемый ограничениями кратности перемещений - файлы часто приходится перекладывать сильнее, чем это было бы логично сделать по уму.

• Дефрагментация MFT, виртуалки (pagefile.sys) и каталогов. Возможна через API только в Windows2000, иначе - при перезагрузке, отдельным процессом, как в Diskeeper-е.

• Складывание файлов ближе к началу - так называемая дефрагментация свободного места. Вот это - воистину страшный процесс...

Допустим, мы хотим положить файлы подряд в начало диска. Кладем один файл. Он оставляет хвост занятости дополнения до кратности 16. Кладем следующий - после хвоста, естественно. Через некоторое время, по освобождению хвоста, имеем дырку <16 кластеров размером. Которую потом невозможно заполнить через API дефрагментации! В результате, до оптимизации картина свободного места выглядела так: много дырок примерно одинакового размера. После оптимизации - одна дыра в конце диска, и много маленьких ><16 кластеров дырок в заполненном файлами участке. Какие места в первую очередь заполняются? Правильно, находящиеся ближе к началу диска мелкие дырки ><16 кластеров... Любой файл, плавно созданный на прооптимизированном диске, будет состоять из дикого числа фрагментов. Да, диск потом можно оптимизировать снова. А потом еще раз.. и еще.. и так - желательно каждую неделю. Бред? Реальность.>

Таким образом, имеется два примерно равнозначных варианта. Первый - часто оптимизировать диск таким дефрагментатором, смиряясь при этом с дикой фрагментацией заново созданных файлов. Второй вариант - вообще ничего не трогать, и смириться с равномерной, но гораздо более слабой фрагментацией всех файлов на диске.

Пока есть один дефрагментатор, который игнорирует API дефрагментации и работает как-то более напрямую - Norton Speeddisk 5.0 для NT. Когда его пытаются сравнить со всеми остальными - Diskeeper, O&O defrag, т.д. - не упоминают этого главного, самого принципиального, отличия. Просто потому, что эта проблема тщательно скрывается, по крайней мере уж точно не афишируется на каждом шагу. Speeddisk - единственная на сегодняшний день программа, которая может оптимизировать диск полностью, не создавая маленьких незаполненных фрагментов свободного места. Стоит добавить также, что стандартное API не может дефрагментировать тома NTFS с кластером более 4 Кбайт - а SpeedDisk, по прежнему, может.

К сожалению, в Windows 2000 засунули дефрагментатор, который работает через API, и соответственно плодит дырки <16 кластеров. Так что как только появится (если уже не появился) - так сразу надо качать Speeddisk для W2k. Как некоторый вывод из всего этого - все остальные дефрагментаторы при одноразовом применении просто >вредны. Если вы запускали его хоть раз - нужно запускать его потом хотя бы раз в месяц, чтобы избавится от фрагментации новоприбывающих файлов. В этом основная суть сложности дефрагментации NTFS теми средствами, которые сложились исторически.




Общий вывод: если начнете делать дефрагментацию, то ее необходимо будет делать постоянно, иначе начнутся тормоза.
ИМХО вывод: Нахрена она нужна если на быстродействии базы это никак не скажется, т.к. база лежит (у грамотных админов) на отдельном от системы и TEMP'а диске одним(двумя) файлами. Это как иконка в автомобиле - если с ней вы чувствуете себя спокойнее, то весить надо обязательно, т.к. уверенность в себе водителя за рулем помогает безаварийному вождению.
+ 1 [ vkr; ]
# Ответить
85. zzz_natali 29.12.2011 14:05
Какая разница какого размера диски? Это же не файловый сервер, а сервер БД.

ага, посмотрю как головки будут хрустеть, когда идет полнотекстовый поиск на базёнке размером под сто гектар (волею судеб распухшей вперемешку с другим хламом на разделе)...
Ответили: (86)
# Ответить
86. a-novoselov 29.12.2011 14:27
(85) Ставь RAID и хрусти веселей ;) дефрагментация тебе не поможет, т.к. ФАЙЛ БД ОДИН, и головки будут летать +- 100ГБ пространства что при фрагментированном файле, что при файле одним куском. И не храни хлам рядом с базой. С хламом после дефрагментации все равно дырки останутся из-за особенностей файловой системы.
Ответили: (90)
# Ответить
87. zzz_natali 29.12.2011 14:38
a-novoselov Ставь RAID и хрусти веселей ;) дефрагментация тебе не поможет, т.к. ФАЙЛ БД ОДИН, и головки будут летать

Я ему про Фому, он мне про Ерёму! Когда на разделе стоит несколько баз и они начинают пухнуть исторически, они по-любасу жирнеть будут паззлами! Если диск не дефражить, то они так и будут кусками по винту расплёснуты. Имейте мужество вести конструктивный диалог и не надо "ты"кать и переходить на панибратчину.
В конце концов, я же женщина... пусть и СИСЯСдминка. )))
Ответили: (88)
# Ответить
88. a-novoselov 29.12.2011 15:05
(87) Простите, матушка, отнюдь к вам только на "Вы". Все же, матушка, держать несколько больших баз, критичных к скорости операций, не на рэйде - может быть конечно и не показатель уровня квалификации сисадмина, а показатель дикой жадности начальства, тогда согласен, кроме дефрагментации и молитв Вас уже ничего не спасет. Вы абсолютно правы.
Ответили: (89)
# Ответить
89. zzz_natali 29.12.2011 15:24
(88) a-novoselov,
Лана, проехали... разрешаю выпить со мной бокальчик на брудер... ))
Между прочим, я у себя дома чисто субъективно ощущаю разницу скорости работы нулевого райда (пусть и миллион раз отдефрагментированного), если на нем запущена операционка обычно.
И есть разница и весьма существенная, если с этого же райда, но в режиме vhd (кусок 50 гектар).
# Ответить
90. AlexO 02.01.2012 04:38
(86) вам правильно указали, что дефрагментация нужна:
1) если база стоит с ОС
2) если база не одна, а SQL обслуживает еще много чего.
Когда есть отдельный РЭЙД только под базу, есть возможность этот рейд "защищать" от вопросов начальства ("а че это у вас пустой рэйд токо с одной базой!?") - замечательно.
Но именно это нужно указать в примечаниях к "дефрагментация не нужна!"
Дефрагментация - это накладные расходы использовыания файловых систем виндовс, в линуксах и прочих никсах создатели ФС заранее постарались свести к минимуму как саму фрагментацию, так и её последствия.
Т.е. опять же, кто сидит на 1С и Линуксе (Posgre) - тоже могут об дефрагментации не думать.
Ответили: (92)
# Ответить
91. solarstrike 03.01.2012 14:10
Полезная статья. Однако.
# Ответить
92. a-novoselov 06.01.2012 11:00
(90) Да я же согласился, что дама права.
+ 1 [ AlexO; ]
# Ответить
93. Светялчок 10.01.2012 22:24
Спасибо, очень полезно и познавательно. Исправила свои настройки)
# Ответить
94. ipyu 10.01.2012 22:33
Спасибо, просто и доходчиво.
# Ответить
95. Motor24 24.01.2012 12:02
Спасибо - сервер "задышал" после изменений. Действительно, мало поставить SQL - надо грамотно настроить его под каждый, индивидуальный случай. В моем случае очень помогло ограничение аппетитов SQL по оперативке и дефрагментация индексов. Машина далеко не мощная, хоть и "урожденный сервер": Intel-овская мать S3200SH, двухъядерный же Intel по 2,66 Ггц и 8 Гб оперативки. Далеко не фонтан, но с ролью SQL и 1С 8.2 сервера на 20 баз и 40 пользователей справляется.
Прирост по скорости ощутим, еще раз спасибо за статью! Также очень много полезного почерпнул из развернувшейся в комментариях дискуссии. :)
# Ответить
96. Olfost 25.01.2012 09:52
У нас в конторе Posgris SQL и работает под Федорой. Все вроде нормально.
В филиале сервер MSSQL .. постоянно какие то косяки. То памяти не хватает, то просто вырубается 1С ка.
Ответили: (97)
# Ответить
97. a-novoselov 25.01.2012 10:11
(96) Обновления с Microsoft Update для винды (фреймворки всякие и т.п.) и скуля все стоят? Посмотрите в журнале событий Windows из-за какого модуля 1С-ка валится, если из-за какой-нибудь библиотеки типа "C:\Windows\system32\ms_string_funcs.dll", то обновления 99% должны помочь.
ПС: название библиотеки придумал сам, в винде такой нету)
# Ответить
98. xbic 30.01.2012 10:41
очень помогло
# Ответить
99. Olfost 01.02.2012 08:05
Спасибо, попробую. Хотя филиал вроде закрывают и проблема исчезнет сама собой.
У нас в Головняке под Федорой 1С сервер крутится.
# Ответить
100. Artemuch2 16.02.2012 16:13
Автору огромное спасибо за статью. Разобрался и настроил теперь все как надо! Коллеги никто не подскажет где можно найти последнюю версию обработки Lock1C.epf? Понятно что я старую переписал под ком соединение 82 но хочется уже модернизированную. а то у меня не все методы там работают
# Ответить
101. Artemuch2 16.02.2012 16:15
Только больше скриншотов хороших и разных хотелось бы что бы проще было для тех кто не делал этого
# Ответить
102. metmetmet 22.02.2012 21:50
Хорошая, комплексная статья, автор молодец! Новым была информация про настройку количества потоков скл сервера, нужно будет проверить.
# Ответить
103. defender 20.03.2012 14:07
А вот Автоувеличение размера надо обязательно указать примерно по 200 МБ на базу и по 50 МБ на лог


Это несколько спорно. При таких настройках в журнале приложения появилась такая строка: "Автоматическое увеличение размера файла "tmp_back_NC" в базе данных "tmp_back_NC" заняло 66457 миллисекунд. Возможно, следует командой ALTER DATABASE задать меньшее значение FILEGROWTH для данного файла.
Ответили: (104)
# Ответить
104. a-novoselov 20.03.2012 15:59
(103) Согласен, тут зависит от многих факторов. Для нашей базы, растущей на 3 гб в месяц такое значение параметра было оптимальным. У вас могло просто не быть достаточно места, или рост базы идет намного медленнее. Если SQL жалуется, думаю стоит послушать его совета, и поставить значение поменьше.
Ответили: (105)
# Ответить
105. defender 20.03.2012 17:42
(104) a-novoselov,
Написано слишком категорично: "обязательно указать 200 мб". Имхо, формулировку изменить на как-нибудь помягче :)
# Ответить
106. l_men 12.04.2012 11:59
Помогите плиз, что означает фраза: "Сначала создаем Maintenance Plan в разделе Management:" и где это надо проставлять? SQL 2008 стоит (причем русифицированный), ОС: Windows Server 2008 R2 Enterprise.
Ответили: (107) (108)
# Ответить
107. a-novoselov 12.04.2012 12:11
(106) В SQL Manegment Studio По-русски ветка, по-моему, называется "Управление" -> "Планы обслуживания"
Ответили: (109)
+ 2 [ RodinMax; Kom-off; ]
# Ответить
108. Kom-off 12.04.2012 12:21
(106)

1. Запустить Microsoft SQL Server Managment Studio. Ссылка на неё есть под кнопкой "Пуск" в операционной системе.
2. Если требуется, то пройти авторизацию.
3. В левой части окна должно быть окно Object Explorer. Если его нет, то открыть его через меню: View - Object Explorer (или нажатием клавиши F8).
4. Находим в дереве окна Object Explorer ветку Management -> Maintenance Plan. Щелкаем на ветке Maintenance Plan правой кнопкой мыши и из появившегося контекстного меню выбираем New Maintenance Plan.
Для русифицированной версии:
"Object Explorer" = "Обозреватель объектов";
"View" = "Вид";
"Management" = "Управление";
"Maintenance Plan" = "Планы обслуживания";
"New Maintenance Plan" = "Создать план обслуживания".
Ответили: (109)
+ 2 [ RodinMax; a-novoselov; ]
# Ответить
109. l_men 12.04.2012 15:11
(107) a-novoselov, (108) Kom-off, Благодарю, сейчас буду экспериментировать, если интересны результаты отпишусь.
# Ответить
110. Sol777 25.04.2012 16:03
Стоит отдельно SQL и 1С. На скуле Win2003x32 4Гб ОЗУ, проц свеженький 4 ядра. Две базы по 30Гб с логами по 8Гб. Настройки попробовал поставить - не помогло. Так же док-т "Закрытие месяца" проводится по несколько часов. Подскажите где копать? Или железо менять?
Ответили: (111)
# Ответить
111. a-novoselov 25.04.2012 17:22
(110) 4 Гб ОЗУ для скуля очень мало, тем более для работы с такими большими базами данных. Накиньте еще гигов 8 и все просто летать начнет. Даже на 32х разрядной ОС, там просто адресация страничная будет и один поток больше 4х Гб не получит, но одному потоку больше и не надо обычно.
Ответили: (112)
# Ответить
112. Sol777 25.04.2012 17:29
(111) a-novoselov, спасибо. А для сервера 1С есть какие-то оптимальные характеристики для железа?
Ответили: (113)
# Ответить
113. a-novoselov 25.04.2012 17:50
(112) В принципе сервер 1С не такой требовательный к железу, как SQL. Но если у вас управляемое приложение, или обычное приложение на платформе 8.2 и активно используете компоновку данных, то и для сервера 1С 4 Гб маловато будет. Сейчас на рабочие станции по 4 Гб ставят, просто чтобы работали, а вы серверу столько выделяете.
Ответили: (114)
# Ответить
114. Sol777 26.04.2012 12:29
(113) a-novoselov, на SQL сервере открываю диспетчер задач, проц и оперативка максимум на 60% забиты, а проводится всё равно долго. Думаете если её добавлю, то поможет?
Ответили: (115) (116)
# Ответить
115. a-novoselov 26.04.2012 12:48
(114) Посмотрите FAR'ом, диспетчер задач в Win2003/XP неверно определяет объем используемой памяти. Не учитывает дочерние процессы.
# Ответить
116. a-novoselov 26.04.2012 13:31
(114) Тем более свободная память будет оставаться всегда, так как Windows заблаговременно освобождает оперативную память сваливая ранее появившиеся данные в файл подкачки. А теперь представьте как нелегко живется SQL серверу, который считает что работает с оперативной памятью, а фактически работает с жестким диском, и ответы операционной системы приходят в сотни раз дольше чем следовало бы...
Ответили: (117)
# Ответить
117. Sol777 26.04.2012 17:12
(116) a-novoselov, согласен. Завтра добавим ещё 4Гб оперативки. и ещё выяснилось, что между серверами 1С и SQL была сеть в 100Мб...возможно ещё это влияло на тормоза. А чем можно потестировать производительность это всей связки? Только 1С:ЦУП или есть ещё какие-то средства диагностики?
Ответили: (118) (122)
# Ответить
118. a-novoselov 27.04.2012 05:46
(117) Я только 1С:ЦУП знаю. Ну или 50 операторов, колотящих (загружающих из Excel) документы по 1000 строк в табличной части.))
# Ответить
119. slavich 05.05.2012 15:56
Плюс поставил, реально в свое время помогло, именно эта ссылка, но как оказывается на практике все что тут написанно это только начало танцев с бубном, хотелось бы видеть на данном сайте обсуждение последних проблем именно в связке Server 2008R2 + SQL2008R2, железо, разновидности баз, от 10 гигов и больше, есть на больше на работки, всегда есть вопросы, не твремени описать все что опытным путем вывел.
# Ответить
120. Sol777 10.05.2012 10:35
Есть конфа:
SQL сервер: WIN2008 SP2(х86)+MSSQL2008R2 8Гб ОЗУ, проц Intel Xeon X3450 2.66GHz (8 ядер).
1C сервер: WIN2003SE SP2(х86) 4Гб ОЗУ, проц Intel Quad Q6600 2.4GHz
База ~ 30 Гб
Пользователей не больше 50
По тесту Гилева (что с клиентской машины, что с сервера 1С) показывает 17 попугаев (это чуть выше, чем "удовлетворительно"). Хотя по диспетчеру ресурсов обе машины (особенно SQL сервер) не загружены даже на 25%. Подскажите в каком направлении копать? Очень нужно.
# Ответить
121. mike_in 10.05.2012 16:19
Много лет работаем с подобными настройками, но круглосуточная работа что-то никак не получается.
Интересно, какая конфа 1с использовалась? Возможно просмотрел...

Смущает вот что:
1. "...дефрагментация и обновление статистики делается быстро и не требует отключения пользователей..."
2. "...полная переиндексация раз в неделю" - как работают пользователи во время операций?

Могу предположить, что круглосуточно 200 пользователей не работают...

Откуда собственно вопросы:
8.1 самописная, 200 пользователей, SQL бэкап базы ~400Гб
работаем в режиме 24*6
Преиндексация ~ 6 часов
Статистика ~ 12-14 часов

Работать во время регламента очень-очень проблематично....

Автору +
Ответили: (123) (124)
# Ответить
122. mike_in 10.05.2012 16:45
(117) Sol777, ЦУП, SQL Server 2005 Performance Dashboard Reports, Системный монитор (счетчики производительности), Profiler.
Этого достаточно...
# Ответить
123. a-novoselov 10.05.2012 20:17
(121) Может мы про разные статистики говорим? Или у вас действительно процедура "обновление статистики" занимает 14 часов?
Ответили: (125)
# Ответить
124. a-novoselov 10.05.2012 20:18
(121) Да при переиндексации пользователям работать очень не комфортно, поэтому раз в неделю, при условии что работает база 24х6...
Ответили: (125)
# Ответить
125. mike_in 11.05.2012 09:27
(123) Ну другой статстики, кроме UPDATE STATISTICS... не знаю. Пересчет всей статистики используете или только индексы?
(124) Жаль, думал нашел, кто реально работает 24х7 - руководство хочет "отобрать" воскресенье...
Ответили: (126)
# Ответить
126. a-novoselov 11.05.2012 10:21
(125) Да, про "update statistics"... Очень странно, что эта операция у вас 14 часов занимает. а в SQL Analiser'е смотреть не пробовали, почему так долго происходит? На каком этапе висит так долго? Просто обычно эта операция выполняется довольно быстро.
# Ответить
127. var_ad 11.05.2012 10:27
Спасибо! Очень полезно, а главное доходчиво описано. Довольно легко разобрались со всеми настройками. Комментарии тоже очень помогли. Еще раз спасибо!
# Ответить
128. juneglist 10.09.2012 15:40
В SQL - полный чайник. Начальство заставило допилить, после людей которые его установили и бросили, оставив все настройки по-дефолту.

Применил половину настроек описанных в статье - существенно ускорило работу. Спасибо автору. Но хотелось бы еще решить один вопрос:

Логи базы раздулись до 500Гб. Если я сделаю настройки баз в соотв. с вашей статьей, что произойдет? не повредятся ли логи? уменьшится их размер? чем я рискую собственно?
Вобще канечно хотелось бы логи сжать максимально. ато 4 базы, по 500Гб как то через чур помоему =)
Ответили: (129)
# Ответить
129. a-novoselov 10.09.2012 16:08
(128) Логи базы существенно уменьшатся после изменения настройки Модель восстановления данных: Простая (Simple). При такой модели восстановления зафиксированные транзакции пишутся сразу в базу данных, соответственно архивы лог-файлов делать не нужно и сами лог-файлы уменьшаются в размерах. Так же желательно установить ограничение размера лог-файла и принцип увеличения размера файла в "Мб" а не в "%", т.к. после бэкапа лог-файл чистится, и, соответственно, при размере в 1 мб очень долго будет расти до 100мб, увеличиваясь каждый раз на 10%
# Ответить
130. juneglist 12.09.2012 10:11
Сделал все настройки одной конкретной базы, в точности как написанно в статье. В итоге лог не уменьшился и на этом шаге:

USE [<ИмяБД>]
GO
DBCC SHRINKFILE (N'<ИмяБД>_log' , 0)
GO

выдало ошибку:

09/12/2012 07:06:26,Full_backup_Doc_abm,Ошибка,2,FILE_SERVER,Full_backup_Doc_abm,second_step,,Выполняется от имени пользователя: NT AUTHORITY\LOCAL SERVICE.Не удалось найти файл "Doc_abm_log" для базы данных "Doc_abm" в sys.database_files. Файл не существует или был удален. [SQLSTATE 42000] (Ошибка 8985). Шаг завершился с ошибкой.,00:00:00,16,8985,,,,0
Ответили: (131)
# Ответить
131. a-novoselov 12.09.2012 10:49
(130) Эммм, возможно лог-файл базы называется по-другому(нестандартное имя)? Шринк файла базы и лога можно выполнять правым щелчком мыши по базе данных, пункт меню "Shrink files..."("Сжатие файлов..." в русской версии)
# Ответить
132. juneglist 12.09.2012 13:41
Да, все верно лог файл назывался по другому. Спасибо за подсказку.
У меня еще один вопрос, раньше базы бэкапились средствами SQL вот по такому скрипту, в один шаг:

USE Doc_test;
GO
BACKUP DATABASE Doc_test
TO DISK = 'E:\first_step\SQLDoc.Bak'
WITH FORMAT,
INIT,
MEDIANAME = 'E_SQLDOC',
NAME = 'Full Backup of DOC2008R2';
GO

Чем ваш вариант отличается от этого? Сразу в глаза бросаются такие вещи как SKIP, NOREWIND, NOUNLOAD, STATS = 10. Незнаю что это.
Ответили: (133)
# Ответить
133. a-novoselov 12.09.2012 14:31
(132)
SKIP
Отключает проверку сроков действия и имен резервных наборов данных, которая обычно проводится инструкцией BACKUP для предотвращения перезаписи.


STATS [ =percentage ]

Отображает сообщение каждый раз, когда завершается очередной percentage задания; используется для отслеживания хода выполнения. Если параметр percentage не задан, то SQL Server выдает сообщение после каждых выполненных 10 процентов.

Параметр STATS сообщает о готовности в процентах по отношению к порогу сообщения о следующем интервале. Показатель готовности в процентах имеет неточное значение; например при значении STATS=10, если процент готовности равен 40, то параметр может отображать 43 процента. Это не является проблемой для больших резервных наборов данных, поскольку показатель готовности в процентах перемещается очень медленно между обращениями ввода-вывода.

NOREWIND

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

NOUNLOAD

Указывает, что после завершения операции BACKUP лента остается в ленточном накопителе.

Источник: http://msdn.microsoft.com/ru-ru/library/ms186865.aspx

По идее эти параметры не обязательные, просто MS SQL их добавляет автоматом, когда из окна бэкапа (правой кнопкой мыши на базе данных в дереве / Backup...) получаешь SQL-скрипт команды.
# Ответить
134. sergey_s_ 16.10.2012 15:37
Полезная статья. Большое спасибо.
# Ответить
135. dyak84 04.01.2013 12:57
Спасибо все получилось. Статтья очень сильно помогла
# Ответить
136. dyak84 14.01.2013 15:04
Спасибо все работает все получилось. Автор так держать
# Ответить
137. Robin_ 24.01.2013 08:49
Спасибо за статью, полезно и познавательно!
Пож-ста проясните вопросы:

1. В свойствах сервера SQL, вкладка Память (Использовать AWE для выделения памяти)
Как понимаю в моем случае на WinServer 2003 галочку лучше поставить для использования памяти больше 2 Гб?

2. В свойствах сервера SQL, вкладка Дополнительно (Максимальная степень параллелизма)
Кое где в инете советуют установить значение "1", как это отображается на производительности сервера? Стоит ли это делать?

3. В свойствах базы данных, вкладка Параметры (Компонент Service Broker включен)
В вашей статье указан параметр "True", для каких целей, за что он отвечает?

WinServer 2003 R2 EE (32 Bit)
SQL Server 2008 R2 (10.50.1600.1)
Ответили: (138) (193)
# Ответить
138. a-novoselov 24.01.2013 11:57
(137)

1) Да, для использования памяти более 3,5 ГБ на 32х системах нужно включать использование AWE.
2) Максимальная степень параллелизма = 1 ускоряет работу SQL сервера с маленькими базами данных. Т.е. при ограничении в 1 процессор на исполнение одного плана запроса эффективно для маленьких запросов, сервер не тратит времени на анализ необходимости подключения дополнительных ядер для выполнения того или иного плана запроса. Но для больших баз данных и оборота с документами в тысячи строк табличной части все же лучше ограничение в одно ядро на запрос не ставить.
3) Компонент SQL Server Service Broker обеспечивает собственную поддержку приложений обмена сообщениями и приложений с очередями сообщений в компоненте Компонент SQL Server Database Engine. Т.е. простыми словами он поддерживает механизм транзакций для распределенных баз данных MS SQL. Для работы с 1С он не нужен, и в статье параметр остался включен, т.к. это значение по умолчанию.
Ответили: (139)
# Ответить
139. Robin_ 24.01.2013 13:03
(138) a-novoselov,

Спасибо!
# Ответить
140. MiB 06.02.2013 07:34
Где то на просторах тырнета есть и видео инструкция, где все тоже самое. С полгода назад натыкался на нее... (но с расчетами по памяти все равно мудрено...
# Ответить
141. DKiguin 19.07.2013 06:52
Предлагаю добавить в статью информацию обсуждавшуюся здесь:
http://forum.infostart.ru/forum24/topic42699/message789343/#message789343
Оригинальная статья здесь: http://msdn.microsoft.com/ru-ru/library/ms177404%28v=sql.105%29.aspx
Считаю, что для баз 1С параметры READ_COMMITTED_SNAPSHOT и ALLOW_SNAPSHOT_ISOLATION надо выставлять всегда.
# Ответить
142. DoctorRoza 19.07.2013 08:22
Спасибо, хорошая статья!
# Ответить
143. AlexO 26.07.2013 13:28
(25) a-novoselov,
Кстати SQL умеет распараллеливать запросы

SQL-то умеет, только какой в этом прок, если этого не умеет 1С-сервер?
# Ответить
144. AlexO 26.07.2013 13:57
(26) _Z1,
и как правило не рекомендуют ставить значение больше 5.

Ничего подобного.
Опция Maximum Degree of Parallelism - работает с устройствами, а не параллелит обработку данных по нитям процессов.
И поэтому рекомендуют как раз исходить из количества рабочих процессоров и так выставлять Maximum Degree of Parallelism, чтобы некоторое их количество оставалось не занятыми для других дел, если SQL вдруг решит распараллелить какую-то задачу и нагрузить процессоры.
и общая производительность падает вместо ожидаемого роста.

Вот поэтому и падала производительность - все процессора занримались для некоей "параллельной" обработки.
(27) a-novoselov,
Да, мы тоже сперва MaxParallelism в 5 выставили, но с 0 на замерах производительности большие запросы быстрее обрабатывались...

0 - это максимальный параллелизм. В тестовых "забегах" максимальное использование ресурсов процессоров для получения блоков данных параллельно эффект дает, а в реальной работе - нет. И все благодаря использованию 1С-сервера.
Почему - смотрите выше.
А вообще - для настройки и администрирования SQL администратору нужно читать по каждому параметру отдельно, что, зачем и почему. Или ставить все по умолчанию.
# Ответить
145. AlexO 26.07.2013 14:41
(0) a-novoselov,
Максимальное количество потоков (Maximum worker threads) ставим 2048, по умолчанию стоит 0 и с таким значением сервер не создает больше 255 потоков

Это было справедливо для SQL2000. С SQL 2005 при значении "0" сервер сам выбирает при старте число рабочих потоков, и для 32разрядных SQL это число начинается от 256 и выше.
А цифра "2048" взята с "потолка" - MS рекомендует для х32 выставлять в Maximum worker threads не более 1024. А лучше - оставить 0 по умолчанию.
(24) _Z1,
При любых других (не 0 ) значениях я считаю что память под рабочие процессы выделяется статически при старте sql сервера

Причем тут рабочие процессы и выделяемая под них память? Здесь настраивается количество рабочих процессов, а сколько они съедят памяти - сие не известно заранее.
# Ответить
146. AlexO 26.07.2013 15:24
Параметр Minimum memory per query - если предполагаются серьезные отчеты или прочие нагрузочные действия в виде больших расчетов, то ставлю значение 4096 Кб.
На SQL 2005 больше, вроде, и не давало ставить, а сейчас на SQL2012 - хоть до 2 ГБ выставляй.
Однако выставление значений данного параметра в МБ чем выше, тем более чревато перерасходом памяти "впустую".
# Ответить
147. Flashback1979SE 06.11.2013 16:10
Спасибо за статью, помогла избежать "курения" тонны Форумов и тестов
# Ответить
148. ronhard 12.11.2013 16:35
Спасибо за сводную информацию. Также согласно этой статье: http://1cexpo.ru/instrukczii/22-reglamentnye-operaczii-na-urovne-subd-dlya-ms-sql-server.html
после обновления статистики рекомендуется выполнять также очистку процедурного кэша.
# Ответить
149. vasijkeee 16.01.2014 14:05
Добрый день.
Сверял настройки базы. Не совсем понятно, для чего broker enabled функция нужна ? Можете подсказать?
Ответили: (150)
# Ответить
150. a-novoselov 16.01.2014 16:18
(149) Настройка лишняя, компонент SQL Server Service Broker можно отключить. Руки никак не дойдут статью переписать...
# Ответить
151. vasijkeee 16.01.2014 18:09
А кроме параметров, остальные настройки актуальны для sql 2012?
Ответили: (152)
# Ответить
152. a-novoselov 16.01.2014 22:03
(151) Да, актуальны
# Ответить
153. bahcha8 06.02.2014 15:48
Спасибо за статью и комментарии. Прошу извинения, если этот вопрос задается в сотый раз, но все таки хотелось уяснить для себя:
1.Перестроение индекса. Вы пишете что производится раз в неделю. Если чаще - это зло? У нас настроено - каждую ночь.
2.Реорганизация индекса. Вы пишете, что не стоит ее делать если делаем Перестроение индекса, но сейчас не могу найти где, но когда настраивала обслуживание - то читала что наилучшая схема такая: Reorganize Index Task - Rebuild Index Task - Shrink Database Task - Update Statistics Task . А Вы считаете, что если Rebuild Index Task, то ни Reorganize Index Task ни Update Statistics Task делать нет необходимости.
3. И по поводу Очистки процедурного кеша. Ну ведь кеш для того и создается и используется - чтобы быстрее работали запросы, чтобы их заново не создавать. Гилевым здесь было сказано: "если объем данных изменяется не сильно, то очистка процедурного кэша скорее зло, так как скулю придется компилировать запрос заново ".Как определить Сильно изменяется объем данных или нет , какие здесь критерии? Количество пользователей (120 - много или мало)? Количество создаваемых документов (300 шт - много или мало)? Количество строк в документах?.
Большое спасибо.
Ответили: (154) (155)
# Ответить
154. a-novoselov 06.02.2014 16:27
(153) Спасибо за вопрос, надо бы уточнить в статье эти моменты.

1. и 2. Перестроение индекса (Rebuild) - это создание индекса заново. Реорганизация индекса (Reorganize) - это дефрагментация существующего индекса. По сути это взаимозаменяющие операции, при этом вторая (дефрагментация) менее затратная по ресурсам сервера, чем первая (полное перестроение). Но все же дефрагментация может проводится не всегда настолько же "правильно", как полное перестроение, что приводит к деградации индекса со временем, особенно при изменении данных "задним числом", по этому полное перестроение все же проводить рекомендуется. Если в базе по ночам ни кто не работает, то нет ничего страшного в том, что перестроение проводится каждую ночь. В нашей же ситуации база работала 24х7 и постоянная полная переиндексация сильно тормозила систему.

3. Очистка кэша конечно операция спорная, но все же опытным путем заметили увеличение производительности послее очиски, когда было произведено полное перестроение индексов. Замечу, что в нашей базе данные менялись очень часто, по 200-700 документов в день с табличными частями в 100 - 10 000 строк. При том постоянно изменялись данные "задним числом". Каждый день кэш чистить однозначно не стоит. Но, ИМХО, хотя бы раз в месяц, особенно после перепроведения или пересчета итогов запросы в кэше устаревают и лучше бы SQL перекомпилировал их заново.
Ответили: (155) (156)
# Ответить
155. _Z1 06.02.2014 17:24
(154) Еще отличие
при реорганизации (reindex) индеска обновляется статистика
при дефрагментации (defrag ) индекса статистика не обновляется

(153) Если делать каждую ночь reindex - база будет лучше работать - однозначно.
как бы поводом не делать если индексы не будут успевать перестраиваться за ночь.
второе против этого если у Вас диски SSD - как бы их ресурс на перезапись я не знаю.

(153) Shrink Database Task - категорически делать нельзя вообще ( не то что каждую ночь ).
запуская его Вы сводите на нет
выполненый до этого reindex.

т.е. ночью Вам если у Вас все продит часа за 2-3 делайте reindex (или всей базы или частично)
при этом выполниться автоматически Update Statistics Task
что такое Rebuild Index Task - не знаю.

по 3 по поводу очистки процедурного кеша ( кеша запросов ) по моему очищать не обязательно,
но хуже тоже не будет, после обновления статистики ms sql сам разбереться что запросы
в кеше запросов уже не актуальны.
т.е. если Вы перестаиваете reindex индексы частично( не для всех таблиц) то Вам не нужно очищать кеш запросов
если делаете reindex для всей базы то лучше очистить кеш запросов
# Ответить
156. bahcha8 07.02.2014 17:34
(154) a-novoselov, Спасибо за ответ. Из ежедневного плана обслуживания убрала перестроение индекса перенесла на воскресенье и туда же включила очистку кеша.
Подскажите еще проверка целостности - когда стоит ее делать, есть ли приоритет в последовательности.
Ответили: (157)
# Ответить
157. a-novoselov 08.02.2014 00:17
(156) Проверку целостности нужно делать, если много данных удаляется непосредственно. Но не думаю, что ее следует делать часто, по идее раз в полгода-год должно хватить. Ну и, естественно, после удаления данных или проверки целостности (когда были найдены и исправлены ошибки) нужно сделать переиндексацию.
# Ответить
158. fixin 03.03.2014 15:44
спасибо. про количество потоков не знал. остальное вроде в курсах
# Ответить
159. vasijkeee 13.03.2014 10:47
Добрый день. Подскажите кто знает, есть 1c 8.2 sql 2012 . в 1с есть функция которая открывает pdf, при локальной работе она его открывает, при работе через sql она зависает или просто не реагирует. Значит есть какие то настройки в sql, которые за это дело отвечают. Помогите , люди добрые!
Ответили: (160)
# Ответить
160. a-novoselov 13.03.2014 11:31
(159) Вообще в клиент-серверном режиме при исполнении функции на сервере для возможности работы табличных документов с внешними файлами необходимо явно указывать свойство вывод:
ТабличныйДокумент.Вывод = ИспользованиеВывода.Разрешить
так как значение "Авто" на сервере встает всегда в "Запретить", а в файловом варианте в зависимости от права пользователя "Вывод".
Возможно мои телепатические способности дали сбой и не угадал с правильной постановкой вопроса (что за функция? как именно открывает? что значит "при локальной работе"? и "при работе через sql"?
Могу точно сказать, что возможности работы 1С с PDF от настроек SQL сервера не зависят никак. SQL-сервер используется только как хранилище данных, вместо файла 1CD, а весь код выполняется на сервере 1С, и от используемого хранилища его выполнение никак не зависит.
Ответили: (161)
# Ответить
161. vasijkeee 13.03.2014 12:19
(160) Есть группа ценников, когда находишься в номенклатуре, требуется тупо открыть этот номер ценника, который соответствует номенклатуре, когда нажимаешь на "открыть ценник" он должен открыть файл pdf, но место этого 0 эмоций. Сначала я думал что что то не так с самой базой 1с,поэтому проверил, сделав так : выгрузил ,базу , и создал локальную базу. В локальной базе pdf открывается на ура.
Ответили: (162)
# Ответить
162. a-novoselov 13.03.2014 12:48
(161) В общем это оффтоп, конечно. Но попробуй отладчиком в серверной базе пройтись. В управляемом приложении передача между клиентом и сервером табличных документов (а я подозреваю, что файл pdf формируется через печать в табличный документ формата PDF) должна осуществляться через временное хранилище.
Ответили: (163)
# Ответить
163. vasijkeee 13.03.2014 15:25
(162)Что за временное хранилище? Вообще она тупо открывает pdf в addobe reader
# Ответить
164. orkhan.huseynov 07.04.2014 10:50
На платформе 8.3 формула расчета памяти не работает, т.к. количество рабочих процессов определяет сама платформа, оно заранее неизвестно и постоянно меняется.
Ответили: (165)
# Ответить
165. a-novoselov 07.04.2014 11:16
(164) Да, в 8.3 вообще желательно уже разносить серверы SQL и 1С, т.к. нагрузка на сервер 1С тоже намного больше, чем это было в 8.1 из-за генерации управляемых форм и выполнения большей части бизнес-логики на сервере.
+ 1 [ orkhan.huseynov; ]
# Ответить
166. DimanYa 10.09.2014 03:35
Настройка рабочей базы данных -Options- параметр Broker enabled.
На что влияет данный параметр и какое значение лучше поставить?
У меня по умолчанию стоит False, у вас True.

"Service Broker (cервис-брокер) — это служба в составе MS SQL Server, работающая как мессидж-брокер, т.е. служба, которая позволяет отправлять и получать сообщения."

Какие сообщения тут могут быть и нужна ли данная служба вообще?
Ответили: (167)
# Ответить
167. a-novoselov 10.09.2014 10:16
(166) Эта служба не нужна для 1С, просто в старых версиях MS SQL была включена по умолчанию.
Ответили: (169)
# Ответить
168. MakcTLT63 10.09.2014 10:31
Интересно. Почитаю позже.
# Ответить
169. DimanYa 12.09.2014 07:00
(167) a-novoselov, Спасибо.

А можете меня поправить если я не прав.

Как понял я для каждого плана обслуживания (Дефрагментация индексов и сбор статистики) создается создается отдельный пакет SSIS (SQL Server Integration Services — подсистема SQL Server, которая раньше называлась DTS).
Но в начале статьи есть такая фраза "Во-первых нам нужен только сервер, остальные службы, которые к нему относятся и возможно кто-то ими пользуется, нам только тормозят работу. Останавливаем и отключаем такие службы, как FullText Search (у 1С собственный механизм полнотекстового поиска), Integration Services и иже с ними."
Вопрос в следующем отключив данную службу (Integration Services) не повлияет ли это на планы обслуживания?
Ответили: (170)
# Ответить
170. a-novoselov 12.09.2014 11:45
(169) Не повлияет.
За планы обслуживания отвечает MS SQL Server Agent. Хотя не могу сказать точно за SQL Server 2012, могли перенести функционал между службами. Вообще лучше вариант запуска поставить "Вручную" и SQL Server запустит нужную службу при необходимости.
Статья писалась почти 5 лет назад, нужно бы, конечно, ее обновить с учетом последнего опыта и замечаний из комментариев. Постараюсь это сделать.
Ответили: (171) (191)
# Ответить
171. DimanYa 12.09.2014 09:08
(170) a-novoselov, Жду корректировки статьи.
Меня интересует ещё один параметр, который не описан в вашей статье.
max degree of parallelism (DOP).
Данный параметр указывает на то сколько максимально процессоров может быть задействовано на выполнение одного запроса.
По умолчанию стоит значение 0. Это означает, что все процессоры могут быть загружены одним запросом.
Многие источники утверждают, что нужно ставить знание в 1, то есть один запрос- один процессор.
Мне кажется, что использовать ни один из этих параметров не стоит. А выбрать среднее значение исходя из количества процессоров на сервере.
У меня 8-ядер и я думаю установить значение в 4. Но есть сомнения...
Может подскажете какие проверки можно выполнить, чтобы более точно оптимальное количество.
Идеально было наличие уже готовых тестов, чтобы можно было проверить, а не выдумывать запросы самому.
Ответили: (172)
# Ответить
172. a-novoselov 12.09.2014 16:06
(171) Да, параметр довольно спорный. Лично я думаю, что стоит оставлять все же 0, т.к. планировщик запросов SQL сам выяснит, сколько ему процессоров нужно для выполнения определенных запросов. Но здесь опять же ему нужно статистику хорошую собирать. По идее планировщик знает, что распараллеливание запросов по ядрам это дополнительные расходы на синхронизацию и старается больше одного ядра на запрос не использовать. И распараллеливание происходит только на очень больших запросах, которые в 1С бывают крайне редко и на очень высоконагруженных системах. Так что не думаю, что изменение этого параметра как-то сильно отразится на производительности сервера в целом. Но здесь нужно в первую очередь смотреть на конкретную систему: планы запросов, самые трудные запросы, показания профилировщика или определять методом "научного тыка".
# Ответить
173. for_muser 17.09.2014 12:13
Не рекомендую трогать параметры увеличения log-файла базы, может выдать сообщение типа "Нарушена целостность базы" или "ошибка формата,... потока" - сам пробовал
Ответили: (176)
# Ответить
174. for_muser 17.09.2014 12:15
после этих страшных сообщений следует вернут обратно параметры увеличения log и запускать базу после чистки кэша (т.е. удалить базу из списка баз и добавить заново)
Ответили: (176)
# Ответить
175. zzz_natali 17.09.2014 22:36
А что там у нас с MSSQL2014? Заявлена сумасшедшая оптимизация этой версии скулы без усиления аппаратной части. Правда обычное ТиС на УПП1.3 делать не хочет - отваливается по какой-то ошибке БД(не помню какой).
Прокомментируйте, плиз.
Сенькс.
Ответили: (176) (177)
# Ответить
176. a-novoselov 22.09.2014 00:05
(173) (174) Ну на работающей базе (когда в ней кто-то работает) вообще не желательно какие-то параметры менять. Но подобной ошибки не встречал никогда.
(175) Думаю стоит подождать, когда сама 1С заявит поддержку этой версии MS SQL в очередном релизе 8.3
# Ответить
177. DonAlPatino 12.11.2014 12:41
(175) Как мягко намекнули на недавней встрече в Microsoft Technology Centers "1С только научили использовать новые фичи SQL2008R2". Так что "сумасшедшая оптимизация " скорее всего не для нас
# Ответить
178. vde69 23.03.2015 13:56
покритикую:
1. SA пользователь для работы - это нонсенс... я-бы рекомендовал вообще для каждой базы заводить отдельного пользователя с правами только на эту базу, это очень удобно для быстрого убития сессии, в тестовой базе, завесявшей например памят запросом к темпДБ
2. про память - мои рекомендации такие
отдаем скулю 50% физической памяти, потом при пиковых нагрузках смотрим сколько свободной памяти имеет сервер и добавляем скулю столько что-бы свободной физической памяти при пике загруки было 10% от физической.
3. про регламенты - обновление статистики стоит делать чаще чем индексы...
4. про бекапы - стоит настроить два разных джоба (и в разные папки) "ежедневный" и "помесячный"
Ответили: (179)
+ 2 [ CSiER; support; ]
# Ответить
179. a-novoselov 25.03.2015 19:02
(178) Отвечу:

1. Так как эта инструкция предполагалась как "для чайников", то настройка отдельных пользователей SQL, прав для них и т.п. уже выходит за рамки статьи, да и по большому счету это дело вкуса, в подавляющем большинстве организаций 1С ходит в SQL под SA (я не утверждаю что это правильно и нужно так делать).

2. С точки зрения владельца бизнеса/оборудования 10% свободной памяти при пиковых нагрузках это 10% зря выброшенных денег за сервер в миллион долларов. Небольшая аналогия: вы купили 4х местный автомобиль, но программист вам говорит "вы должны использовать максимум 3 места из 4х!" Что вы ему ответите? А зачем SQL серверу память резать и свободную оставлять?

3. По поводу обновления статистики: https://msdn.microsoft.com/ru-ru/library/ms187348.aspx - Тут не советуют делать слишком частое обновление статистики, т.к. это вызывает перекомпиляцию=замедление запросов. По идее статистика сама копится и автоматически дополняется/изменяется, и принудительное обновление лучше делать как раз после перестроения индексов или какого-то другого сильного изменения данных, участвующих в статистике.

4. Чем отличается ежедневный полный бэкап, сделанный 31.01 и ежемесячный бэкап? Только папкой назначения? Данные в них одни и те же. Вообще грамотный администратор будет ежемесячные/еженедельные бэкапы сохранять на другом сервере/в другой стране/на жестком диске в сейфе... но это опять же, как и п.1, относится к тонкостям администрирования, во многом зависит от вкуса и опыта администратора и выходит за рамки статьи.
Ответили: (189)
# Ответить
180. quick 03.08.2015 17:59
Не надо ставить галки на все процы и Boost priority, оставляйте хотя бы два ядра свободными. Т.к. будете получать ошибки соединения с сервером 1С, если он у вас на том же сервер что и СКЛ. Т.к. СКЛ при больших нагрузках не дает отрабатывать 1С и он откидывает клиентов.
Ответили: (182)
+ 2 [ dkonakov; a-novoselov; ]
# Ответить
181. nSpirit2 04.08.2015 10:21
(66) gilv, А как определить что скуль просел от тысячи пользователей? А то что то абдекс говорит что все нормально с 1с что я делаю не так ? :D
# Ответить
182. a-novoselov 04.08.2015 10:49
(180) согласен, ценное замечание. Либо поднять приоритет для службы "Агент сервера 1С", чтобы на равных со скулем были.
# Ответить
183. OldGuest 12.08.2015 10:14
Доброго времени суток всем, прошу помочь со связкой 1С-сервер(х64) + MSSQL2008R2(x64). 15 пользователей, 2 базы(~1 Гб каждая) Состоялся переход с файлового варианта, заметно дольше стали формироваться отчеты. Тест Гилёва на скуле показал 17.5 против 37 на файловом варианте. Настраивал по этому мануалу + использовал советы из этой статьи http://efsol.ru/articles/tuning-1c.html . 1С на скуле работает меньше недели. Спасибо.
Ответили: (184)
# Ответить
184. a-novoselov 12.08.2015 16:40
(183)
И вам доброго. А что за железо на сервере стоит? 1С и SQL на одной машине? Что там еще крутится? Что системный монитор ресурсов Windows показывает по нагрузке на память / процессор / диск(и) ?
Ответили: (185)
# Ответить
185. OldGuest 12.08.2015 21:23
(184) a-novoselov, серверная "мать" Intel, 2 процессора Intel® Xeon® CPU E5606 @2.13GHz, 16Гб оперативки, RAID 1 - с базами скуля, SSD с Windows Server 2012R2, Сервер предприятия и MSSQL на этом же диске. Сервер используется только для 1С. В ближайшем времени предполагается добавление ещё 1 базы и 5 пользователей, а через 2-3 месяца ещё 5 пользователей, итого ~25 пользователей. Я наверно допустил ошибку при установке MSSQL, что указал один и тот же диск, для баз и для tempdb. Согласно тесту G1C из набора Гилёва скорость записи в 1 поток - 44-59 Мб/с, максимальная скорость - 76 Мб/с. Монитор сделаю завтра, вопрос только, мониторить надо логический диск с базами или физический?
Ответили: (186)
# Ответить
186. a-novoselov 13.08.2015 11:18
(185) Смотрите физический диск, параметр "Максимальная длина очереди к диску". Это действительно очень странно, что на таких легких базах у вас просела производительность... Скорее всего где-то жесткий косяк в каких-то настройках: винды, кэширования или еще чего-то. Возможно даже просто места мало на системном диске и сервер 1С не может логи писать и тормозит от этого. Но это так, "пальцем в небо", один из сотни возможных косяков.
Ответили: (187)
# Ответить
187. OldGuest 13.08.2015 14:53
(186) a-novoselov, На системном диске из 223Гб занято всего 20Гб. два других логических заполнены каждый максимум на 1/3. В системе даже не знаю, что нужно настраивать специально для 1С и SQL. План электропитания стоит на "Макс. производительность" вот отчет с максимальными показателями очередей для обоих физ. дисков. 0 - система, 1 - базы. Измерения производились в середине рабочего дня при, включенном дополнительно, тесте Гилёва. http://s017.radikal.ru/i417/1508/30/60b25977798c.gif
Так же средние значения по логическому диску с базами и памяти
http://s001.radikal.ru/i195/1508/5c/91ac3b8a7952.gif
Ответили: (188)
# Ответить
188. a-novoselov 13.08.2015 16:39
(187)
Что-то у вас очереди длинные на диск, нужно смотреть что именно нагружает. Или разносить систему+1с и sql по разным физическим дискам. Если на SQL очереди не приблизятся к оптимальным показателям, разносить данные и temdb по разным дискам.
Обычно даются такие рекомендации по оптимальным показателям системного монитора:

Контроль основных показателей производительности серверов СУБД и Приложения 1С:
Processor - %Processor time: лимит 70%
System - Processor Queue Length: лимит 2 * кол-во ядер
Physical Disk - Avg. Disk Queue Length: лимит 2 * кол-во дисков, работающих параллельно (для рейд-массивов)
Network adapter - Bytes total / sec: лимит 65% от пропускной способности
Memory - Available Mbytes: больше 0
Ответили: (190)
# Ответить
189. vde69 14.08.2015 16:14
(179) a-novoselov,

с точки зрения "бешеного" бизнеса вообще не зачем тратить деньги на зеркальный райд. стоит в 2 раза больше а объём тот же.

а вот с точки зрения нормального бизнеса обязательно требуется резервирование и масштабирование как софта так и железа, то есть железо всегда должно покупаться с неким запасом "на будущее"
# Ответить
190. OldGuest 14.08.2015 16:37
(188) a-novoselov, спасибо вам за помощь, как только разберусь в чем проблема, обязательно здесь напишу.
Ответили: (194)
# Ответить
191. bookmanyak 09.12.2015 22:09
Уважаемый, a-novoselov,
За статью огромная благодарность!
ИМХО: мне лично, как новичку в работе с MS SQL Server, очень помогла! А все комментарии, побудили еще глубже заняться этим вопросом. Спасибо всем, кто принимает участие в обсуждении.

(170) Статья писалась почти 5 лет назад, нужно бы, конечно, ее обновить с учетом последнего опыта и замечаний из комментариев. Постараюсь это сделать.

А за это, Вам будут благодарны еще многие пользователи!
Спасибо!
# Ответить
192. succub1_5 08.01.2016 10:29
Спасибо за статью! Хотя никто и не жалуется (3 базы УТ, ЗУП, БП и 150 пользователей) но ради интереса сделал Тест Гилева:
1) дефолтные настройки сервера SQL - 22
2) с настройками сервера SQL из статьи - 29
+ 1 [ a-novoselov; ]
# Ответить
193. Sanario 17.03.2016 16:53
(137) Robin_, не системах, а при работе с SQL 32-х битными приложениями
# Ответить
194. odseg 06.04.2016 22:24
(190) OldGuest, Разобрались?
# Ответить
195. alex_sh2008 06.04.2016 22:58
Это статья для тех кто не умеет читать документацию и рекомендации по базовой настройке SQL сервера на сайте Microsoft?
# Ответить
196. smirnova_a 28.04.2016 12:34
Подскажите, для 8.3 нужны другие настройки?
Ответили: (197)
# Ответить
197. a-novoselov 28.04.2016 15:46
(196) Нет, подойдут эти же.
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл