Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
 Утечки памяти MS SQL 2008  [new]
J3utajisi
Member

Откуда:
Сообщений: 97
На работе в определенные моменты загрузки зависает весь SQL сервер из-за нехватки оперативной памяти.
Сервер WS 2008, SQL Server 2008 R2 SE.
32 гб оперативы, процессор
Я выявил ряд моментов из-за которых может происходить зависание:
1. В основных таблицах много триггеров, которые возможно зацикливаются
2. Используется много CLR функций, которые возможно криво написаны
3. Иногда происходят операции массовой обработки данных, которые происходят по 5-10 минут, но почему от них зависает сервер?!
4. Много работы с xml через sp_xml_preparedocument и вообще xml во многих местах обрабатывается не разумно.

База и программный продукт пишется уже несколько лет и имеет размер более 50 гб, так что перелопатить ее не так то просто.
1. Пока буду более детально разбираться с причиной зависаний хотел попробовать каждый 2 часа очищать кэш оперативки следующими командами:
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
Так вообще делают и к чему это может привезти?

2. Как считаете, в каком направлении лучше начинать копать и что может больше вешать сервер и загружать оперативную память

3. Ладно бы старые модули тормозили (которые как раз криво написаны и которые редко искользуются). Как бы сделать, чтобы новый функционал не вешался.
25 авг 11, 09:20    [11175290]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
J3utajisi
Member

Откуда:
Сообщений: 97
Более точные параметры и настройки сервера

SQL Server and OS Version Info
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Logical CPU Count Hyperthread Ratio Physical CPU Count Physical Memory (MB) sqlserver_start_time
16 8 2 30709 2011-08-22 18:01:58.053

LogDate ProcessInfo Text
2011-08-22 18:01:58.710 Server System Manufacturer: 'HP', System Model: 'ProLiant BL460c G6'.


Value Data
ProcessorNameString Intel(R) Xeon(R) CPU E5540 @ 2.53GHz


name value value_in_use description
access check cache bucket count 0 0 Default hash bucket count for the access check result security cache
access check cache quota 0 0 Default quota for the access check result security cache
Ad Hoc Distributed Queries 0 0 Enable or disable Ad Hoc Distributed Queries
affinity I/O mask 255 255 affinity I/O mask
affinity mask 0 0 affinity mask
affinity64 I/O mask 0 0 affinity64 I/O mask
affinity64 mask 0 0 affinity64 mask
Agent XPs 1 1 Enable or disable Agent XPs
allow updates 0 0 Allow updates to system tables
awe enabled 1 0 AWE enabled in the server
backup compression default 0 0 Enable compression of backups by default
blocked process threshold (s) 0 0 Blocked process reporting threshold
c2 audit mode 0 0 c2 audit mode
clr enabled 1 1 CLR user code execution enabled in the server
cost threshold for parallelism 5 5 cost threshold for parallelism
cross db ownership chaining 0 0 Allow cross db ownership chaining
cursor threshold -1 -1 cursor threshold
Database Mail XPs 0 0 Enable or disable Database Mail XPs
default full-text language 1049 1049 default full-text language
default language 21 21 default language
default trace enabled 1 1 Enable or disable the default trace
disallow results from triggers 0 0 Disallow returning results from triggers
filestream access level 0 0 Sets the FILESTREAM access level
fill factor (%) 0 0 Default fill factor percentage
ft crawl bandwidth (max) 100 100 Max number of full-text crawl buffers
ft crawl bandwidth (min) 0 0 Number of reserved full-text crawl buffers
ft notify bandwidth (max) 100 100 Max number of full-text notifications buffers
ft notify bandwidth (min) 0 0 Number of reserved full-text notifications buffers
index create memory (KB) 0 0 Memory for index create sorts (kBytes)
in-doubt xact resolution 0 0 Recovery policy for DTC transactions with unknown outcome
lightweight pooling 0 0 User mode scheduler uses lightweight pooling
locks 0 0 Number of locks for all users
max degree of parallelism 0 0 maximum degree of parallelism
max full-text crawl range 4 4 Maximum crawl ranges allowed in full-text indexing
max server memory (MB) 23360 23360 Maximum size of server memory (MB)
max text repl size (B) 65536 65536 Maximum size of a text field in replication.
max worker threads 0 0 Maximum worker threads
media retention 0 0 Tape retention period in days
min memory per query (KB) 1024 1024 minimum memory per query (kBytes)
min server memory (MB) 0 0 Minimum size of server memory (MB)
nested triggers 1 1 Allow triggers to be invoked within triggers
network packet size (B) 4096 4096 Network packet size
Ole Automation Procedures 0 0 Enable or disable Ole Automation Procedures
open objects 0 0 Number of open database objects
optimize for ad hoc workloads 0 0 When this option is set, plan cache size is further reduced for single-use adhoc OLTP workload.
PH timeout (s) 60 60 DB connection timeout for full-text protocol handler (s)
precompute rank 0 0 Use precomputed rank for full-text query
priority boost 1 1 Priority boost
query governor cost limit 0 0 Maximum estimated cost allowed by query governor
query wait (s) -1 -1 maximum time to wait for query memory (s)
recovery interval (min) 0 0 Maximum recovery interval in minutes
remote access 1 1 Allow remote access
remote admin connections 0 0 Dedicated Admin Connections are allowed from remote clients
remote login timeout (s) 20 20 remote login timeout
remote proc trans 0 0 Create DTC transaction for remote procedures
remote query timeout (s) 600 600 remote query timeout
Replication XPs 0 0 Enable or disable Replication XPs
scan for startup procs 0 0 scan for startup stored procedures
server trigger recursion 1 1 Allow recursion for server level triggers
set working set size 0 0 set working set size
show advanced options 1 1 show advanced options
SMO and DMO XPs 1 1 Enable or disable SMO and DMO XPs
SQL Mail XPs 0 0 Enable or disable SQL Mail XPs
transform noise words 0 0 Transform noise words for full-text query
two digit year cutoff 2049 2049 two digit year cutoff
user connections 0 0 Number of user connections allowed
user options 0 0 user options
xp_cmdshell 0 0 Enable or disable command shell
25 авг 11, 09:34    [11175348]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Ну, начать, как всегда, стоит с установки последних обновлений...
25 авг 11, 09:49    [11175443]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
J3utajisi
Member

Откуда:
Сообщений: 97
tpg,

Последних обновлений чего. Итак вроде последняя версия MSSQL 2008. Чем это может помочь то?
25 авг 11, 10:10    [11175591]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
komrad
Member

Откуда:
Сообщений: 5300
какая жесть ... и причины, и диагноз
25 авг 11, 10:12    [11175610]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
J3utajisi
tpg,

Последних обновлений чего. Итак вроде последняя версия MSSQL 2008. Чем это может помочь то?
С чего вдруг версия - Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 - стала последней?

SP1 + CU2 к нему.

А помочь обновления могут хотя бы тем, что производитель в них исправляет свои ошибки (например, сборщик мусора в голом релизе косячно работает).
25 авг 11, 10:23    [11175741]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
AlekseyVP
Guest
J3utajisi
Более точные параметры и настройки сервера
SQL Server and OS Version Info
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


RTM - это не последняя версия, это выпуск продукта. Поищи на download.microsoft.com ServicePack...
25 авг 11, 10:25    [11175763]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
J3utajisi
Member

Откуда:
Сообщений: 97
Спасибо конечно за совет про обновления. А по другим вопросам можете еще что-нибудь сказать?
25 авг 11, 10:54    [11176011]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
J3utajisi
А по другим вопросам можете еще что-нибудь сказать?

"зависает весь SQL сервер из-за нехватки оперативной памяти" - это вы как установили ? По сообщениям каким то ?

И скролько памяти реально получил сервер то ?
25 авг 11, 10:58    [11176049]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
J3utajisi,

Поставьте на Ваш R2, SP1 и еще не помешало бы Security Update накатить. там эти ошибки фиксили.
25 авг 11, 11:11    [11176164]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
нектотам
Guest
J3utajisi,
select * from sys.dm_os_wait_stats order by wait_time_ms desc
- что покажет?
25 авг 11, 11:22    [11176282]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
J3utajisi
Member

Откуда:
Сообщений: 97
нектотам, в нормальном режиме вот что выдал:

+
wait_type	waiting_tasks_count	wait_time_ms	max_wait_time_ms	signal_wait_time_ms
LAZYWRITER_SLEEP 2320134 2347922823 86597640 52971
CLR_AUTO_EVENT 28 237783326 99817524 2
XE_TIMER_EVENT 7865 235997744 30094 235996469
REQUEST_FOR_DEADLOCK_SEARCH 47137 235989413 5151 235989413
LOGMGR_QUEUE 539626 235976217 21709903 73713
SQLTRACE_INCREMENTAL_FLUSH_SLEEP 58852 235933268 4196 199
CHECKPOINT_QUEUE 2006 235344200 25214333 659
FT_IFTS_SCHEDULER_IDLE_WAIT 3900 233984259 60015 279
XE_DISPATCHER_WAIT 25 198841066 44360107 0
SLEEP_TASK 2299956 118639763 1040 64013
BROKER_TO_FLUSH 114613 118000762 1039 9755
OLEDB 4812335 83259461 117514 0
TRACEWRITE 385047 83119291 2018 23468
BACKUPBUFFER 921882 16794963 2063 17595
CXPACKET 1661243 15279356 84478 190260
ASYNC_IO_COMPLETION 91 14971992 2935646 5
BACKUPIO 296523 13106118 12094 699
LATCH_EX 3628518 9832345 1192 368505
PAGEIOLATCH_SH 519060 9451713 6233 32075
PAGEIOLATCH_EX 211202 7745149 6361 14642
ASYNC_NETWORK_IO 4216854 5305383 2015 179770
IO_COMPLETION 86484 2056849 9763 566
WRITELOG 543243 1211596 6024 22719
LCK_M_IX 19 298325 68470 4
LCK_M_U 230 226784 43463 44
SOS_SCHEDULER_YIELD 4659857 116663 51 112394
BROKER_TASK_STOP 11 107255 10014 0
SLEEP_BPOOL_FLUSH 102476 90046 45 5586
PAGEIOLATCH_UP 1871 63745 2026 172
LATCH_SH 1461 22247 1059 132
LCK_M_SCH_M 261 18187 1148 11
PREEMPTIVE_OS_FILEOPS 455 14666 4070 0
PREEMPTIVE_OS_LIBRARYOPS 20772 11066 7722 0
CMEMTHREAD 258684 10838 28 9686
WRITE_COMPLETION 174 10774 1770 0
LCK_M_S 9 10116 4829 1
BACKUPTHREAD 708 7673 875 19
BROKER_EVENTHANDLER 4 7275 7148 0
LCK_M_X 97 7061 575 37
PAGELATCH_EX 313347 6890 671 4198
PREEMPTIVE_OS_AUTHENTICATIONOPS 23360 6685 132 0
PREEMPTIVE_OS_GENERICOPS 27 6407 5762 0
FT_IFTSHC_MUTEX 1 6093 6093 0
PAGELATCH_UP 11526 5887 300 567
PREEMPTIVE_OS_PIPEOPS 1 5771 5771 0
SLEEP_DBSTARTUP 55 5731 113 2
PAGELATCH_SH 57110 5612 1205 962
EXECSYNC 25990 4969 699 1811
CLR_MANUAL_EVENT 27 4517 848 0
CXROWSET_SYNC 20059 4244 17 712
LOGBUFFER 171 3339 374 26
SQLTRACE_FILE_WRITE_IO_COMPLETION 278 2673 77 0
PREEMPTIVE_OS_LOOKUPACCOUNTSID 4589 2302 120 0
PREEMPTIVE_OS_QUERYREGISTRY 3927 1987 4 0
MSQL_XP 995 1840 195 0
PREEMPTIVE_OS_CREATEFILE 200 1683 397 0
CHKPT 1 1671 1671 0
SLEEP_SYSTEMTASK 1 1671 1671 0
PREEMPTIVE_OS_SETFILEVALIDDATA 42 1485 1216 0
PREEMPTIVE_OS_GETPROCADDRESS 995 1410 176 0
PREEMPTIVE_OS_DELETESECURITYCONTEXT 4378 1333 69 0
SQLTRACE_FILE_BUFFER 63 1156 47 3
PREEMPTIVE_OS_WRITEFILEGATHER 58 790 128 0
PREEMPTIVE_OS_COMOPS 1 747 747 0
PREEMPTIVE_OS_AUTHORIZATIONOPS 4673 586 4 0
PREEMPTIVE_OS_LOADLIBRARY 5 471 178 0
LCK_M_IU 11 347 208 0
PREEMPTIVE_OS_CRYPTOPS 1 263 263 0
PREEMPTIVE_OS_AUTHZINITIALIZECONTEXTFROMSID 4 260 120 0
LCK_M_SCH_S 2 239 238 0
PREEMPTIVE_OS_DECRYPTMESSAGE 5153 200 0 0
PREEMPTIVE_OS_GETFILEATTRIBUTES 238 173 34 0
PREEMPTIVE_OS_REPORTEVENT 212 146 57 0
PREEMPTIVE_OS_REVERTTOSELF 4423 127 4 0
SLEEP_DCOMSTARTUP 1 123 123 0
PREEMPTIVE_OS_ENCRYPTMESSAGE 690 62 0 0
LCK_M_RS_U 1 58 58 0
PREEMPTIVE_OS_DELETEFILE 1 48 48 0
PREEMPTIVE_OS_GETVOLUMEPATHNAME 90 40 0 0
PREEMPTIVE_OS_CRYPTACQUIRECONTEXT 247 35 0 0
PREEMPTIVE_OS_WAITFORSINGLEOBJECT 3 17 5 0
PREEMPTIVE_OS_GETDISKFREESPACE 90 16 0 0
SOS_RESERVEDMEMBLOCKLIST 217 16 4 9
PREEMPTIVE_OS_DOMAINSERVICESOPS 1 13 13 0
THREADPOOL 21 12 2 0
PREEMPTIVE_OS_DISCONNECTNAMEDPIPE 140 11 0 0
PREEMPTIVE_OS_FLUSHFILEBUFFERS 32 10 4 0
PREEMPTIVE_OS_CRYPTIMPORTKEY 156 9 0 0
IO_AUDIT_MUTEX 23 2 0 1
DAC_INIT 1 1 1 0
PREEMPTIVE_FILESIZEGET 22 1 0 0
PREEMPTIVE_OS_AUTHZINITIALIZERESOURCEMANAGER 4 0 0 0


Сообщение было отредактировано: 25 авг 11, 11:42
25 авг 11, 11:36    [11176405]     Ответить | Цитировать Сообщить модератору
 Re: Утечки памяти MS SQL 2008  [new]
Нектотам
Guest
J3utajisi,

Я могу ошибаться, но у вас с IO что-то очень странное:
  • Большие значения BACKUPBUFFER, PAGEIOLATCH_SH, PAGEIOLATCH_EX, BACKUPIO (если тупо поделить время ожидания на количество событий)
  • BACKUPBUFFER - вообще нетипичный тип ожидания, TRACEWRITE я тоже не встречал.
  • Ожидания блокировок мизерные, но обратите внимание на то, что ожидание CXPACKET относительно большие, скорее всего строятся неэффективные планы запросов.

    Дальше надо счетчики накопленные смотреть.
  • 25 авг 11, 14:06    [11178093]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Нектотам
    J3utajisi,

    Я могу ошибаться, но у вас с IO что-то очень странное:
  • Большие значения BACKUPBUFFER, PAGEIOLATCH_SH, PAGEIOLATCH_EX, BACKUPIO (если тупо поделить время ожидания на количество событий)
  • BACKUPBUFFER - вообще нетипичный тип ожидания, TRACEWRITE я тоже не встречал.
  • Ожидания блокировок мизерные, но обратите внимание на то, что ожидание CXPACKET относительно большие, скорее всего строятся неэффективные планы запросов.

    Дальше надо счетчики накопленные смотреть.


  • Вот накопленные счетчики http://depositfiles.com/files/og3nhlkgv
    1 сен 11, 08:02    [11209929]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    Нектотам,
    >>TRACEWRITE я тоже не встречал.

    Возможно запущен профайлер, который пишет данные на очень медленный диск
    1 сен 11, 08:46    [11209976]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    Нектотам,
    >>TRACEWRITE я тоже не встречал.

    Возможно запущен профайлер, который пишет данные на очень медленный диск


    Да, профайлер запускаю на весь день, чтобы выявить тяжелые запросы для дальнейшей оптимизации.
    1 сен 11, 10:17    [11210293]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 31498
    J3utajisi
    Критик
    Нектотам,
    >>TRACEWRITE я тоже не встречал.

    Возможно запущен профайлер, который пишет данные на очень медленный диск


    Да, профайлер запускаю на весь день, чтобы выявить тяжелые запросы для дальнейшей оптимизации.
    А не ставите фильтр на тяжёлые запросы?

    Например, по CPU или Duration

    А то без фильтра профайлер может немало ресурсов потреблять...
    1 сен 11, 10:23    [11210335]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

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

    Ставлю >2 мс, т.к. есть запросы которые тупо в цикле могут вызываться, их тоже нужно выявить и переделать. Примерно 40 000 запросов за день отлавливает.
    1 сен 11, 10:42    [11210461]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Сегодня не было нагрузки на сервер, вот что выдает select * from sys.dm_os_wait_stats order by wait_time_ms desc
    wait_type waiting_tasks_count wait_time_ms max_wait_time_ms signal_wait_time_ms
    LAZYWRITER_SLEEP 1623286 947268878 41824161 14080
    REQUEST_FOR_DEADLOCK_SEARCH 10938 54764104 5016 54764104
    SQLTRACE_INCREMENTAL_FLUSH_SLEEP 13660 54759378 4030 37
    LOGMGR_QUEUE 144425 54747688 9540053 8505
    XE_TIMER_EVENT 1826 54745243 30013 54744673
    FT_IFTS_SCHEDULER_IDLE_WAIT 906 54310389 60013 22
    CHECKPOINT_QUEUE 524 53365510 7787283 43
    SLEEP_TASK 666726 27386330 1039 2592
    BROKER_TO_FLUSH 26598 27382801 1038 174
    XE_DISPATCHER_WAIT 3 23591205 23561191 0
    OLEDB 111785 9248787 60023 0
    TRACEWRITE 12314 9248449 2015 602
    BROKER_EVENTHANDLER 9 3714334 1822256 0
    BROKER_TASK_STOP 376 1911916 10016 32
    CXPACKET 285764 1251402 24859 29940
    PAGEIOLATCH_SH 38522 996651 1681 2367
    BROKER_RECEIVE_WAITFOR 2 600009 599890 0
    LATCH_EX 313136 348732 335 18063
    WRITELOG 144107 291683 1277 4812
    BACKUPBUFFER 23522 197695 1897 498
    ASYNC_IO_COMPLETION 10 197042 172535 0
    BACKUPIO 8918 189495 1900 26
    PAGEIOLATCH_EX 6012 135885 1216 335
    ASYNC_NETWORK_IO 90048 78275 369 4625
    IO_COMPLETION 3446 46620 605 10
    SLEEP_BPOOL_FLUSH 5312 25022 45 261
    CLR_AUTO_EVENT 9 23196 10189 0
    PAGEIOLATCH_UP 376 10977 1281 2
    LATCH_SH 150 5677 114 7
    SLEEP_DBSTARTUP 52 5557 115 0
    CMEMTHREAD 133820 4411 6 4090
    WRITE_COMPLETION 207 2810 335 0
    PREEMPTIVE_OS_FILEOPS 181 2269 259 0
    SOS_SCHEDULER_YIELD 187527 2126 8 1962
    PAGELATCH_UP 2372 2055 106 40
    BACKUPTHREAD 61 1669 919 1
    CXROWSET_SYNC 4255 1435 6 180
    SLEEP_SYSTEMTASK 1 1356 1356 0
    CHKPT 1 1356 1356 0
    PREEMPTIVE_OS_AUTHENTICATIONOPS 5015 1260 1 0
    PREEMPTIVE_OS_WRITEFILEGATHER 39 993 155 0
    PAGELATCH_SH 7371 991 73 69
    PREEMPTIVE_OS_CREATEFILE 103 677 127 0
    LCK_M_S 3 666 474 0
    MSQL_XP 204 627 252 0
    PREEMPTIVE_OS_GETPROCADDRESS 204 608 252 0
    PREEMPTIVE_OS_LIBRARYOPS 1300 602 393 0
    PREEMPTIVE_OS_LOOKUPACCOUNTSID 999 467 5 0
    PREEMPTIVE_OS_QUERYREGISTRY 911 450 0 0
    SQLTRACE_FILE_WRITE_IO_COMPLETION 42 440 46 0
    PREEMPTIVE_OS_GENERICOPS 27 434 268 0
    PREEMPTIVE_OS_AUTHORIZATIONOPS 1200 357 105 0
    FT_IFTSHC_MUTEX 1 352 352 0
    PREEMPTIVE_OS_CRYPTIMPORTKEY 341 343 1 0
    LCK_M_X 8 312 102 0
    PAGELATCH_EX 9098 286 54 32
    PREEMPTIVE_OS_FLUSHFILEBUFFERS 21 273 72 0
    PREEMPTIVE_OS_PIPEOPS 1 269 269 0
    LOGBUFFER 63 264 34 4
    EXECSYNC 4852 245 41 46
    PREEMPTIVE_OS_AUTHZINITIALIZECONTEXTFROMSID 3 234 114 0
    PREEMPTIVE_OS_DELETESECURITYCONTEXT 928 215 0 0
    SQLTRACE_FILE_BUFFER 10 124 35 0
    PREEMPTIVE_OS_WAITFORSINGLEOBJECT 773 91 0 0
    IMPPROV_IOWAIT 44 90 12 0
    PREEMPTIVE_OS_SETFILEVALIDDATA 18 56 23 0
    PREEMPTIVE_OS_DECRYPTMESSAGE 976 41 0 0
    PREEMPTIVE_OS_COMOPS 1 36 36 0
    PREEMPTIVE_OS_REPORTEVENT 118 35 0 0
    PREEMPTIVE_OS_REVERTTOSELF 946 26 0 0
    PREEMPTIVE_OS_DISCONNECTNAMEDPIPE 155 21 0 0
    PREEMPTIVE_OS_GETFILEATTRIBUTES 84 18 6 0
    PREEMPTIVE_OS_LOADLIBRARY 5 14 6 0
    PREEMPTIVE_OS_DOMAINSERVICESOPS 1 13 13 0
    PREEMPTIVE_OS_CRYPTACQUIRECONTEXT 99 13 0 0
    LCK_M_SCH_M 4 11 11 0
    THREADPOOL 13 8 3 0
    PREEMPTIVE_OS_GETDISKFREESPACE 47 7 0 0
    SLEEP_DCOMSTARTUP 1 5 5 0
    LCK_M_U 3 4 4 0
    PREEMPTIVE_OS_CRYPTOPS 1 4 4 0
    PREEMPTIVE_OS_GETVOLUMEPATHNAME 8 3 0 0
    PREEMPTIVE_FILESIZEGET 24 1 0 0
    CLR_MANUAL_EVENT 2 1 1 0
    PREEMPTIVE_OS_ENCRYPTMESSAGE 41 1 0 0
    DAC_INIT 1 1 1 0
    ASSEMBLY_LOAD 0 0 0 0
    VIA_ACCEPT 0 0 0 0
    CHECK_PRINT_RECORD 0 0 0 0
    INTERNAL_TESTING 0 0 0 0
    FS_GARBAGE_COLLECTOR_SHUTDOWN 0 0 0 0
    FSAGENT 0 0 0 0
    ABR 0 0 0 0
    WCC 0 0 0 0
    DUMPTRIGGER 0 0 0 0
    QUERY_WAIT_ERRHDL_SERVICE 0 0 0 0
    QUERY_ERRHDL_SERVICE_DONE 0 0 0 0
    TIMEPRIV_TIMEPERIOD 0 0 0 0
    DISPATCHER_QUEUE_SEMAPHORE 0 0 0 0
    XE_MODULEMGR_SYNC 0 0 0 0
    XE_STM_CREATE 0 0 0 0
    XE_SESSION_SYNC 0 0 0 0
    XE_SESSION_CREATE_SYNC 0 0 0 0
    XE_SERVICES_MUTEX 0 0 0 0
    XE_SERVICES_RWLOCK 0 0 0 0
    XE_SERVICES_EVENTMANUAL 0 0 0 0
    XE_OLS_LOCK 0 0 0 0
    SOS_DISPATCHER_MUTEX 0 0 0 0
    XE_BUFFERMGR_FREEBUF_EVENT 0 0 0 0
    XE_BUFFERMGR_ALLPROCESSED_EVENT 0 0 0 0
    XE_DISPATCHER_JOIN 0 0 0 0
    XE_TIMER_MUTEX 0 0 0 0
    SNI_TASK_COMPLETION 1 0 0 0
    SNI_LISTENER_ACCESS 0 0 0 0
    EXECUTION_PIPE_EVENT_INTERNAL 0 0 0 0
    CLR_MEMORY_SPY 0 0 0 0
    CLRHOST_STATE_ACCESS 0 0 0 0
    XE_DISPATCHER_CONFIG_SESSION_LIST 0 0 0 0
    XE_SESSION_FLUSH 0 0 0 0
    XE_PACKAGE_LOCK_BACKOFF 0 0 0 0
    NODE_CACHE_MUTEX 0 0 0 0
    RG_RECONFIG 0 0 0 0
    RESMGR_THROTTLED 0 0 0 0
    SOS_MEMORY_USAGE_ADJUSTMENT 0 0 0 0
    SECURITY_MUTEX 0 0 0 0
    FS_HEADER_RWLOCK 0 0 0 0
    FS_LOGTRUNC_RWLOCK 0 0 0 0
    FS_FC_RWLOCK 0 0 0 0
    FSTR_CONFIG_RWLOCK 0 0 0 0
    FSTR_CONFIG_MUTEX 0 0 0 0
    FSA_FORCE_OWN_XACT 0 0 0 0
    COMMIT_TABLE 0 0 0 0
    PREEMPTIVE_COM_COCREATEINSTANCE 0 0 0 0
    PREEMPTIVE_COM_COGETCLASSOBJECT 0 0 0 0
    PREEMPTIVE_COM_CREATEACCESSOR 0 0 0 0
    PREEMPTIVE_COM_DELETEROWS 0 0 0 0
    PREEMPTIVE_COM_GETCOMMANDTEXT 0 0 0 0
    PREEMPTIVE_COM_GETDATA 0 0 0 0
    PREEMPTIVE_COM_GETNEXTROWS 0 0 0 0
    PREEMPTIVE_COM_GETRESULT 0 0 0 0
    PREEMPTIVE_COM_GETROWSBYBOOKMARK 0 0 0 0
    PREEMPTIVE_COM_LBFLUSH 0 0 0 0
    PREEMPTIVE_COM_LBLOCKREGION 0 0 0 0
    PREEMPTIVE_COM_LBREADAT 0 0 0 0
    PREEMPTIVE_COM_LBSETSIZE 0 0 0 0
    PREEMPTIVE_COM_LBSTAT 0 0 0 0
    PREEMPTIVE_COM_LBUNLOCKREGION 0 0 0 0
    PREEMPTIVE_COM_LBWRITEAT 0 0 0 0
    PREEMPTIVE_COM_QUERYINTERFACE 0 0 0 0
    PREEMPTIVE_COM_RELEASE 0 0 0 0
    PREEMPTIVE_COM_RELEASEACCESSOR 0 0 0 0
    PREEMPTIVE_COM_RELEASEROWS 0 0 0 0
    PREEMPTIVE_COM_RELEASESESSION 0 0 0 0
    PREEMPTIVE_COM_RESTARTPOSITION 0 0 0 0
    PREEMPTIVE_COM_SEQSTRMREAD 0 0 0 0
    PREEMPTIVE_COM_SEQSTRMREADANDWRITE 0 0 0 0
    PREEMPTIVE_COM_SETDATAFAILURE 0 0 0 0
    PREEMPTIVE_COM_SETPARAMETERINFO 0 0 0 0
    PREEMPTIVE_COM_SETPARAMETERPROPERTIES 0 0 0 0
    PREEMPTIVE_COM_STRMLOCKREGION 0 0 0 0
    PREEMPTIVE_COM_STRMSEEKANDREAD 0 0 0 0
    PREEMPTIVE_COM_STRMSEEKANDWRITE 0 0 0 0
    PREEMPTIVE_COM_STRMSETSIZE 0 0 0 0
    PREEMPTIVE_COM_STRMSTAT 0 0 0 0
    PREEMPTIVE_COM_STRMUNLOCKREGION 0 0 0 0
    CLR_MONITOR 0 0 0 0
    CLR_RWLOCK_READER 0 0 0 0
    CLR_RWLOCK_WRITER 0 0 0 0
    SQLCLR_QUANTUM_PUNISHMENT 0 0 0 0
    SQLCLR_APPDOMAIN 0 0 0 0
    SQLCLR_ASSEMBLY 1 0 0 0
    KTM_ENLISTMENT 0 0 0 0
    KTM_RECOVERY_RESOLUTION 0 0 0 0
    KTM_RECOVERY_MANAGER 0 0 0 0
    SQLCLR_DEADLOCK_DETECTION 0 0 0 0
    QPJOB_WAITFOR_ABORT 0 0 0 0
    QPJOB_KILL 0 0 0 0
    BAD_PAGE_PROCESS 0 0 0 0
    BACKUP_OPERATOR 0 0 0 0
    PRINT_ROLLBACK_PROGRESS 0 0 0 0
    ENABLE_VERSIONING 0 0 0 0
    DISABLE_VERSIONING 0 0 0 0
    REQUEST_DISPENSER_PAUSE 0 0 0 0
    DROPTEMP 0 0 0 0
    FT_RESTART_CRAWL 0 0 0 0
    LOGMGR_RESERVE_APPEND 0 0 0 0
    LOGMGR_FLUSH 0 0 0 0
    XACT_OWN_TRANSACTION 0 0 0 0
    XACT_RECLAIM_SESSION 0 0 0 0
    DTC_WAITFOR_OUTCOME 0 0 0 0
    DTC_RESOLVE 0 0 0 0
    SEC_DROP_TEMP_KEY 0 0 0 0
    SRVPROC_SHUTDOWN 0 0 0 0
    BROKER_INIT 0 0 0 0
    BROKER_CONNECTION_RECEIVE_TASK 0 0 0 0
    NET_WAITFOR_PACKET 0 0 0 0
    DTC_ABORT_REQUEST 0 0 0 0
    DTC_TMDOWN_REQUEST 0 0 0 0
    RECOVER_CHANGEDB 0 0 0 0
    WORKTBL_DROP 0 0 0 0
    SNI_HTTP_WAITFOR_0_DISCON 0 0 0 0
    UTIL_PAGE_ALLOC 0 0 0 0
    SERVER_IDLE_CHECK 0 0 0 0
    DEADLOCK_ENUM_MUTEX 0 0 0 0
    VIEW_DEFINITION_MUTEX 0 0 0 0
    QUERY_NOTIFICATION_MGR_MUTEX 0 0 0 0
    QUERY_NOTIFICATION_TABLE_MGR_MUTEX 0 0 0 0
    QUERY_NOTIFICATION_SUBSCRIPTION_MUTEX 0 0 0 0
    QUERY_NOTIFICATION_UNITTEST_MUTEX 0 0 0 0
    RESOURCE_SEMAPHORE_MUTEX 0 0 0 0
    IO_AUDIT_MUTEX 2 0 0 0
    BUILTIN_HASHKEY_MUTEX 0 0 0 0
    SOS_PROCESS_AFFINITY_MUTEX 0 0 0 0
    MSQL_XACT_MGR_MUTEX 0 0 0 0
    MSQL_XACT_MUTEX 0 0 0 0
    QRY_MEM_GRANT_INFO_MUTEX 0 0 0 0
    SNI_CRITICAL_SECTION 0 0 0 0
    SOS_STACKSTORE_INIT_MUTEX 0 0 0 0
    SOS_SYNC_TASK_ENQUEUE_EVENT 1 0 0 0
    SOS_OBJECT_STORE_DESTROY_MUTEX 0 0 0 0
    EE_PMOLOCK 0 0 0 0
    QUERY_OPTIMIZER_PRINT_MUTEX 0 0 0 0
    DLL_LOADING_MUTEX 0 0 0 0
    RESOURCE_SEMAPHORE_QUERY_COMPILE 0 0 0 0
    RESOURCE_SEMAPHORE_SMALL_QUERY 0 0 0 0
    BROKER_ENDPOINT_STATE_MUTEX 0 0 0 0
    QUERY_EXECUTION_INDEX_SORT_EVENT_OPEN 0 0 0 0
    ERROR_REPORTING_MANAGER 0 0 0 0
    EE_SPECPROC_MAP_INIT 0 0 0 0
    FULLTEXT GATHERER 0 0 0 0
    SEQUENTIAL_GUID 0 0 0 0
    MISCELLANEOUS 0 0 0 0
    LCK_M_SCH_S 0 0 0 0
    LATCH_DT 0 0 0 0
    PAGELATCH_NL 0 0 0 0
    PAGELATCH_KP 0 0 0 0
    LATCH_UP 0 0 0 0
    PAGELATCH_DT 0 0 0 0
    PAGEIOLATCH_NL 0 0 0 0
    PAGEIOLATCH_KP 0 0 0 0
    LCK_M_IS 0 0 0 0
    LCK_M_IU 0 0 0 0
    LCK_M_IX 0 0 0 0
    LCK_M_SIU 0 0 0 0
    LCK_M_SIX 0 0 0 0
    LCK_M_UIX 0 0 0 0
    LCK_M_BU 0 0 0 0
    LCK_M_RS_S 0 0 0 0
    LCK_M_RS_U 0 0 0 0
    LCK_M_RIn_NL 0 0 0 0
    LCK_M_RIn_S 0 0 0 0
    LCK_M_RIn_U 0 0 0 0
    LCK_M_RIn_X 0 0 0 0
    LCK_M_RX_S 0 0 0 0
    LCK_M_RX_U 0 0 0 0
    LCK_M_RX_X 0 0 0 0
    LATCH_NL 0 0 0 0
    LATCH_KP 0 0 0 0
    DEBUG 0 0 0 0
    REPLICA_WRITES 0 0 0 0
    SLEEP_TEMPDBSTARTUP 0 0 0 0
    SOS_VIRTUALMEMORY_LOW 0 0 0 0
    SOS_RESERVEDMEMBLOCKLIST 7 0 0 0
    SOS_LOCALALLOCATORLIST 2 0 0 0
    SOS_CALLBACK_REMOVAL 0 0 0 0
    ONDEMAND_TASK_QUEUE 1 0 0 0
    RESOURCE_SEMAPHORE 0 0 0 0
    DTC 0 0 0 0
    FAILPOINT 0 0 0 0
    RESOURCE_QUEUE 0 0 0 0
    ASYNC_DISKPOOL_LOCK 0 0 0 0
    PAGEIOLATCH_DT 0 0 0 0
    TRAN_MARKLATCH_NL 0 0 0 0
    TRAN_MARKLATCH_KP 0 0 0 0
    TRAN_MARKLATCH_SH 0 0 0 0
    TRAN_MARKLATCH_UP 0 0 0 0
    TRAN_MARKLATCH_EX 0 0 0 0
    TRAN_MARKLATCH_DT 0 0 0 0
    DBMIRRORING_CMD 0 0 0 0
    WAIT_FOR_RESULTS 0 0 0 0
    PARALLEL_BACKUP_QUEUE 0 0 0 0
    DUMP_LOG_COORDINATOR_QUEUE 0 0 0 0
    LOWFAIL_MEMMGR_QUEUE 0 0 0 0
    BACKUP 0 0 0 0
    DBMIRROR_DBM_MUTEX 0 0 0 0
    DBMIRROR_DBM_EVENT 0 0 0 0
    DBMIRROR_SEND 0 0 0 0
    DBMIRROR_EVENTS_QUEUE 0 0 0 0
    DBMIRROR_WORKER_QUEUE 0 0 0 0
    HTTP_START 0 0 0 0
    HTTP_ENUMERATION 0 0 0 0
    SOAP_READ 0 0 0 0
    SOAP_WRITE 0 0 0 0
    DUMP_LOG_COORDINATOR 0 0 0 0
    DISKIO_SUSPEND 0 0 0 0
    DEADLOCK_TASK_SEARCH 0 0 0 0
    REPL_SCHEMA_ACCESS 0 0 0 0
    REPL_CACHE_ACCESS 0 0 0 0
    KSOURCE_WAKEUP 1 0 0 0
    SQLSORT_SORTMUTEX 0 0 0 0
    SQLSORT_NORMMUTEX 0 0 0 0
    SQLTRACE_WAIT_ENTRIES 0 0 0 0
    SQLTRACE_SHUTDOWN 0 0 0 0
    QUERY_TRACEOUT 0 0 0 0
    DTC_STATE 0 0 0 0
    BROKER_TRANSMITTER 2 0 0 0
    BROKER_SERVICE 0 0 0 0
    BROKER_SHUTDOWN 0 0 0 0
    BROKER_MASTERSTART 1 0 0 0
    BROKER_REGISTERALLENDPOINTS 0 0 0 0
    FCB_REPLICA_WRITE 0 0 0 0
    FCB_REPLICA_READ 0 0 0 0
    EXCHANGE 0 0 0 0
    EC 0 0 0 0
    TEMPOBJ 0 0 0 0
    XACTLOCKINFO 0 0 0 0
    LOGMGR 0 0 0 0
    SOSHOST_INTERNAL 0 0 0 0
    SOSHOST_SLEEP 0 0 0 0
    SOSHOST_WAITFORDONE 0 0 0 0
    SOSHOST_MUTEX 0 0 0 0
    SOSHOST_EVENT 0 0 0 0
    SOSHOST_SEMAPHORE 0 0 0 0
    SOSHOST_RWLOCK 0 0 0 0
    SOSHOST_TRACELOCK 0 0 0 0
    TRANSACTION_MUTEX 0 0 0 0
    SLEEP_MSDBSTARTUP 0 0 0 0
    MSSEARCH 0 0 0 0
    XACTWORKSPACE_MUTEX 0 0 0 0
    MSQL_DQ 0 0 0 0
    SHUTDOWN 0 0 0 0
    WAITFOR 0 0 0 0
    WAITSTAT_MUTEX 0 0 0 0
    WAITFOR_TASKSHUTDOWN 0 0 0 0
    GUARDIAN 0 0 0 0
    CLR_TASK_START 0 0 0 0
    CLR_JOIN 0 0 0 0
    CLR_CRST 0 0 0 0
    CLR_SEMAPHORE 0 0 0 0
    PREEMPTIVE_OS_FREECREDENTIALSHANDLE 0 0 0 0
    PREEMPTIVE_OS_INITIALIZESECURITYCONTEXT 0 0 0 0
    PREEMPTIVE_OS_LOGONUSER 0 0 0 0
    PREEMPTIVE_OS_QUERYSECURITYCONTEXTTOKEN 0 0 0 0
    PREEMPTIVE_OS_VERIFYSIGNATURE 0 0 0 0
    PREEMPTIVE_OS_AUTHZGETINFORMATIONFROMCONTEXT 6 0 0 0
    XE_TIMER_TASK_DONE 0 0 0 0
    PREEMPTIVE_OS_ACCEPTSECURITYCONTEXT 0 0 0 0
    PREEMPTIVE_OS_ACQUIRECREDENTIALSHANDLE 0 0 0 0
    PREEMPTIVE_OS_COMPLETEAUTHTOKEN 0 0 0 0
    PREEMPTIVE_OS_AUTHZINITIALIZERESOURCEMANAGER 3 0 0 0
    PREEMPTIVE_OS_SETNAMEDSECURITYINFO 0 0 0 0
    PREEMPTIVE_OS_CLUSTEROPS 0 0 0 0
    PREEMPTIVE_CLUSAPI_CLUSTERRESOURCECONTROL 0 0 0 0
    PREEMPTIVE_OS_DEVICEOPS 0 0 0 0
    PREEMPTIVE_OS_RSFXDEVICEOPS 0 0 0 0
    PREEMPTIVE_OS_DIRSVC_NETWORKOPS 0 0 0 0
    PREEMPTIVE_OS_DSGETDCNAME 0 0 0 0
    PREEMPTIVE_OS_NETGROUPGETUSERS 0 0 0 0
    PREEMPTIVE_OS_NETLOCALGROUPGETMEMBERS 0 0 0 0
    PREEMPTIVE_OS_NETUSERGETGROUPS 0 0 0 0
    PREEMPTIVE_OS_NETUSERGETLOCALGROUPS 0 0 0 0
    PREEMPTIVE_OS_NETUSERMODALSGET 0 0 0 0
    PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICY 0 0 0 0
    PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICYFREE 0 0 0 0
    PREEMPTIVE_OS_GETCOMPRESSEDFILESIZE 0 0 0 0
    PREEMPTIVE_OS_GETVOLUMENAMEFORVOLUMEMOUNTPOINT 1 0 0 0
    PREEMPTIVE_OS_MOVEFILE 0 0 0 0
    PREEMPTIVE_OS_OPENDIRECTORY 0 0 0 0
    PREEMPTIVE_OS_REMOVEDIRECTORY 0 0 0 0
    PREEMPTIVE_OS_SETENDOFFILE 0 0 0 0
    PREEMPTIVE_OS_SETFILEPOINTER 0 0 0 0
    PREEMPTIVE_OS_MESSAGEQUEUEOPS 0 0 0 0
    PREEMPTIVE_ODBCOPS 0 0 0 0
    PREEMPTIVE_OLEDBOPS 9 0 0 0
    PREEMPTIVE_OLEDB_ABORTTRAN 0 0 0 0
    PREEMPTIVE_OLEDB_ABORTORCOMMITTRAN 0 0 0 0
    PREEMPTIVE_OLEDB_GETDATASOURCE 0 0 0 0
    PREEMPTIVE_OLEDB_GETLITERALINFO 0 0 0 0
    PREEMPTIVE_OLEDB_GETPROPERTIES 0 0 0 0
    PREEMPTIVE_OLEDB_GETPROPERTYINFO 0 0 0 0
    PREEMPTIVE_OLEDB_GETSCHEMALOCK 0 0 0 0
    PREEMPTIVE_OLEDB_JOINTRANSACTION 0 0 0 0
    PREEMPTIVE_OLEDB_RELEASE 0 0 0 0
    PREEMPTIVE_OLEDB_SETPROPERTIES 0 0 0 0
    PREEMPTIVE_OS_DTCOPS 0 0 0 0
    PREEMPTIVE_DTC_ABORT 0 0 0 0
    PREEMPTIVE_DTC_ABORTREQUESTDONE 0 0 0 0
    PREEMPTIVE_DTC_BEGINTRANSACTION 0 0 0 0
    PREEMPTIVE_DTC_COMMITREQUESTDONE 0 0 0 0
    PREEMPTIVE_DTC_ENLIST 0 0 0 0
    PREEMPTIVE_DTC_PREPAREREQUESTDONE 0 0 0 0
    PREEMPTIVE_OS_DELETEFILE 3 0 0 0
    PREEMPTIVE_OS_DEVICEIOCONTROL 0 0 0 0
    PREEMPTIVE_OS_FINDFILE 0 0 0 0
    PREEMPTIVE_OS_CLOSEHANDLE 0 0 0 0
    PREEMPTIVE_OS_COPYFILE 0 0 0 0
    PREEMPTIVE_OS_CREATEDIRECTORY 0 0 0 0
    PREEMPTIVE_OS_GETFILESIZE 0 0 0 0
    PREEMPTIVE_OS_GETLONGPATHNAME 0 0 0 0
    PREEMPTIVE_OS_WRITEFILE 0 0 0 0
    PREEMPTIVE_OS_BACKUPREAD 0 0 0 0
    PREEMPTIVE_OS_FREELIBRARY 0 0 0 0
    PREEMPTIVE_OS_PROCESSOPS 0 0 0 0
    PREEMPTIVE_OS_SECURITYOPS 0 0 0 0
    PREEMPTIVE_OS_SERVICEOPS 0 0 0 0
    PREEMPTIVE_OS_SQLCLROPS 0 0 0 0
    PREEMPTIVE_OS_WINSOCKOPS 0 0 0 0
    PREEMPTIVE_OS_GETADDRINFO 0 0 0 0
    PREEMPTIVE_OS_WSASETLASTERROR 0 0 0 0
    PREEMPTIVE_OS_FORMATMESSAGE 0 0 0 0
    FT_IFTSISM_MUTEX 0 0 0 0
    FT_IFTS_RWLOCK 0 0 0 0
    FT_COMPROWSET_RWLOCK 0 0 0 0
    FT_MASTER_MERGE 0 0 0 0
    TRACE_EVTNOTIF 0 0 0 0
    SOS_SMALL_PAGE_ALLOC 0 0 0 0
    METADATA_LAZYCACHE_RWLOCK 0 0 0 0
    IOAFF_RANGE_QUEUE 0 0 0 0
    AUDIT_XE_SESSION_MGR 0 0 0 0
    AUDIT_ON_DEMAND_TARGET_LOCK 0 0 0 0
    PREEMPTIVE_AUDIT_ACCESS_EVENTLOG 0 0 0 0
    PREEMPTIVE_AUDIT_ACCESS_SECLOG 0 0 0 0
    AUDIT_LOGINCACHE_LOCK 0 0 0 0
    AUDIT_GROUPCACHE_LOCK 0 0 0 0
    FT_METADATA_MUTEX 0 0 0 0
    PREEMPTIVE_CLOSEBACKUPMEDIA 0 0 0 0
    PREEMPTIVE_CLOSEBACKUPTAPE 0 0 0 0
    PREEMPTIVE_CLOSEBACKUPVDIDEVICE 0 0 0 0
    PREEMPTIVE_OS_VSSOPS 0 0 0 0
    PREEMPTIVE_VSS_CREATESNAPSHOT 0 0 0 0
    PREEMPTIVE_VSS_CREATEVOLUMESNAPSHOT 0 0 0 0
    PREEMPTIVE_DFSADDLINK 0 0 0 0
    PREEMPTIVE_DFSLINKEXISTCHECK 0 0 0 0
    PREEMPTIVE_DFSLINKHEALTHCHECK 0 0 0 0
    PREEMPTIVE_DFSREMOVELINK 0 0 0 0
    PREEMPTIVE_DFSREMOVEROOT 0 0 0 0
    PREEMPTIVE_DFSROOTFOLDERCHECK 0 0 0 0
    PREEMPTIVE_DFSROOTINIT 0 0 0 0
    PREEMPTIVE_DFSROOTSHARECHECK 0 0 0 0
    PREEMPTIVE_OLE_UNINIT 0 0 0 0
    PREEMPTIVE_FSAOLEDB_ABORTTRANSACTION 0 0 0 0
    PREEMPTIVE_FSAOLEDB_COMMITTRANSACTION 0 0 0 0
    PREEMPTIVE_FSAOLEDB_STARTTRANSACTION 0 0 0 0
    PREEMPTIVE_FSRECOVER_UNCONDITIONALUNDO 0 0 0 0
    PREEMPTIVE_SERVER_STARTUP 0 0 0 0
    PREEMPTIVE_SHAREDMEM_GETDATA 0 0 0 0
    PREEMPTIVE_CONSOLEWRITE 0 0 0 0
    PREEMPTIVE_OS_SQMLAUNCH 2 0 0 0
    PREEMPTIVE_TESTING 0 0 0 0
    PREEMPTIVE_SOSHOST 0 0 0 0
    PREEMPTIVE_SOSTESTING 0 0 0 0
    PREEMPTIVE_XETESTING 0 0 0 0
    PREEMPTIVE_SB_STOPENDPOINT 0 0 0 0
    PREEMPTIVE_STARTRM 0 0 0 0
    PREEMPTIVE_GETRMINFO 0 0 0 0
    PREEMPTIVE_SETRMINFO 0 0 0 0
    PREEMPTIVE_ROLLFORWARDREDO 0 0 0 0
    PREEMPTIVE_ROLLFORWARDUNDO 0 0 0 0
    PREEMPTIVE_RESIZELOG 0 0 0 0
    PREEMPTIVE_REENLIST 0 0 0 0
    PREEMPTIVE_TRANSIMPORT 0 0 0 0
    PREEMPTIVE_UNMARSHALPROPAGATIONTOKEN 0 0 0 0
    PREEMPTIVE_CREATEPARAM 0 0 0 0
    PREEMPTIVE_STREAMFCB_RECOVER 0 0 0 0
    PREEMPTIVE_STREAMFCB_CHECKPOINT 0 0 0 0
    PREEMPTIVE_XE_CALLBACKEXECUTE 8 0 0 0
    PREEMPTIVE_XE_DISPATCHER 1 0 0 0
    PREEMPTIVE_XE_ENGINEINIT 0 0 0 0
    PREEMPTIVE_XE_GETTARGETSTATE 0 0 0 0
    PREEMPTIVE_XE_SESSIONCOMMIT 1 0 0 0
    PREEMPTIVE_XE_TARGETFINALIZE 0 0 0 0
    PREEMPTIVE_XE_TARGETINIT 1 0 0 0
    PREEMPTIVE_XE_TIMERRUN 1 0 0 0
    PREEMPTIVE_SNIOPEN 0 0 0 0
    PREEMPTIVE_DEBUG 0 0 0 0
    PREEMPTIVE_MSS_RELEASE 0 0 0 0
    PREEMPTIVE_LOCKMONITOR 1 0 0 0
    PREEMPTIVE_STRESSDRIVER 0 0 0 0
    CLEAR_DB 0 0 0 0
    PREEMPTIVE_ABR 0 0 0 0
    LOGGENERATION 0 0 0 0
    IO_RETRY 0 0 0 0
    SQLTRACE_FILE_READ_IO_COMPLETION 0 0 0 0
    SQLTRACE_PENDING_BUFFER_WRITERS 0 0 0 0
    PREEMPTIVE_OS_PDH_WMI_INIT 0 0 0 0
    REPL_HISTORYCACHE_ACCESS 0 0 0 0
    REPL_TRANHASHTABLE_ACCESS 0 0 0 0
    PERFORMANCE_COUNTERS_RWLOCK 19 0 0 0
    SERVER_RECONFIGURE 0 0 0 0
    CHANGE_TRACKING_WAITFORCHANGES 0 0 0 0
    1 сен 11, 10:50    [11210547]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    Выполните
    SELECT TOP 10
     [Wait type] = wait_type,
     [Wait time (s)] = wait_time_ms / 1000,
     [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 
                   / SUM(wait_time_ms) OVER())
      FROM sys.dm_os_wait_stats
      WHERE wait_type NOT LIKE '%SLEEP%' 
      ORDER BY wait_time_ms DESC;

    Результат в виде картинки вставьте, так будет удобнее
    1 сен 11, 10:53    [11210569]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    Еще, логин сервера имеет право лочить страницы в памяти?
    1 сен 11, 10:55    [11210587]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9442
    Критик
    Еще, логин сервера имеет право лочить страницы в памяти?
    Привилегия Lock Pages in Memory нужна для использования AWE, а у ТС сиквел х64.
    1 сен 11, 11:19    [11210822]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    komrad
    Member

    Откуда:
    Сообщений: 5300
    invm
    Критик
    Еще, логин сервера имеет право лочить страницы в памяти?
    Привилегия Lock Pages in Memory нужна для использования AWE, а у ТС сиквел х64.


    она нужна для того, чтобы винда в своп не выкидывала
    1 сен 11, 11:23    [11210856]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    Еще, логин сервера имеет право лочить страницы в памяти?

    А где это проверить?

    Да и еще изменил следующие настройки:
    AWE - вкл
    min memory server - 8192
    max memory server - 23360
    автом. устанавливать маску схожести ЦП - вкл
    привязка ввода-вывода - поставил галочки у всех
    поддерживать приоретет SQL SERVER - вкл
    1 сен 11, 11:34    [11210993]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    Выполните
    SELECT TOP 10
     [Wait type] = wait_type,
     [Wait time (s)] = wait_time_ms / 1000,
     [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 
                   / SUM(wait_time_ms) OVER())
      FROM sys.dm_os_wait_stats
      WHERE wait_type NOT LIKE '%SLEEP%' 
      ORDER BY wait_time_ms DESC;

    Результат в виде картинки вставьте, так будет удобнее

    http://depositfiles.com/files/sumwzg2by
    1 сен 11, 11:40    [11211052]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    J3utajisi,

    на форуме есть функциональность вставки картинок...
    1 сен 11, 11:45    [11211110]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Почитал многии статьи и формумы, поигрался с настройками, вобщем после того как установил пределы min memory в 8192, sql переодически начал освобождать занимаемую буффером память. Два дня вот уже работает ровно, но и нагрузки в эти дни не было. Только в выходные смогу нагрузить сервер.

    Но когда на сервере происходят массовые операции добавления - удаления - изменения данных производительность очень сильно падает.
    Модификация данных(обычные, самые простые запросы на удаление, обновление, вставку) происходится приложением в 4 потока с синхронизацией.
    Как только начинается эта загрузка пользователи начинают жаловаться.

    Скоро на сервер накинут еще 32 гига оперативы, не знаю поможет это или нет...
    1 сен 11, 11:50    [11211177]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

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


    К сообщению приложен файл. Размер - 24Kb
    1 сен 11, 11:52    [11211199]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9442
    komrad
    она нужна для того, чтобы винда в своп не выкидывала

    http://msdn.microsoft.com/en-us/library/ms190730.aspx
    The Windows policy Lock Pages in Memory option is disabled by default. This privilege must be enabled to configure Address Windowing Extensions (AWE). This policy determines which accounts can use a process to keep data in physical memory, preventing the system from paging the data to virtual memory on disk. On 32-bit operating systems, setting this privilege when not using AWE can significantly impair system performance. Locking pages in memory is not required on 64-bit operating systems.
    1 сен 11, 11:57    [11211270]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    komrad
    Member

    Откуда:
    Сообщений: 5300
    invm
    komrad
    она нужна для того, чтобы винда в своп не выкидывала

    http://msdn.microsoft.com/en-us/library/ms190730.aspx
    The Windows policy Lock Pages in Memory option is disabled by default. This privilege must be enabled to configure Address Windowing Extensions (AWE). This policy determines which accounts can use a process to keep data in physical memory, preventing the system from paging the data to virtual memory on disk. On 32-bit operating systems, setting this privilege when not using AWE can significantly impair system performance. Locking pages in memory is not required on 64-bit operating systems.


    спасибо
    1 сен 11, 12:00    [11211299]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi
    Но когда на сервере происходят массовые операции добавления - удаления - изменения данных производительность очень сильно падает.


    см.
    - протоколирование
    - обновление кучи индексов
    - дебильные триггеры с курсорами
    - длинные транзакции
    - неадекватные задачам уровни изоляции

    и как насчет проводить массовые операции в периоды минимальной активности пользователей?
    1 сен 11, 12:01    [11211310]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    >>3. Иногда происходят операции массовой обработки данных, которые происходят по 5-10 минут, но почему от них зависает сервер?!

    Я бы посмотрел в этот момент на блокировки.
    И, как уже говорили, все-таки установил бы обновления.
    1 сен 11, 12:06    [11211350]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi
    Но когда на сервере происходят массовые операции добавления - удаления - изменения данных производительность очень сильно падает.


    см.
    - протоколирование
    - обновление кучи индексов
    - дебильные триггеры с курсорами
    - длинные транзакции
    - неадекватные задачам уровни изоляции


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

    желтый триггер
    и как насчет проводить массовые операции в периоды минимальной активности пользователей

    Эти операции инициируют пользователи, по возможности делаются в не рабочее время.

    Мне нужно, чтобы все массовые операции выполнялись, но при этом обычный select мог выполнится в рамках 2 сек(требование руководства)...

    Я в администрировании не совсем разбираюсь... Может там жесткий диск медленный или tempdb нужно вынести на отдельный жесткий, много чего начитался, а какой прирост это может дать не представляю... Вот и обратился за помощью. Может статистика какая поможет определить что не в порядке.
    1 сен 11, 12:14    [11211420]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Гавриленко Сергей Алексеевич
    Member

    Откуда: Moscow
    Сообщений: 37077
    Так может сначала выяснить, чего ожидают запросы, которые выполняются дольше отведенных для этого двух секунд?
    1 сен 11, 12:16    [11211448]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    >>3. Иногда происходят операции массовой обработки данных, которые происходят по 5-10 минут, но почему от них зависает сервер?!

    Я бы посмотрел в этот момент на блокировки.
    И, как уже говорили, все-таки установил бы обновления.


    Каким инструментом лучше наблюдать за блокировками?

    Обновления были установлены вчера вечером.
    1 сен 11, 12:17    [11211454]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    А что выдаст это?
    -- i/o-нагрузка на файлы
    SELECT DB_NAME(saf.dbid) AS [База данных],
           saf.name AS [Логическое имя],
           vfs.BytesRead/1048576 AS [Прочитано (Мб)],
           vfs.BytesWritten/1048576 AS [Записано (Мб)],
           saf.filename AS [Путь к файлу]
      FROM master..sysaltfiles AS saf
      JOIN ::fn_virtualfilestats(NULL,NULL) AS vfs ON vfs.dbid = saf.dbid AND
                                                      vfs.fileid = saf.fileid AND
                                                      saf.dbid NOT IN (1,3,4)
      ORDER BY vfs.BytesRead/1048576 + BytesWritten/1048576 DESC

    >>Мне нужно, чтобы все массовые операции выполнялись, но при этом обычный select мог выполнится в рамках 2 сек(требование руководства)...

    Если бизнес-требования позволяют, рассмотрите возможность дабавки в select`ы подсказки nolock
    1 сен 11, 12:19    [11211480]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    sp_lock показывает блокировки в тукущий момент

    Или см столбец blocked (при "остановке работы")
    select *
      from sys.sysprocesses where spid > 50 and spid <> @@spid and status <> 'sleeping'
      order by spid, ecid
    1 сен 11, 12:21    [11211501]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi
    От транзаций никуда не денешься и они практически во всех запросах...

    Мне нужно, чтобы все массовые операции выполнялись, но при этом обычный select мог выполнится в рамках 2 сек(требование


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

    +покурите READ_COMMITTED_SNAPSHOT
    1 сен 11, 12:22    [11211513]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    А что выдаст это?
    -- i/o-нагрузка на файлы
    SELECT DB_NAME(saf.dbid) AS [База данных],
           saf.name AS [Логическое имя],
           vfs.BytesRead/1048576 AS [Прочитано (Мб)],
           vfs.BytesWritten/1048576 AS [Записано (Мб)],
           saf.filename AS [Путь к файлу]
      FROM master..sysaltfiles AS saf
      JOIN ::fn_virtualfilestats(NULL,NULL) AS vfs ON vfs.dbid = saf.dbid AND
                                                      vfs.fileid = saf.fileid AND
                                                      saf.dbid NOT IN (1,3,4)
      ORDER BY vfs.BytesRead/1048576 + BytesWritten/1048576 DESC
    1 сен 11, 12:24    [11211527]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    J3utajisi,

    К сообщению приложен файл. Размер - 59Kb
    1 сен 11, 12:24    [11211532]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    J3utajisi,

    Можно попробовать первую базу на картинке на более быстрый диск переместить.
    Но с другой стороны у вас и так маленькие задержки дисковой подсистемы.
    Так что (имхо), мониторьте блокировки(в момент "зависания"), изменяйте логику приложения.
    1 сен 11, 12:30    [11211563]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    J3utajisi,

    Можно попробовать первую базу на картинке на более быстрый диск переместить.
    Но с другой стороны у вас и так маленькие задержки дисковой подсистемы.
    Так что (имхо), мониторьте блокировки(в момент "зависания"), изменяйте логику приложения.

    Большое спасибо за советы! Я тоже думаю, что тут проблема с блокировками, потому что элементарное удаление строки идет 20 сек.
    1 сен 11, 12:32    [11211577]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Еще такой момент, когда нагрузка спадает, производительность не востанавливается полностью, память забита и селекты выполняются в два раза дольше.
    1 сен 11, 12:37    [11211616]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi,

    а структуру таблички по которой идут массовые удаления и все ее индексы можете привести?
    или там вся база перелопачивается?
    1 сен 11, 12:43    [11211661]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    А результат этого скрипта можете привести?
    Нужно выполнять в проблемной базе.

    -- Отсутствующие индексы, вызывающие издержки
    SELECT TOP 10 
           [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0),
           avg_user_impact,
           TableName = statement,
           [EqualityUsage] = equality_columns,
           [InequalityUsage] = inequality_columns,
           [Include Cloumns] = included_columns
      FROM sys.dm_db_missing_index_groups g 
      INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle 
      INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle
      WHERE database_id = DB_ID()
      ORDER BY [Total Cost] DESC;
    1 сен 11, 12:48    [11211697]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    ЕвгенийВ
    Member

    Откуда: Москва
    Сообщений: 4957
    J3utajisi,
    Разнести файлы данных и дурнала транзакций по разным физическим дискам очень помогает, а у вас как я погляжу все на одном...
    1 сен 11, 12:54    [11211761]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Int23
    Guest
    >>Критик
    Скажите, а откуда вы берёте запросы такие интересные, позволяющие выводить статистику по серверу? Не могли бы выложить их по больше. И если есть такая возможность то с описанием.
    1 сен 11, 12:57    [11211789]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Гавриленко Сергей Алексеевич
    Member

    Откуда: Moscow
    Сообщений: 37077
    Int23
    >>Критик
    Скажите, а откуда вы берёте запросы такие интересные, позволяющие выводить статистику по серверу? Не могли бы выложить их по больше. И если есть такая возможность то с описанием.
    Все dmv описаны в BOL.
    1 сен 11, 12:57    [11211795]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    komrad
    Member

    Откуда:
    Сообщений: 5300
    Int23
    >>Критик
    Скажите, а откуда вы берёте запросы такие интересные, позволяющие выводить статистику по серверу? Не могли бы выложить их по больше. И если есть такая возможность то с описанием.


    у любого практикующего ДБА есть свой запасник скриптов
    источники пополнения разные - самопис, форумы и т.п.
    1 сен 11, 13:00    [11211813]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9442
    желтый триггер
    многие селекты вполне корректно делать с NOLOCK.
    для строгих расчетов это не подойдет, для "обычных селектов" - самое то.
    А руководство и пользователи будут особенно рады периодическому появлению 601 ошибки.
    1 сен 11, 13:01    [11211831]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    В спойлере, много текста, может кому-то пригодится.

    +
    -- что сейчас происходит на сервере
    select session_id, status, wait_type, command, last_wait_type, percent_complete, qt.text, total_elapsed_time/1000 as [total_elapsed_time, сек],
           wait_time/1000 as [wait_time, сек], (total_elapsed_time - wait_time)/1000 as [work_time, сек]
      from sys.dm_exec_requests as qs
      CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
      where session_id >= 50 and session_id <> @@spid
      order by 1
    
    -- что сейчас происходит на сервере (подробнее)
    select *
      from sys.sysprocesses where spid > 50 and spid <> @@spid and status <> 'sleeping'
      order by spid, ecid
    
    
    
    -- фрагментированные индексы
    SELECT TOP 100
           DatbaseName = DB_NAME(),
           TableName = OBJECT_NAME(s.[object_id]),
           IndexName = i.name,
           i.type_desc,
           [Fragmentation %] = ROUND(avg_fragmentation_in_percent,2),
           page_count,
           partition_number,
           'alter index [' + i.name + '] on [' + sh.name + '].['+ OBJECT_NAME(s.[object_id]) + '] REBUILD' + case
                                                                                                               when p.data_space_id is not null then ' PARTITION = '+convert(varchar(100),partition_number)
                                                                                                               else ''
                                                                                                             end + ' with(maxdop = 1,  SORT_IN_TEMPDB = on)' [sql]
      FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s
      INNER JOIN sys.indexes as i ON s.[object_id] = i.[object_id] AND
                                     s.index_id = i.index_id
      left join sys.partition_schemes as p on i.data_space_id = p.data_space_id
      left join sys.objects o on  s.[object_id] = o.[object_id]
      left join sys.schemas as sh on sh.[schema_id] = o.[schema_id]
      WHERE s.database_id = DB_ID() AND
            i.name IS NOT NULL AND
            OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0 and
            page_count > 100 and
            avg_fragmentation_in_percent > 10
      ORDER BY 4,page_count
    
    
    
    
    -- задержки
    SELECT TOP 10
     [Wait type] = wait_type,
     [Wait time (s)] = wait_time_ms / 1000,
     [% waiting] = CONVERT(DECIMAL(12,2), wait_time_ms * 100.0 
                   / SUM(wait_time_ms) OVER())
      FROM sys.dm_os_wait_stats
      WHERE wait_type NOT LIKE '%SLEEP%' 
      ORDER BY wait_time_ms DESC;
    
    
    -- итоговое число отсутствующих индексов для каждой базы данных
    SELECT [DatabaseName] = DB_NAME(database_id),
           [Number Indexes Missing] = count(*) 
      FROM sys.dm_db_missing_index_details
      GROUP BY DB_NAME(database_id)
      ORDER BY 2 DESC
    
    
    -- Отсутствующие индексы, вызывающие издержки
    SELECT TOP 10 
           [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0),
           avg_user_impact,
           TableName = statement,
           [EqualityUsage] = equality_columns,
           [InequalityUsage] = inequality_columns,
           [Include Cloumns] = included_columns
      FROM sys.dm_db_missing_index_groups g 
      INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle 
      INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle
      WHERE database_id = DB_ID()
      ORDER BY [Total Cost] DESC;
    
    
    -- Неиспользуемые индексы
    SELECT DatabaseName = DB_NAME(),
           TableName = OBJECT_NAME(s.[object_id]),
           IndexName = i.name,
           user_updates,
           system_updates,
           'EXEC sp_rename ''[dbo].['+OBJECT_NAME(s.[object_id])+'].['+i.name+']'',''disable_'+i.name+''',''INDEX''' as Rename,
           'ALTER INDEX '+i.name+' ON '+OBJECT_NAME(s.[object_id])+' DISABLE' as [Disable]
      FROM sys.dm_db_index_usage_stats s 
      INNER JOIN sys.indexes i ON s.[object_id] = i.[object_id] AND
                                  s.index_id = i.index_id
      WHERE s.database_id = DB_ID() AND
            OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0 AND
            user_seeks = 0     AND
            user_scans = 0     AND
            user_lookups = 0   AND
            i.is_disabled <> 1 AND
            i.is_primary_key <> 1
      order by user_updates + system_updates desc
    
    
    -- Запросы с высокими издержками на ввод-вывод
    SELECT TOP 10
           [Average IO] = (total_logical_reads + total_logical_writes) / qs.execution_count,
           [Total IO] = (total_logical_reads + total_logical_writes),
           [Execution count] = qs.execution_count,
           [Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2, (CASE
                                                                                   WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
                                                                                   ELSE qs.statement_end_offset
                                                                                 END - qs.statement_start_offset)/2),
           [Parent Query] = qt.text,
           [DatabaseName] = DB_NAME(qt.dbid)
      FROM sys.dm_exec_query_stats qs
      CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
      ORDER BY [Average IO] DESC
    
    
    
    -- Запросы с высоким использованием ресурсов ЦП
    SELECT TOP 10
           [Average CPU used] = total_worker_time / qs.execution_count,
           [Total CPU used] = total_worker_time,
           [Execution count] = qs.execution_count,
           [Individual Query] = SUBSTRING(qt.text,qs.statement_start_offset/2, 
             (CASE
                WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
                ELSE qs.statement_end_offset
              END - qs.statement_start_offset)/2),
           [Parent Query] = qt.text,
           [DatabaseName] = DB_NAME(qt.dbid)
      FROM sys.dm_exec_query_stats qs
      CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
      ORDER BY [Average CPU used] DESC;
    
    
    -- Запросы, страдающие от блокировки
    SELECT TOP 10
           [Average Time Blocked] = (total_elapsed_time - total_worker_time) / qs.execution_count,
           [Total Time Blocked] = total_elapsed_time - total_worker_time,
           [Execution count] = qs.execution_count,
           [Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2, 
             (CASE
                WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
                ELSE qs.statement_end_offset
              END - qs.statement_start_offset)/2),
           [Parent Query] = qt.text,
           [DatabaseName] = DB_NAME(qt.dbid)
      FROM sys.dm_exec_query_stats qs
      CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
      ORDER BY [Average Time Blocked] DESC;
    
    
    -- нагрузку на подсистему ввода-вывода
    select top 5 
        (total_logical_reads/execution_count) as avg_logical_reads,
        (total_logical_writes/execution_count) as avg_logical_writes,
        (total_physical_reads/execution_count) as avg_phys_reads,
         Execution_count, 
        statement_start_offset as stmt_start_offset, 
        plan_handle,
        qt.text
    from sys.dm_exec_query_stats  qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
    order by  (total_logical_reads + total_logical_writes) Desc
    
    
    
    -- какой процессор что делает
    SELECT DB_NAME(ISNULL(s.dbid,1)) AS [Имя базы данных],
           c.session_id AS [ID сессии],
           t.scheduler_id AS [Номер процессора],
           s.text AS [Текст SQL-запроса]
      FROM sys.dm_exec_connections AS c
      CROSS APPLY master.sys.dm_exec_sql_text(c.most_recent_sql_handle) AS s
      JOIN sys.dm_os_tasks t ON t.session_id = c.session_id AND
                                t.task_state = 'RUNNING' AND
                                ISNULL(s.dbid,1) > 4
      ORDER BY c.session_id DESC
    
    
    -- контроль "несжатости"
    SELECT tbl.name,
           i.name,
           p.partition_number AS [PartitionNumber],
           p.data_compression_desc AS [DataCompression],
           p.rows  AS [RowCount]
      FROM sys.tables AS tbl
      LEFT JOIN sys.indexes AS i ON (i.index_id > 0 and i.is_hypothetical = 0) AND (i.object_id=tbl.object_id)
      INNER JOIN sys.partitions AS p ON p.object_id = CAST(tbl.object_id AS int) AND
                                        p.index_id = CAST(i.index_id AS int)
      where p.data_compression_desc <> 'PAGE' and
            p.rows >= 1000000
      order by p.rows desc, 3
    
    
    
    -- статистика по операциям в БД
    SELECT t.name AS [TableName],
           fi.page_count AS [Pages],
           fi.record_count AS [Rows],
           CAST(fi.avg_record_size_in_bytes AS int) AS [AverageRecordBytes],
           CAST(fi.avg_fragmentation_in_percent AS int) AS [AverageFragmentationPercent],
           SUM(iop.leaf_insert_count) AS [Inserts],
           SUM(iop.leaf_delete_count) AS [Deletes],
           SUM(iop.leaf_update_count) AS [Updates],
           SUM(iop.row_lock_count) AS [RowLocks],
           SUM(iop.page_lock_count) AS [PageLocks]
      FROM sys.dm_db_index_operational_stats(DB_ID(),NULL,NULL,NULL) AS iop
      JOIN sys.indexes AS i ON iop.index_id = i.index_id AND
                               iop.object_id = i.object_id
      JOIN sys.tables AS t ON i.object_id = t.object_id AND
                              i.type_desc IN ('CLUSTERED', 'HEAP')
      JOIN sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') AS fi ON fi.object_id=CAST(t.object_id AS int) AND
                                                                                         fi.index_id=CAST(i.index_id AS int)
      GROUP BY t.name, fi.page_count, fi.record_count, fi.avg_record_size_in_bytes, fi.avg_fragmentation_in_percent
      ORDER BY [RowLocks] desc
    
    
    
    -- дата обновления статистики
    SELECT STATS_DATE(t1.object_id, stats_id), 'UPDATE STATISTICS [' + object_name(t1.object_id) + ']([' + t1.name + ']) WITH FULLSCAN',
           i1.rows
      FROM sys.stats as t1
      inner join sys.sysobjects as t2 on t1.object_id = t2.id
      left join sysindexes as i1 on i1.id = t1.object_id and
                                    i1.indid = 1
      where xtype = 'U' and
            STATS_DATE(t1.object_id, stats_id) < GETDATE()-5 and
            -- не учитываем: мусор, постоянные данные, таблицы на удаление
            t1.name not like 'disable%' and
            object_name(t1.object_id) not like '[__]%' and
            object_name(t1.object_id) not like 'T[_]%' and
            object_name(t1.object_id) not like 'OSMP%' and
            -- исключаем автостатистику,
            -- она создана по ad-hoc запросам, поэтому не является необходимой
            -- во время ночных расчетов
             t1.name not like '[_]WA[_]Sys[_]%'
      order by STATS_DATE(t1.object_id, stats_id)
    
    
    
    
    
    -- i/o-нагрузка на файлы
    SELECT TOP 10 DB_NAME(saf.dbid) AS [База данных],
           saf.name AS [Логическое имя],
           vfs.BytesRead/1048576 AS [Прочитано (Мб)],
           vfs.BytesWritten/1048576 AS [Записано (Мб)],
           saf.filename AS [Путь к файлу]
      FROM master..sysaltfiles AS saf
      JOIN ::fn_virtualfilestats(NULL,NULL) AS vfs ON vfs.dbid = saf.dbid AND
                                                      vfs.fileid = saf.fileid AND
                                                      saf.dbid NOT IN (1,3,4)
      ORDER BY vfs.BytesRead/1048576 + BytesWritten/1048576 DESC
    
    
    
    -- i/o-нагрузка на диски
    SELECT SUBSTRING(saf.physical_name, 1, 1)    AS [Диск],
           SUM(vfs.num_of_bytes_read/1048576)    AS [Прочитано (Мб)],
           SUM(vfs.num_of_bytes_written/1048576) AS [Записано (Мб)]
      FROM sys.master_files AS saf
      JOIN sys.dm_io_virtual_file_stats(NULL,NULL) AS vfs ON vfs.database_id = saf.database_id AND
                                                             vfs.file_id = saf.file_id AND
                                                             saf.database_id NOT IN (1,3,4) AND
                                                             saf.type < 2
      GROUP BY SUBSTRING(saf.physical_name, 1, 1)
      ORDER BY [Диск]
    
    
    
    -- Занимаемое на диске место
    SELECT TOP 1000
           (row_number() over(order by (a1.reserved + ISNULL(a4.reserved,0)) desc))%2 as l1,
           a3.name AS [schemaname],
           a2.name AS [tablename],
           a1.rows as row_count,
          (a1.reserved + ISNULL(a4.reserved,0))* 8 AS reserved,
           a1.data * 8 AS data,
          (CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data THEN (a1.used + ISNULL(a4.used,0)) - a1.data ELSE 0 END) * 8 AS index_size,
          (CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used THEN (a1.reserved + ISNULL(a4.reserved,0)) - a1.used ELSE 0 END) * 8 AS unused,
          'ALTER TABLE [' + a2.name  + '] REBUILD' as [sql]
      FROM (SELECT ps.object_id,
                   SUM(CASE WHEN (ps.index_id < 2) THEN row_count ELSE 0 END) AS [rows],
                   SUM(ps.reserved_page_count) AS reserved,
                   SUM(CASE WHEN (ps.index_id < 2) THEN (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count) ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count) END) AS data,
                   SUM(ps.used_page_count) AS used
              FROM sys.dm_db_partition_stats ps
              GROUP BY ps.object_id
           ) AS a1
      LEFT JOIN (SELECT it.parent_id,
                        SUM(ps.reserved_page_count) AS reserved,
                        SUM(ps.used_page_count) AS used
                   FROM sys.dm_db_partition_stats ps
                   INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
                   WHERE it.internal_type IN (202,204)
                   GROUP BY it.parent_id
                ) AS a4 ON (a4.parent_id = a1.object_id)
      INNER JOIN sys.all_objects a2  ON ( a1.object_id = a2.object_id )
      INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id)
      WHERE a2.type <> N'S' and a2.type <> N'IT'
      ORDER BY 8 DESC
    
    
    -- под какие объекты выделена память 
    select count(*)as cached_pages_count,
           obj.name as objectname,
           ind.name as indexname,
           obj.index_id as indexid
      from sys.dm_os_buffer_descriptors as bd
      inner join (select object_id as objectid,
                         object_name(object_id) as name,
                         index_id,allocation_unit_id
                    from sys.allocation_units as au
                    inner join sys.partitions as p on au.container_id = p.hobt_id and (au.type = 1 or au.type = 3)
                    union all
                    select object_id as objectid,
                           object_name(object_id) as name,
                           index_id,allocation_unit_id
                      from sys.allocation_units as au
                      inner join sys.partitions as p on au.container_id = p.partition_id and au.type = 2
                 ) as obj on bd.allocation_unit_id = obj.allocation_unit_id
      left outer join sys.indexes ind on obj.objectid = ind.object_id and
                                         obj.index_id = ind.index_id
      where bd.database_id = db_id() and
            bd.page_type in ('data_page', 'index_page')
      group by obj.name, ind.name, obj.index_id
      order by cached_pages_count desc
    1 сен 11, 13:01    [11211832]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    invm
    желтый триггер
    многие селекты вполне корректно делать с NOLOCK.
    для строгих расчетов это не подойдет, для "обычных селектов" - самое то.
    А руководство и пользователи будут особенно рады периодическому появлению 601 ошибки.

    это уж откуда руки растут (начиная с внутридневных миграций).
    1 сен 11, 13:06    [11211865]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Гавриленко Сергей Алексеевич
    Member

    Откуда: Moscow
    Сообщений: 37077
    invm
    желтый триггер
    многие селекты вполне корректно делать с NOLOCK.
    для строгих расчетов это не подойдет, для "обычных селектов" - самое то.
    А руководство и пользователи будут особенно рады периодическому появлению 601 ошибки.
    Если сканов нет, откуда ей взяться? :)
    З.Ы. Мы много чего с nolock читаем, последняя такая ошибка была в марте сего года.

    З.Ы.Ы. А вообще, если версия (и железо) позволяет, надо смотреть сторону RCSI.

    Сообщение было отредактировано: 1 сен 11, 13:10
    1 сен 11, 13:09    [11211886]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Int23
    Guest
    >>Критик

    Спасибо за запросы. А расскажите про "-- Отсутствующие индексы, вызывающие издержки"
    Вот он мне выдал

    TotalCost avg_user_impact TableName EqualityUsage InequalityUsage Include Cloumns
    19 60,02 [TradingSystem].[dbo].[Quotation] [GCRecord] [RefreshDate] [Oid]

    Скажите какой индекс надо создать? На пальцах объясните, пожалуйста
    1 сен 11, 13:14    [11211918]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    1
    Guest
    А какой размер кластера?
    1 сен 11, 13:19    [11211958]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9442
    Гавриленко Сергей Алексеевич
    Если сканов нет, откуда ей взяться? :)

    Если доподлинно не известно есть сканы или нет, то рекомендовать использовать nolock, тем более пока еще слаборазбирающемуся человеку -- медвежья услуга.
    Гавриленко Сергей Алексеевич
    З.Ы.Ы. А вообще, если версия (и железо) позволяет, надо смотреть сторону RCSI.

    +100500
    1 сен 11, 13:37    [11212123]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    Int23,

    не стоит создавать, TotalCost копеечный
    1 сен 11, 13:40    [11212149]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    invm
    рекомендовать использовать nolock, тем более пока еще слаборазбирающемуся человеку -- медвежья услуга.

    больше похоже что писали как раз боящиеся ужасных грязных чтений. как вобще можно ими пользоваться? они же dirty! holy shit!
    1 сен 11, 13:42    [11212174]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Int23
    Guest
    >> TotalCost копеечный
    Это потому что я перезапустил сервер и запустил программу и она проработала 30 секунд. к конфу дня там будет огромный. мне просто смысл понять хочется. покаким полям создавать при таких раскладах
    1 сен 11, 13:43    [11212180]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    Int23,

    Примерно так:
    create index idx1 on [Quotation]([GCRecord],[RefreshDate]) include([Oid])
    Но сначала нужно оценить соотношение чтения-записи, возможно там 10 запросов на чтение и 100000 на запись.
    1 сен 11, 14:24    [11212571]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Int23
    >> TotalCost копеечный
    Это потому что я перезапустил сервер и запустил программу и она проработала 30 секунд. к конфу дня там будет огромный. мне просто смысл понять хочется. покаким полям создавать при таких раскладах

    http://msdn.microsoft.com/ru-ru/library/ms345405.aspx
    1 сен 11, 15:13    [11213100]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi,

    а структуру таблички по которой идут массовые удаления и все ее индексы можете привести?
    или там вся база перелопачивается?


    Затрагивается примерно 3-5 табличек с примерно такой структурой:

    К сообщению приложен файл. Размер - 66Kb
    1 сен 11, 15:14    [11213107]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    J3utajisi
    желтый триггер
    J3utajisi,

    а структуру таблички по которой идут массовые удаления и все ее индексы можете привести?
    или там вся база перелопачивается?


    Затрагивается примерно 3-5 табличек


    На каждой по 3 триггера минимум
    1 сен 11, 15:15    [11213114]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    А результат этого скрипта можете привести?
    Нужно выполнять в проблемной базе.

    -- Отсутствующие индексы, вызывающие издержки
    SELECT TOP 10 
           [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0),
           avg_user_impact,
           TableName = statement,
           [EqualityUsage] = equality_columns,
           [InequalityUsage] = inequality_columns,
           [Include Cloumns] = included_columns
      FROM sys.dm_db_missing_index_groups g 
      INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle 
      INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle
      WHERE database_id = DB_ID()
      ORDER BY [Total Cost] DESC;


    Вот результаты:

    К сообщению приложен файл. Размер - 58Kb
    1 сен 11, 15:16    [11213127]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    ЕвгенийВ
    J3utajisi,
    Разнести файлы данных и дурнала транзакций по разным физическим дискам очень помогает, а у вас как я погляжу все на одном...


    На сколько это поможет? Просто проблемно в короткие сроки это решить.
    1 сен 11, 15:18    [11213136]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi
    На сколько это поможет? Просто проблемно в короткие сроки это решить.


    а вы лучше статейку надыбайте про оптимизацию файлов данных и файлов логов чтобы всё сразу переварить.
    1 сен 11, 15:29    [11213236]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    Я бы сначала рассмотрел возможность создания первого рекомендованного индекса.
    Следующим шагом: со второго по шестой рекомендованные индексы.
    1 сен 11, 15:35    [11213306]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Int23
    Guest
    У меня есть индекс

    CREATE NONCLUSTERED INDEX [iTradingInstrument_Order] ON [dbo].[Order]
    (
    [TradingInstrument] ASC,
    [GCRecord] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    GO

    А всё равно выдётся что нужен индекс (см рисунок). Почему такое может быть?

    К сообщению приложен файл. Размер - 7Kb
    1 сен 11, 15:37    [11213343]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    Я бы сначала рассмотрел возможность создания первого рекомендованного индекса.
    Следующим шагом: со второго по шестой рекомендованные индексы.

    С этой таблички(около 13 милионов записей, вся в гуидах :(( ) снес 5 ненужных индексов по гуидам, которые занимали около 10 гигов. Не хотелось конечно делать на гуид, но вечером может сделаю.
    1 сен 11, 15:45    [11213442]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi
    На сколько это поможет? Просто проблемно в короткие сроки это решить.


    а вы лучше статейку надыбайте про оптимизацию файлов данных и файлов логов чтобы всё сразу переварить.


    Читал несколько статеек недавно, знаю что эффект будет(не знаю только какой), как будет возможность обязательно разнесу!
    1 сен 11, 15:48    [11213474]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi
    вся в гуидах :((

    от оно чо.
    все остальные таблицы - с кластерным pk по guid?
    1 сен 11, 16:04    [11213653]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi
    вся в гуидах :((

    от оно чо.
    все остальные таблицы - с кластерным pk по guid?

    Практически все, даже таблицы простых справочников.
    1 сен 11, 17:51    [11214659]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi,

    жесть.
    а есть такая общая свалка, в которой хранятся вобще все гуиды системы и на которую ссылаются все справочники и другие таблицы?
    1 сен 11, 18:02    [11214742]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi,

    жесть.
    а есть такая общая свалка, в которой хранятся вобще все гуиды системы и на которую ссылаются все справочники и другие таблицы?

    Совсем уж прям свалки нет, но 10 ссылок найдется))
    2 сен 11, 08:45    [11216044]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    Критик
    sp_lock показывает блокировки в тукущий момент

    Или см столбец blocked (при "остановке работы")
    select *
      from sys.sysprocesses where spid > 50 and spid <> @@spid and status <> 'sleeping'
      order by spid, ecid

    Вчера вечером нагрузил сервер. Выполнял этот запрос и получил результаты в приложенном ехсел файле.

    К сообщению приложен файл (блокировки.xls - 68Kb) cкачать
    2 сен 11, 09:20    [11216132]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi,

    если я правильно понял, у вас "4 параллельных потока" порождаемых "клиентом" делают массовые модификации, и у каждого из них sqlserver'ный паралеллизм неограничен.
    попробуйте MAXDOP порегулировать. начиная с цифры 1.
    2 сен 11, 11:50    [11217088]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    и в этих массовый изменениях нет ли у вас такой фигни, которая сначала всё удаляет, потом заново вставляет.
    вы говорили о просадке чтений после массовых изменений, я все думаю про кластерные по гуидам.
    2 сен 11, 13:55    [11218200]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    и в этих массовый изменениях нет ли у вас такой фигни, которая сначала всё удаляет, потом заново вставляет.
    вы говорили о просадке чтений после массовых изменений, я все думаю про кластерные по гуидам.

    Есть такая фигня, как раз так все и происходит. К тому же когда удаляется или добавляется что-то, срабатывают триггеры(сейчас избавляемся от них), которые меняют другие записи в таблицах.
    2 сен 11, 15:51    [11219415]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi,

    даже если на апдейты переделать тяжко но возможно - лучше переделать.
    если в использовании гуида нет никакого смысла (кто и зачем его туда влепил?) - лучше сделать PK по int.
    если нельзя от гуида избавиться совсем - посмотрите, не лучше ли будет смотреться кластерный по другому полю (PK по гуиду соответственно будет некластерный), на крайняк в дефолте гуидного поля поставьте newsecuential, а не просто newid.
    если удаляется вобще всё (таблица опустошается) - не делайте через delete (delete vs truncate в google, F1).
    у вас 2008 - F1 по switch
    2 сен 11, 16:10    [11219665]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    BVB_berserk
    Member

    Откуда:
    Сообщений: 35
    J3utajisi
    желтый триггер
    и в этих массовый изменениях нет ли у вас такой фигни, которая сначала всё удаляет, потом заново вставляет.
    вы говорили о просадке чтений после массовых изменений, я все думаю про кластерные по гуидам.

    Есть такая фигня, как раз так все и происходит.


    Может попробовать через MERGE замутить, раз 2008 стоит?
    2 сен 11, 16:44    [11219975]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi,

    даже если на апдейты переделать тяжко но возможно - лучше переделать.
    если в использовании гуида нет никакого смысла (кто и зачем его туда влепил?) - лучше сделать PK по int.
    если нельзя от гуида избавиться совсем - посмотрите, не лучше ли будет смотреться кластерный по другому полю (PK по гуиду соответственно будет некластерный), на крайняк в дефолте гуидного поля поставьте newsecuential, а не просто newid.
    если удаляется вобще всё (таблица опустошается) - не делайте через delete (delete vs truncate в google, F1).
    у вас 2008 - F1 по switch

    По возможности переделываются все операции. Гуиды использовались для беспроблемного мержа двух баз, пока этого не было ни разу. Сразу уйти от гуидов тяжело, т.к. очень много кода, идет постоянная поддержка и рост проекта. Про newsecuential слышал, вроде генерит по порядку гуиды, можно попробовать. В таблицах очищаются не все записи..
    2 сен 11, 16:53    [11220030]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi,

    по какому принципу "не все" удаляются? по какому-то id или дате?

    ну раз тяжело - оставляйте гуиды.

    ps
    про мёрж баз. ну вот вы раз замёржились, туда-сюда гуиды перелились.
    потом запустили свой адский механизм, все гуиды что были пропали, новые гуиды при мёрже ни с чем не совпадают...
    2 сен 11, 17:05    [11220094]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi,

    по какому принципу "не все" удаляются? по какому-то id или дате?


    По id. Скажем так удаляются объекты из таблицы, которые содержат кучу параметров в других таблицах.
    2 сен 11, 17:19    [11220161]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi
    По id. Скажем так удаляются объекты из таблицы, которые содержат кучу параметров в других таблицах.

    "по id" понял, дальше не понял.
    если id (я правильно понял что в этой таблице id - поле не уникальное, что это ссылка куда-то?) - главный критерий манипулирования данными - посмотрите в сторону секционирования по диапазонам этого id.
    это предложение на посмотреть, дальше давайте сами. что у вас там творится не очень понятно, сделать еще хуже в 5сек можно.
    2 сен 11, 17:26    [11220202]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi
    По id. Скажем так удаляются объекты из таблицы, которые содержат кучу параметров в других таблицах.

    "по id" понял, дальше не понял.
    если id (я правильно понял что в этой таблице id - поле не уникальное, что это ссылка куда-то?) - главный критерий манипулирования данными - посмотрите в сторону секционирования по диапазонам этого id.
    это предложение на посмотреть, дальше давайте сами. что у вас там творится не очень понятно, сделать еще хуже в 5сек можно.

    Удаление и вставка происходит в нескольких таблицах по первичному или внешнему ключу. Все эти ключи гуиды, к сожалению.
    2 сен 11, 17:45    [11220305]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    желтый триггер
    Guest
    J3utajisi,

    проектируйте заново.
    2 сен 11, 17:51    [11220345]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Звезда_в_шоке_!!
    Guest
    Почитал, осилил, Звезда в шоке....
    2 сен 11, 17:58    [11220375]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    желтый триггер
    J3utajisi,

    проектируйте заново.

    Согласен, только нужно хоть что-то в короткие сроки сделать. Досталось мне в наследство... никому не пожелаешь))
    3 сен 11, 09:47    [11222266]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    sti
    Member

    Откуда:
    Сообщений: 769
    J3utajisi
    желтый триггер
    и в этих массовый изменениях нет ли у вас такой фигни, которая сначала всё удаляет, потом заново вставляет.
    вы говорили о просадке чтений после массовых изменений, я все думаю про кластерные по гуидам.

    Есть такая фигня, как раз так все и происходит. К тому же когда удаляется или добавляется что-то, срабатывают триггеры(сейчас избавляемся от них), которые меняют другие записи в таблицах.

    В подобной ситуации ввел версионность данных и заменил физическое удаление на логическое. Физически данные неактуальных версий удаляются в джобе по расписанию.
    Нужны только правильные индексы, чтобы процессы, читающие актуальные данные, и процессы, удаляющие неактуальные данные, друг друга не блокировали.
    3 сен 11, 17:42    [11222787]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    MyNiGoo
    Member

    Откуда:
    Сообщений: 231
    прочитал весь тред запоем, круче детектива. ТС, отпишись, чем дело кончится
    11 сен 11, 21:01    [11261065]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    MyNiGoo,

    Утечки памяти были из-за рекурсии на сервере приложений.
    Из оптимизации сильно помогло следующее:
    3 ноя 11, 09:33    [11543996]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    J3utajisi
    Member

    Откуда:
    Сообщений: 97
    1. MAXDOP поставил 1
    2. Убил с десяток составных индексов на ГУИДы
    3. Создал новые индексы
    4. Создал задания на ребилд индексов и перестроение статистики раз в неделю
    3 ноя 11, 09:35    [11544004]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    убиван кен гуид
    Guest
    с гуидами битву продолжайте.
    во многом тяжелы для работы они.
    когда миграции массовы, дизаблить индексы хорошо.
    3 ноя 11, 10:07    [11544172]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    kovalevu
    Member

    Откуда:
    Сообщений: 6
    Прошу помочь в решении любопытной проблемы. Есть большая система (база, куча клиентских приложений, служб, заданий). Все это хозяйство устойчиво работало на различном железе, под различными Windows Server 2003,2008 как 32, так и 64 битными. Что касаетcя SQL серверов, то они всегда были 32 битные, с AWE или без, но 32 битными. При переходе на 64 битный SQL сервер появилась утечка памяти и, как следствие, после максимум суток работы, сервер зависает – OutOfMemory.
    Конфигурация : MS Windows 2008 R2 St (SP1)+ MS SQL 2008 R2 Ent(SP2).
    Железо: Proliant 24 Гб, 2 процессора, 24 ядра.
    Опытным путем было установлено, что вина за утечку лежит на нескольких 32 битных приложениях, которые абсолютно корректно работали с 32 битным SQL Server и под 64 битной, и под 32 OC. Для чистоты эксперимента были оставлены : СУБД, служба, обеспечивающая ввод данных в три таблицы (она не оказывает никакого влияния на утечку) и одно из 32 битных приложений, обеспечивающих обработку данных и разнесение их в три результирующие таблицы. Все остальное было отрублено. Плотность транзакций при вводе и обработке крошечная – 3-4 транзакции в секунду. Чтение исходных данных приложении с NOLOCK, через хранимые процедуры, вывод поизводится в таблицы, к которым нет обращения из других процессов, блокировок не обнаружено. Клиентское приложение отрабатывает за 300 -400 mc, запускается из студии, в цикле, через xp_cmdshell, или как задание Windows с частотой раз в минуту. При этом варьировались: MAXDOP, минимальная и максимальная память, выделение памяти для индексов и т.д.
    Буду благодарен за любую информацию.
    6 сен 12, 14:05    [13123847]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    WarAnt
    Member

    Откуда: Питер
    Сообщений: 2421
    kovalevu,

    и как вы определили что идет утечка памяти именно в sql сервере?
    6 сен 12, 14:38    [13124150]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    kovalevu
    Member

    Откуда:
    Сообщений: 6
    WarAnt
    kovalevu,

    и как вы определили что идет утечка памяти именно в sql сервере?


    Я вовсе в этом не уверен - это просто предположение. Но когда я отрубаю данное приложение или запускаю его в той же самое среде с 32 битном SQL, то проблем нет. Что можете посоветовать для адекватной диагностики?
    6 сен 12, 14:47    [13124234]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    WarAnt
    Member

    Откуда: Питер
    Сообщений: 2421
    kovalevu
    WarAnt
    kovalevu,

    и как вы определили что идет утечка памяти именно в sql сервере?


    Я вовсе в этом не уверен - это просто предположение. Но когда я отрубаю данное приложение или запускаю его в той же самое среде с 32 битном SQL, то проблем нет. Что можете посоветовать для адекватной диагностики?


    чтобы что то советовать надо сначала видеть проблему, а её не видно из вашего повествования, кроме непонятно где выскакивающей ошибки OutOfMemory, я могу только преположить что у вас неправильно настроены границы потребления памяти сервером.
    6 сен 12, 15:01    [13124365]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    kovalevu
    Member

    Откуда:
    Сообщений: 6
    WarAnt
    kovalevu
    пропущено...


    Я вовсе в этом не уверен - это просто предположение. Но когда я отрубаю данное приложение или запускаю его в той же самое среде с 32 битном SQL, то проблем нет. Что можете посоветовать для адекватной диагностики?


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

    Я варьировал память SQL сервера:0,2147483647;0,8192; 8192, 12288 и т.д. MAXDOP варьировалось от 1 до 8.
    6 сен 12, 15:12    [13124439]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    kovalevu
    При переходе на 64 битный SQL сервер появилась утечка памяти и, как следствие, после максимум суток работы, сервер зависает – OutOfMemory.


    лучше бы вы привели оригинально сообщение об ошибке
    6 сен 12, 16:35    [13125223]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    без шуток
    Guest
    kovalevu
    Буду благодарен за любую информацию.

    топик перечитай.
    6 сен 12, 16:38    [13125248]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    kovalevu
    Member

    Откуда:
    Сообщений: 6
    Критик
    kovalevu
    При переходе на 64 битный SQL сервер появилась утечка памяти и, как следствие, после максимум суток работы, сервер зависает – OutOfMemory.


    лучше бы вы привели оригинально сообщение об ошибке

    Например, при заданной памяти:8192-12288 и MAXDOP=1 система полностью зависает при используемой памяти~ 20000, памяти~2000 и свободной~1800. Если в этот момент попытаться исполнить любой запрос из студии, то выдается ошибка System.OutOfMemoryException. OC можно перегрузить только физически отключив сервер от питания. Какую информацию мне еще предоставить?
    6 сен 12, 19:30    [13126333]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    телепауэ
    Guest
    kovalevu,

    ищи MERGE join хинт на неконтролируемых объемах
    6 сен 12, 19:42    [13126370]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    kovalevu
    Member

    Откуда:
    Сообщений: 6
    телепауэ
    kovalevu,

    ищи MERGE join хинт на неконтролируемых объемах

    Мне не до шуток. MERGE и join не пользуемся.
    6 сен 12, 20:06    [13126436]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    телепауэ
    Guest
    kovalevu
    телепауэ
    kovalevu,

    ищи MERGE join хинт на неконтролируемых объемах

    Мне не до шуток. MERGE и join не пользуемся.

    теперь действительно не до шуток.
    а для каких целей у вас вообще используется ms sql server? хранимки, запросы на нем выполняются?
    или это в том смысле что все джойны на LINQ или подобном?
    6 сен 12, 20:23    [13126485]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Критик
    Member

    Откуда: Москва / Калуга
    Сообщений: 34102
    Блог
    kovalevu
    Если в этот момент попытаться исполнить любой запрос из студии, то выдается ошибка System.OutOfMemoryException. OC можно перегрузить только физически отключив сервер от питания. Какую информацию мне еще предоставить?


    может это ошибка студии, поэтому и нужно оригинально сообщение об ошибке,
    еще нужна версия сервера и версия студии
    7 сен 12, 09:06    [13127627]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    komrad
    Member

    Откуда:
    Сообщений: 5300
    Критик
    kovalevu
    Если в этот момент попытаться исполнить любой запрос из студии, то выдается ошибка System.OutOfMemoryException. OC можно перегрузить только физически отключив сервер от питания. Какую информацию мне еще предоставить?


    может это ошибка студии, поэтому и нужно оригинально сообщение об ошибке,
    еще нужна версия сервера и версия студии


    это ошибка студии - у меня такое бывает, когда много окон в студии открыто (>150).
    + не запускайте студию на самом сиквеле, работайте со своей рабочей станции
    7 сен 12, 16:54    [13131533]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6723
    komrad
    когда много окон в студии открыто (>150)

    Вы издеваетесь, у меня когда больше 10 уже голова кругом и не удобно.
    7 сен 12, 17:00    [13131576]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    kovalevu
    Member

    Откуда:
    Сообщений: 6
    Критик
    kovalevu
    Если в этот момент попытаться исполнить любой запрос из студии, то выдается ошибка System.OutOfMemoryException. OC можно перегрузить только физически отключив сервер от питания. Какую информацию мне еще предоставить?


    может это ошибка студии, поэтому и нужно оригинально сообщение об ошибке,
    еще нужна версия сервера и версия студии

    Я уже писалл выше о конфигурации. Подробнее:
    Microsoft SQL Server Management Studio 10.50.4000.0
    Клиентские средства служб Microsoft Analysis Services 10.50.4000.0
    Компоненты доступа к данным (MDAC) 6.1.7601.17514
    Microsoft MSXML 3.0 6.0
    Microsoft Internet Explorer 9.0.8112.16421
    Microsoft .NET Framework 2.0.50727.5456
    Операционная система 6.1.7601
    7 сен 12, 19:44    [13132381]     Ответить | Цитировать Сообщить модератору
     Re: Утечки памяти MS SQL 2008  [new]
    komrad
    Member

    Откуда:
    Сообщений: 5300
    Mnior
    komrad
    когда много окон в студии открыто (>150)

    Вы издеваетесь, у меня когда больше 10 уже голова кругом и не удобно.

    за неделю набирается :)
    8 сен 12, 00:47    [13133260]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
    Все форумы / Microsoft SQL Server Ответить