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

Откуда:
Сообщений: 360
Проблема следующая когда начали оптимизировать производительность SQL 2008 (64 битный и ос тоже) сервера для 1С (база около 40Гб)
наткнулись на следующую ситуацию
База 1С Бухгалтерия ближе к Oltp системам, т.е. проведение некоторых документов делается автоматическими процедурами да еще и днем когда пользователи работают.
(Поскольку я раньше занимался в основном Oracle и не лез глубоко в MS SQL считайте меня новичком :))
Первый вопрос Есть ли хорошие статьи где описывается как настраивать MS SQL для OLTP систем (прямо с набором рекомендуемых параметров)?
Ситуация MS SQL Сервер 2008 + Сервер на 24 ядра с 32гб памяти все 64 битное
Так как ресурсы процессоров мало загружены, проверили ожидания по времени ожиданий оказалось что в процентах это распределяется следующим образом (см приложение внизу)
Из собранной статистики видно что половину времени занимают PAGEIOLATCH_EX, WRITELOG
Вопрос - как узнать есть ли перегруз дисковой подсистемы или такое процентное распределение времени задержек это нормально?
Я смотрел счетчики ОС

_Total 0 C: 1 D:
Avg. Disk Queue Length 0,003
Avg. Disk Read Queue Length 0,000
Avg. Disk sec/Transfer 0,001 0,001 0,000
Avg. Disk Write Queue Length 0,003
Disk Transfers/sec 6,009 0,000
Они не вызвали подозрений что на сервере есть узкие места с дисковой системой, хотя конечно будем изучать их дальше в различных режимах.

Вопрос еще в другом есть ли возможность как то повлиять на кэширование данных - как понимаю если транзакция завершается данные не пишутся сразу на диск, а остаются в памяти какое то время (ведь информация о том что изменили и так есть в Transaction log и и есть возможность ее накатить) т.е. некая отложенная запись крупными блоками или я не прав в случае MS SQL?
Я посмотрел распределение памяти
Connection Memory (KB) 920,000
Granted Workspace Memory (KB) 0,000
Lock Memory (KB) 21 432,000
Maximum Workspace Memory (KB) 20 690 880,000
Optimizer Memory (KB) 1 568,000
SQL Cache Memory (KB) 79 264,000
Target Server Memory (KB) 28 060 544,000
Total Server Memory (KB) 11 733 632,000
Сразу возник вопрос где кэш данных - это SQL Cache Memory или total Server Memory? Можно ли кэш данных настроить как то в MS SQL т.е. принудительно дать побольше памяти (у нас 32 гигабайт )


CXPACKET - на сервере 24 ядра. Degree Of parallelism поставили на 4 (cxpacket существенно сократилось) - уменьшать дальше???
Я руководствовался статьей http://www.cyberguru.ru/database/sqlserver/parallelism-uncertainty-degree.html

WaitType Percentage
PAGEIOLATCH_EX 30.24
PAGEIOLATCH_SH 25.85
CXPACKET 14.49
ASYNC_NETWORK_IO 13.65
WRITELOG 10.39
LCK_M_S 3.06
PAGEIOLATCH_UP 0.68
IO_COMPLETION 0.49
LOGBUFFER 0.31
PREEMPTIVE_OS_AUTHENTICATIONOPS 0.14
SOS_SCHEDULER_YIELD 0.10
SQLTRACE_FILE_BUFFER 0.09
LATCH_EX 0.06
SLEEP_DBSTARTUP 0.05
SQLTRACE_FILE_WRITE_IO_COMPLETION 0.04
OLEDB 0.04
LCK_M_X 0.04
CHKPT 0.03
LCK_M_SCH_M 0.02
PREEMPTIVE_OS_FILEOPS 0.02
MSQL_XP 0.02
PREEMPTIVE_OS_LOOKUPACCOUNTSID 0.02
PAGELATCH_EX 0.02
PAGELATCH_UP 0.02
PREEMPTIVE_OS_GETPROCADDRESS 0.02
PREEMPTIVE_OS_WAITFORSINGLEOBJECT 0.02
PREEMPTIVE_OS_CRYPTOPS 0.01
PREEMPTIVE_OS_WRITEFILEGATHER 0.01
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICY 0.01
PREEMPTIVE_OS_DELETESECURITYCONTEXT 0.01
PAGELATCH_SH 0.01
PREEMPTIVE_OS_CRYPTACQUIRECONTEXT 0.01
PREEMPTIVE_OS_DOMAINSERVICESOPS 0.00
PREEMPTIVE_OS_AUTHORIZATIONOPS 0.00
PREEMPTIVE_OS_LOADLIBRARY 0.00
PREEMPTIVE_OS_QUERYREGISTRY 0.00
PREEMPTIVE_OS_DECRYPTMESSAGE 0.00
LATCH_SH 0.00
PREEMPTIVE_OS_DELETEFILE 0.00
WRITE_COMPLETION 0.00
PREEMPTIVE_OS_CRYPTIMPORTKEY 0.00
PREEMPTIVE_OS_REVERTTOSELF 0.00
SLEEP_DCOMSTARTUP 0.00
ASYNC_IO_COMPLETION 0.00
PREEMPTIVE_OS_REPORTEVENT 0.00
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICYFREE 0.00
LCK_M_IX 0.00
CMEMTHREAD 0.00
PREEMPTIVE_OS_GETDISKFREESPACE 0.00
PREEMPTIVE_OS_SETFILEVALIDDATA 0.00
EE_PMOLOCK 0.00
PREEMPTIVE_OS_DISCONNECTNAMEDPIPE 0.00
PREEMPTIVE_OS_GETFILEATTRIBUTES 0.00
PREEMPTIVE_OS_CREATEFILE 0.00
EXECSYNC 0.00
1 мар 11, 18:31    [10308353]     Ответить | Цитировать Сообщить модератору
 Re: Настройка производительности и кэш  [new]
aleks2
Guest
Фсе, что вы могете сделать для 1C

1. Задрать стоимость параллельного исполнения. Minimum query planthreshold for considering queries for parallel execution (cost estimate): не скупитесь.

2. Ну дисков насовать и файлы базы разнести. Дык у вас и так почти фся база в ОЗУ помещается.

3. Реально эффективная "настройка" - только изменение запросов со стороны 1С. Что большинству - не по зубам.

ЗЫ.
>>Можно ли кэш данных настроить как то в MS SQL т.е. принудительно дать побольше памяти (у нас 32 гигабайт )
Глупый вопрос. MS SQL скушает ВСЮ ДОСТУПНУЮ ПАМЯТЬ, если она ему нужна. Если не кушает - не нужна.
2 мар 11, 06:07    [10309894]     Ответить | Цитировать Сообщить модератору
 Re: Настройка производительности и кэш  [new]
selis76
Member

Откуда:
Сообщений: 360
aleks2
2. Ну дисков насовать и файлы базы разнести. Дык у вас и так почти фся база в ОЗУ помещается.

3. Реально эффективная "настройка" - только изменение запросов со стороны 1С. Что большинству - не по зубам.

Глупый вопрос. MS SQL скушает ВСЮ ДОСТУПНУЮ ПАМЯТЬ, если она ему нужна. Если не кушает - не нужна.

Так вот я и не пойму у меня кеш для данных это 79 мегабайт (SQL Cache) или другой показатель? Если 79 мегабайт на базу в 40гб ихмо мало да при таком объеме ОЗУ в 64 битном исполнении. Просто в Oracle там можно было управлять размером кэша любого и данных и для sort area size и т.д. я думал и MS SQL такая возможность есть
2 мар 11, 08:06    [10309978]     Ответить | Цитировать Сообщить модератору
 Re: Настройка производительности и кэш  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
2 selis76,

автор
Есть ли хорошие статьи где описывается как настраивать MS SQL для OLTP систем

Прежде, чем что-то настраивать, неплохо бы было определиться с причинами тормозов:
Troubleshooting Performance Problems in SQL Server

автор
проверили ожидания по времени ожиданий

SQL Server Waiting and Blocking Issues
2 мар 11, 08:24    [10310050]     Ответить | Цитировать Сообщить модератору
 Re: Настройка производительности и кэш  [new]
selis76
Member

Откуда:
Сообщений: 360
Нашли причину тормозов, оказалось что тормозит дисковая подсистема. Пока разделили ввод вывод между разными дисковыми системами, ситуация улучшилась, но пока ждем более производительной дисковой системы.
Почитал про использование памяти сервером как посмотреть на что он ее тратит, но как я понял min server memory and max server memory options это практически все чем можно управлять ;(
14 апр 11, 13:44    [10518270]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Настройка производительности и кэш  [new]
Разумная кровать
Member

Откуда: Неризиносква
Сообщений: 2591
selis76
Нашли причину тормозов, оказалось что тормозит дисковая подсистема.


Не подскажите, какими способами можно проверить работу дисковой системы ?
11 июл 12, 15:40    [12851360]     Ответить | Цитировать Сообщить модератору
 Re: Настройка производительности и кэш  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33972
Блог
Разумная кровать,

нужно смотреть в сторону средней длины очереди и задержек по PAGEIOLATCH
11 июл 12, 22:15    [12853258]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить