{"id":246,"date":"2025-01-20T15:19:10","date_gmt":"2025-01-20T13:19:10","guid":{"rendered":"http:\/\/mariospavlidis.site\/?p=246"},"modified":"2025-01-20T15:19:10","modified_gmt":"2025-01-20T13:19:10","slug":"useful-perfmon-counters-for-sql-server-monitoring","status":"publish","type":"post","link":"http:\/\/130.61.57.200\/index.php\/2025\/01\/20\/useful-perfmon-counters-for-sql-server-monitoring\/","title":{"rendered":"Useful Perfmon Counters for SQL Server Monitoring"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><\/h4>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained wp-container-1 is-position-sticky\">\n<table id=\"tablepress-3\" class=\"tablepress tablepress-id-3\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Object Name<\/th><th class=\"column-2\">Counter<\/th><th class=\"column-3\">Description<\/th><th class=\"column-4\">Ideal<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Processor<\/td><td class=\"column-2\">%Processor Time\/_Total<\/td><td class=\"column-3\">All processors usage<\/td><td class=\"column-4\"><70%<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">System<\/td><td class=\"column-2\">Processor Queue Length<\/td><td class=\"column-3\">Threads ready to run<\/td><td class=\"column-4\">Near 0 but at most <10 per processor<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Network Interface<\/td><td class=\"column-2\">Bytes Total\/sec<\/td><td class=\"column-3\">Total network load<\/td><td class=\"column-4\"><60% bandwidth<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Memory Manager<\/td><td class=\"column-2\">Total Server Memory<\/td><td class=\"column-3\">Current Memory consumption<\/td><td class=\"column-4\">OS memory = 2GB+ 2MB*(500 + 16 *(CPUs-4))<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td><td class=\"column-3\"><\/td><td class=\"column-4\">Rest is max memory for instance<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Memory Manager<\/td><td class=\"column-2\">Target Server Memory<\/td><td class=\"column-3\">Ideal Memory for optimal operation<\/td><td class=\"column-4\">&#8220;=Total Server Memory<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Memory Manager<\/td><td class=\"column-2\">Free Memory<\/td><td class=\"column-3\">Not used memory<\/td><td class=\"column-4\">>0 but not too large<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">Memory Manager<\/td><td class=\"column-2\">Stolen Server Memory<\/td><td class=\"column-3\">Server Memory stolen for other purposes than DB pages<\/td><td class=\"column-4\">0<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">Memory Manager<\/td><td class=\"column-2\">Memory Grants Pending<\/td><td class=\"column-3\">Processes waiting for memory workspace<\/td><td class=\"column-4\">0 or 1<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">Buffer Manager<\/td><td class=\"column-2\">Free List stalls\/ sec<\/td><td class=\"column-3\">Requests had to wait for free page<\/td><td class=\"column-4\">0<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-1\">Buffer Manager<\/td><td class=\"column-2\">Buffer Cache hit Ratio<\/td><td class=\"column-3\">Pages in memory without reading from disk<\/td><td class=\"column-4\">>99%<\/td>\n<\/tr>\n<tr class=\"row-13\">\n\t<td class=\"column-1\">Buffer Manager<\/td><td class=\"column-2\">Lazy Writes\/sec<\/td><td class=\"column-3\">Indicate dirty pages from lazy writer (NOT CHECKPOINT)<\/td><td class=\"column-4\">0<\/td>\n<\/tr>\n<tr class=\"row-14\">\n\t<td class=\"column-1\">Buffer Manager<\/td><td class=\"column-2\">Page Life Expectancy<\/td><td class=\"column-3\">Seconds that a page stays in Buffer Cache before flush<\/td><td class=\"column-4\">300s * Total memory (GB)\/4GB<\/td>\n<\/tr>\n<tr class=\"row-15\">\n\t<td class=\"column-1\">Buffer Manager<\/td><td class=\"column-2\">Page reads\/sec<\/td><td class=\"column-3\">Physical Reads<\/td><td class=\"column-4\">Not too high compared to Logical Reads<\/td>\n<\/tr>\n<tr class=\"row-16\">\n\t<td class=\"column-1\">Buffer Manager<\/td><td class=\"column-2\">Page lookups \/sec<\/td><td class=\"column-3\">Logical Reads<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-17\">\n\t<td class=\"column-1\">Memory<\/td><td class=\"column-2\">Available Mbytes<\/td><td class=\"column-3\">Memory Available to OS.<\/td><td class=\"column-4\">>2-4GB<\/td>\n<\/tr>\n<tr class=\"row-18\">\n\t<td class=\"column-1\">Memory<\/td><td class=\"column-2\">Pages \/ sec<\/td><td class=\"column-3\">Pages read from or written to disk to resolve hard page faults<\/td><td class=\"column-4\">0<\/td>\n<\/tr>\n<tr class=\"row-19\">\n\t<td class=\"column-1\">Plan Cache<\/td><td class=\"column-2\">Cache Hit Ratio<\/td><td class=\"column-3\">Ratio between cache hits and lookups for plans<\/td><td class=\"column-4\">>95%<\/td>\n<\/tr>\n<tr class=\"row-20\">\n\t<td class=\"column-1\">Paging File<\/td><td class=\"column-2\">%Usage<\/td><td class=\"column-3\">Page file in use<\/td><td class=\"column-4\">0<\/td>\n<\/tr>\n<tr class=\"row-21\">\n\t<td class=\"column-1\">Process<\/td><td class=\"column-2\">Working Set<\/td><td class=\"column-3\">The working set in Bytes<\/td><td class=\"column-4\">If much smaller than assigned memory then it\u2019s overallocated<\/td>\n<\/tr>\n<tr class=\"row-22\">\n\t<td class=\"column-1\">Physical Disk<\/td><td class=\"column-2\">Avg. Disk Queue Length<\/td><td class=\"column-3\">Read Write requests queued for selected disk<\/td><td class=\"column-4\">Near 0<\/td>\n<\/tr>\n<tr class=\"row-23\">\n\t<td class=\"column-1\">Physical Disk<\/td><td class=\"column-2\">Avg. Disk Sec\/Read<\/td><td class=\"column-3\">Average time for one read<\/td><td class=\"column-4\"><20ms<\/td>\n<\/tr>\n<tr class=\"row-24\">\n\t<td class=\"column-1\">Physical Disk<\/td><td class=\"column-2\">Avg. Disk Sec\/Write<\/td><td class=\"column-3\">Average time for one write<\/td><td class=\"column-4\"><20ms<\/td>\n<\/tr>\n<tr class=\"row-25\">\n\t<td class=\"column-1\">Physical Disk<\/td><td class=\"column-2\">%Disk Time<\/td><td class=\"column-3\">Busy disk time<\/td><td class=\"column-4\"><50%<\/td>\n<\/tr>\n<tr class=\"row-26\">\n\t<td class=\"column-1\">Physical Disk<\/td><td class=\"column-2\">Disk Reads\/Sec<\/td><td class=\"column-3\">Rate of read operations on the disk.<\/td><td class=\"column-4\"><85% of disk capacity<\/td>\n<\/tr>\n<tr class=\"row-27\">\n\t<td class=\"column-1\">Physical Disk<\/td><td class=\"column-2\">Disk Writes\/Sec<\/td><td class=\"column-3\">Rate of write operations on the disk.<\/td><td class=\"column-4\"><85% of disk capacity<\/td>\n<\/tr>\n<tr class=\"row-28\">\n\t<td class=\"column-1\">Access Methods<\/td><td class=\"column-2\">Full Scans\/sec<\/td><td class=\"column-3\">Table or full Index Scans. Can indicate further need for optimization with new indexes.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-29\">\n\t<td class=\"column-1\">Access Methods<\/td><td class=\"column-2\">Index Searches\/sec<\/td><td class=\"column-3\">Index Range scans, single index record fetch, reposition within index<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-30\">\n\t<td class=\"column-1\">Access Methods<\/td><td class=\"column-2\">Range Scans\/sec<\/td><td class=\"column-3\">Range scans through indexes<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-31\">\n\t<td class=\"column-1\">Access Methods<\/td><td class=\"column-2\">Page Splits \/ Sec<\/td><td class=\"column-3\">Number of page splits as a result of overflowing index pages  Indicate fragmentation<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-32\">\n\t<td class=\"column-1\">Access Methods<\/td><td class=\"column-2\">Forwarded Records\/sec<\/td><td class=\"column-3\">Records fetched through forwarded record pointers. Indicate fragmentation<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-33\">\n\t<td class=\"column-1\">Access Methods<\/td><td class=\"column-2\">Table Lock Escalations\/sec<\/td><td class=\"column-3\">Locks escalations to table lock<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-34\">\n\t<td class=\"column-1\">SQL Statistics<\/td><td class=\"column-2\">Batch Requests\/sec<\/td><td class=\"column-3\">Number of batch requests received by server. Indicates load<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-35\">\n\t<td class=\"column-1\">SQL Statistics<\/td><td class=\"column-2\">SQL Compilations\/sec<\/td><td class=\"column-3\">Compiles. Hard parses for first time<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-36\">\n\t<td class=\"column-1\">SQL Statistics<\/td><td class=\"column-2\">SQL Re-Compilations\/sec<\/td><td class=\"column-3\">Re-compiles. Hard parses for existing sql. High number might indicate not use of bind variables<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-37\">\n\t<td class=\"column-1\">General Statistics<\/td><td class=\"column-2\">Processes blocked<\/td><td class=\"column-3\">Blocked processes<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-38\">\n\t<td class=\"column-1\">General Statistics<\/td><td class=\"column-2\">User Connections<\/td><td class=\"column-3\">Used for calculating a baseline<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-39\">\n\t<td class=\"column-1\">Databases<\/td><td class=\"column-2\">Transactions\/sec<\/td><td class=\"column-3\">Used for calculating a baseline<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-40\">\n\t<td class=\"column-1\">Databases<\/td><td class=\"column-2\">Log Growths<\/td><td class=\"column-3\">Number of log growths<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-41\">\n\t<td class=\"column-1\">Databases<\/td><td class=\"column-2\">Percent Log Used<\/td><td class=\"column-3\">Log usage<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-42\">\n\t<td class=\"column-1\">Locks<\/td><td class=\"column-2\">Average Wait Time (ms)<\/td><td class=\"column-3\">Lock average wait<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-43\">\n\t<td class=\"column-1\">Locks<\/td><td class=\"column-2\">Number of Deadlocks\/sec<\/td><td class=\"column-3\">Deadlocks per second<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-44\">\n\t<td class=\"column-1\">Locks<\/td><td class=\"column-2\">Lock Requests\/sec<\/td><td class=\"column-3\">New locks and lock conversions<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-45\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Lock Waits<\/td><td class=\"column-3\">Processes waiting on a lock.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-46\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Log Buffer Waits<\/td><td class=\"column-3\">Processes  waiting for log buffer to be available.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-47\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Log Write Waits<\/td><td class=\"column-3\">Processes waiting for log buffer to be written.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-48\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Memory grant queue waits<\/td><td class=\"column-3\">Processes waiting for memory grant to become available.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-49\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Network IO waits<\/td><td class=\"column-3\">Processes waiting for Network IO.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-50\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Non-Page latch waits<\/td><td class=\"column-3\">Processes waiting for Non-page latches.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-51\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Page IO latch wait<\/td><td class=\"column-3\">Processes waiting for Page IO latches.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-52\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Page Latch waits<\/td><td class=\"column-3\">Processes waiting for Page latches, not including IO latches<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-53\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Thread-safe memory objects waits<\/td><td class=\"column-3\">Processes waiting on thread-safe memory allocators.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-54\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Transaction ownership waits<\/td><td class=\"column-3\">Processes synchronizing access to transaction.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-55\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Wait for the worker<\/td><td class=\"column-3\">Processes waiting for worker to become available.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<tr class=\"row-56\">\n\t<td class=\"column-1\">Wait Statistics<\/td><td class=\"column-2\">Workspace synchronization waits<\/td><td class=\"column-3\">Processes synchronizing access to workspace.<\/td><td class=\"column-4\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":104,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mssql"],"blocksy_meta":[],"_links":{"self":[{"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":4,"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":255,"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/posts\/246\/revisions\/255"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/media\/104"}],"wp:attachment":[{"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/130.61.57.200\/index.php\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}