{"id":1817,"date":"2013-06-21T11:00:13","date_gmt":"2013-06-21T15:00:13","guid":{"rendered":"http:\/\/3.209.169.194\/blogs\/jonathan\/?p=1817"},"modified":"2017-09-25T22:23:12","modified_gmt":"2017-09-26T02:23:12","slug":"the-accidental-dba-day-21-of-30-essential-perfmon-counters","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/","title":{"rendered":"The Accidental DBA (Day 21 of 30): Essential PerfMon counters"},"content":{"rendered":"<p><em>This month the SQLskills team is presenting a series of blog posts aimed at helping Accidental\/Junior DBAs &#8216;keep the SQL Server lights on&#8217;. It&#8217;s a little taster to let you know what we cover in our\u00a0<a href=\"https:\/\/www.sqlskills.com\/sql-server-training\/ie0\/?utm_source=accidentaldba&amp;utm_medium=blogs&amp;utm_campaign=training\" target=\"_blank\" rel=\"noopener noreferrer\">Immersion Event for The Accidental\/Junior DBA<\/a>, which we present\u00a0<a href=\"https:\/\/www.sqlskills.com\/sql-server-training\/immersion-events-schedule\/?utm_source=accidentaldba&amp;utm_medium=blogs&amp;utm_campaign=training\" target=\"_blank\" rel=\"noopener noreferrer\">several times each year<\/a>. You can find all the other posts in this series at\u00a0<a href=\"https:\/\/www.SQLskills.com\/help\/accidental-dba\/?utm_source=accidentaldba&amp;utm_medium=blogs&amp;utm_campaign=training\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/www.SQLskills.com\/help\/AccidentalDBA<\/a>. Enjoy!<\/em><\/p>\n<p>So far this week, Erin has covered the importance of having a baseline of your SQL Server performance, some of the tools for collecting and analyzing the information collected, and Kimberly has talked about some of the important DMVs. In this post we&#8217;ll take a look at some of the most common performance counters for SQL Server, what they mean, and which ones are the most important for routine monitoring to identify problems with SQL Server.<\/p>\n<h2>PAL Template<\/h2>\n<p>Erin talked about the PAL tool earlier this week and mentioned the template that is provided by the tool for creating a Data Collector Set in Performance Monitor to capture SQL Server-specific performance counters. You can see how to do this in the article that Erin linked to,\u00a0<a title=\"Free Tools for the DBA: PAL Tool\" href=\"https:\/\/www.simple-talk.com\/sql\/sql-tools\/free-tools-for-the-dba-pal-tool\/\">Free Tools for the DBA: PAL Tool<\/a>\u00a0if you haven&#8217;t already looked at this. \u00a0As a DBA, I loved the PAL tool for it&#8217;s simplicity and the time it saved me configuring performance counter collections on each of my SQL Servers, and then the time it saved me analyzing the data that was collected.<\/p>\n<p>However, the PAL tool has its limitations, and one of the limitations is that it applies fixed thresholds to certain performance counters, and it uses thresholds that have been published since SQL Server 2000 by Microsoft without major updates. Until just last week, the SQL Server template applied a fixed threshold of 300 to the analysis of Page Life Expectancy which doesn&#8217;t fit the changes in server hardware memory sizes that have occurred since that value was first published. \u00a0Now the template analyzes the Page Life Expectancy based on the value you specify as being normal for the server, or a default of 700 if no value is defined.<\/p>\n<h2>Essential Counters<\/h2>\n<p>While the PAL template for SQL Server is very comprehensive, I also maintain a short list of performance counters that I use for spot checking server performance periodically. \u00a0To simplify covering each of the counters, why it&#8217;s important and what to look for, we&#8217;ll look at counters for CPU, memory, and the disk separately, starting with CPU.<\/p>\n<h3>CPU Usage<\/h3>\n<ul>\n<li>Processor\n<ul>\n<li>%Processor Time<\/li>\n<li>%Privileged Time<\/li>\n<\/ul>\n<\/li>\n<li>Process (sqlservr.exe)\n<ul>\n<li>%Processor Time<\/li>\n<li>%Privileged Time<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The <em>Processor\\%Processor Time<\/em> counter is probably the most familiar counter in performance monitor and gives us information about the total CPU usage for the server we are looking at unless it is a virtual machine. \u00a0For virtual machines (VMs), the <em>Processor\\%Processor Time<\/em> counter is not a reliable measure of actual CPU usage for the server, and instead shows the percentage of the allocated CPU resources that the VM is actually using at a given point in time. \u00a0High values for <em>% Processor \u00a0Time<\/em> in a VM need to be checked against the host performance counters for the VM to determine if the VM is contending for physical CPU allocations with other guest VMs on the same host or not. In addition to the Processor counter we also want to collect the <em>Process (sqlservr.exe)\\%Processor Time<\/em> counter to be able to balance whether a high CPU condition is actually the result of SQL Server utilization or another application that might be running on the server. \u00a0For most SQL Server workloads the average processor usage over time should be fairly consistent and unexplained increases from the baseline trending should be investigated further. \u00a0Values greater than 80% consistently should also be investigated to determine if the workload is exceeding the current hardware capabilities or for problems that are increasing the overall CPU usage for the instance.<\/p>\n<h3>Memory Usage<\/h3>\n<ul>\n<li>Memory\n<ul>\n<li>Available Mbytes<\/li>\n<\/ul>\n<\/li>\n<li>SQL Server:Buffer Manager\n<ul>\n<li><span style=\"font-size: 13px; line-height: 19px;\">Lazy writes\/sec<\/span><\/li>\n<li>Page life expectancy<\/li>\n<li>Page reads\/sec<\/li>\n<li>Page writes\/sec<\/li>\n<\/ul>\n<\/li>\n<li>SQL Server:Memory Manager\n<ul>\n<li><span style=\"font-size: 13px; line-height: 19px;\">Total Server Memory (KB)<\/span><\/li>\n<li>Target Server Memory (KB)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The first counter that I start with when looking at memory usage on a SQL Server is the <em>Memory\\Available MBytes<\/em> counter. \u00a0I start with this counter first to determine if Windows is experiencing memory pressure, which would affect the SQL Server performance counter values potentially. \u00a0The <em>Memory\\Available MBytes<\/em> counter should ideally be above 150-300MB for the server, which leaves memory available for other applications to run without pushing Windows into a low memory condition. \u00a0When the <em>Available MBytes<\/em> counter drops below 64MB, on most servers Windows signals a low memory notification that SQL Server monitors for, and the SQLOS ( the &#8216;operating system&#8217;) inside of SQL Server will reduce memory usage as a result of this notification occurring.<\/p>\n<p>After confirming that Windows has available memory to prevent SQL Server from shrinking memory usage, the next counters I generally look at are <em>Buffer Manager\\Page life expectancy<\/em> and <em>Lazy writes\/sec<\/em>. \u00a0The <em>Page life expectancy<\/em> (PLE) should be generally consistent on average, but may fluctuate with changes in the server workload, with lower values at peak periods. \u00a0In general, the more memory allocated to a SQL Server instance, the higher I&#8217;d like to see this counter&#8217;s normal value. \u00a0For example, a server with 230GB RAM allocated to the SQL Server buffer pool and a PLE of 300 would equate roughly to 785MB\/sec of I\/O activity to maintain the page churn inside of the buffer pool. \u00a0While it might be possible for the I\/O subsystem to keep up with this demand, this represents a significant amount of page churn in the buffer pool and may be a sign of missing indexes, implicit conversions due to mismatched data types, and all kinds of other problems that can be fixed if identified as the root cause.<\/p>\n<p>If you find a low PLE for the server, look at the other performance counters in the <em>Buffer Manager<\/em> category for correlation of overall memory pressure inside of SQL Server. \u00a0If <em>Lazy writes\/sec<\/em> is consistently experiencing non-zero values with a low PLE and elevated values for <em>Page reads\/sec<\/em> and <em>Page writes\/sec<\/em> the server is experiencing buffer pool contention and you will need to go about troubleshooting this problem further. \u00a0If the <em>Memory\\Available MBytes<\/em> counter was fluctuating and under the 64MB low memory threshold, looking at the <em>Memory Manager\\Total Server Memory (KB)<\/em> and <em>Target Server Memory (KB)<\/em> counters will tell you if that has resulted in SQL Server reducing the size of the buffer pool in response. \u00a0On a stable system <em>Total Server Memory (KB)<\/em> will be lower than <em>Target Server Memory (KB)<\/em> during the initial buffer pool ramp up, but then remain equal under normal operation unless a low memory condition occurs. \u00a0If the server is a VM running on VMware, look for memory ballooning by the host with the VM <em>Memory\\Memory Ballooned (MB)<\/em> counter for non-zero values to see if the host is causing the low memory condition.<\/p>\n<h3>Disk Usage<\/h3>\n<ul>\n<li>Physical Disk\n<ul>\n<li>\n<div>Avg. Disk sec\/Read<\/div>\n<\/li>\n<li>Avg. Disk Bytes\/Read<\/li>\n<li>\n<div>Avg. Disk sec\/Write<\/div>\n<\/li>\n<li>Avg. Disk Bytes\/Write<\/li>\n<\/ul>\n<\/li>\n<li>Paging File\n<ul>\n<li>%Usage<\/li>\n<\/ul>\n<\/li>\n<li>SQL Server:Access Methods\n<ul>\n<li>Forwarded Records\/sec<\/li>\n<li>Full Scans\/sec<\/li>\n<li>Index Searches\/sec<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The <em>Avg. Disk sec\/Read<\/em> and \/<em>Write<\/em> counters provide the current average latency for each of the disks on the server. \u00a0Latency is one of the most important metrics for SQL Server I\/O performance, but the latency should be compared to the size of I\/Os that are being performed before determining whether or not a specific value is an indicator of a problem or not. \u00a0As the size of the I\/O operations increases, so does the latency for the operation, so it would be normal to see higher latency values for a reporting workload doing large table scans vs. a transactional workload with smaller I\/O operations occurring. \u00a0The Microsoft general recommendations for I\/O latency for SQL Server are:<\/p>\n<div>\n<ul>\n<li><span style=\"font-size: 13px; line-height: 19px;\">&lt; 8ms: excellent<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 19px;\">&lt; 12ms: good<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 19px;\">&lt; 20ms: fair<\/span><\/li>\n<li><span style=\"font-size: 13px; line-height: 19px;\">&gt; 20ms: poor<\/span><\/li>\n<\/ul>\n<\/div>\n<p>Over the last two years consulting, only a few of the servers that I&#8217;ve looked at during health checks meet the &lt;20ms latency numbers for data and log files. \u00a0Most servers tend to fall into the &lt; 30ms range for I\/O latency per disk on average. \u00a0SSDs are changing this rapidly, and we&#8217;re seeing more and more disk configurations that include SSDs and the result is very low I\/O latency. \u00a0When looking at our overall I\/O for the server, reviewing the Access Method counters for <em>Full Scans\/sec<\/em>, <em>Forwarded Records\/sec<\/em>, and <em>Index Searches\/sec<\/em> can give us a clue to the type of workload that is occurring to generate the I\/O.<\/p>\n<h2>Summary<\/h2>\n<p>An important consideration when looking at performance counters, or any monitoring data from SQL Server for that matter, is that no single data point will tell you the root cause of a problem, if one occurs. For performance counters, you need to look across multiple counters for correlating information to pinpoint the root of problems.<\/p>\n<p>For example, if we look at disk I\/O and see high latency numbers with lower I\/O sizes on average, we could infer that we have a disk bottleneck and we need to improve our I\/O performance. However, if we look at the <em>Buffer Manager\\Page life expectancy<\/em> and find that it is lower than our normal baseline numbers for the server, and then see the <em>Buffer Manager\\Page Reads\/sec<\/em> is higher than usual, the data would point to a memory contention in the buffer pool which is going to affect I\/O performance to keep up with the page churn occurring in the buffer pool.<\/p>\n<p>Understanding the counters and how they relate makes it much easier to spot when problems are occurring and then pinpoint where the actual root of the problem might be.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This month the SQLskills team is presenting a series of blog posts aimed at helping Accidental\/Junior DBAs &#8216;keep the SQL Server lights on&#8217;. It&#8217;s a little taster to let you know what we cover in our\u00a0Immersion Event for The Accidental\/Junior DBA, which we present\u00a0several times each year. You can find all the other posts in [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,49],"tags":[],"class_list":["post-1817","post","type-post","status-publish","format-standard","hentry","category-database-administration","category-performance-tuning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Accidental DBA (Day 21 of 30): Essential PerfMon counters - Jonathan Kehayias<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Accidental DBA (Day 21 of 30): Essential PerfMon counters - Jonathan Kehayias\" \/>\n<meta property=\"og:description\" content=\"This month the SQLskills team is presenting a series of blog posts aimed at helping Accidental\/Junior DBAs &#8216;keep the SQL Server lights on&#8217;. It&#8217;s a little taster to let you know what we cover in our\u00a0Immersion Event for The Accidental\/Junior DBA, which we present\u00a0several times each year. You can find all the other posts in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/\" \/>\n<meta property=\"og:site_name\" content=\"Jonathan Kehayias\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-21T15:00:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-09-26T02:23:12+00:00\" \/>\n<meta name=\"author\" content=\"Jonathan Kehayias\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kehayias\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/\"},\"author\":{\"name\":\"Jonathan Kehayias\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"headline\":\"The Accidental DBA (Day 21 of 30): Essential PerfMon counters\",\"datePublished\":\"2013-06-21T15:00:13+00:00\",\"dateModified\":\"2017-09-26T02:23:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/\"},\"wordCount\":1677,\"commentCount\":3,\"articleSection\":[\"Database Administration\",\"Performance Tuning\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/\",\"name\":\"The Accidental DBA (Day 21 of 30): Essential PerfMon counters - Jonathan Kehayias\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\"},\"datePublished\":\"2013-06-21T15:00:13+00:00\",\"dateModified\":\"2017-09-26T02:23:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Database Administration\",\"item\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/category\\\/database-administration\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The Accidental DBA (Day 21 of 30): Essential PerfMon counters\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/\",\"name\":\"Jonathan Kehayias - The Rambling DBA\",\"description\":\"The Rambling DBA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sqlskills.com\\\/blogs\\\/jonathan\\\/#\\\/schema\\\/person\\\/01c10d94f3648654ef706d5e6305f69c\",\"name\":\"Jonathan Kehayias\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g\",\"caption\":\"Jonathan Kehayias\"},\"sameAs\":[\"http:\\\/\\\/3.209.169.194\\\/blogs\\\/jonathan\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Accidental DBA (Day 21 of 30): Essential PerfMon counters - Jonathan Kehayias","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/","og_locale":"en_US","og_type":"article","og_title":"The Accidental DBA (Day 21 of 30): Essential PerfMon counters - Jonathan Kehayias","og_description":"This month the SQLskills team is presenting a series of blog posts aimed at helping Accidental\/Junior DBAs &#8216;keep the SQL Server lights on&#8217;. It&#8217;s a little taster to let you know what we cover in our\u00a0Immersion Event for The Accidental\/Junior DBA, which we present\u00a0several times each year. You can find all the other posts in [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/","og_site_name":"Jonathan Kehayias","article_published_time":"2013-06-21T15:00:13+00:00","article_modified_time":"2017-09-26T02:23:12+00:00","author":"Jonathan Kehayias","twitter_misc":{"Written by":"Jonathan Kehayias","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/#article","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/"},"author":{"name":"Jonathan Kehayias","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"headline":"The Accidental DBA (Day 21 of 30): Essential PerfMon counters","datePublished":"2013-06-21T15:00:13+00:00","dateModified":"2017-09-26T02:23:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/"},"wordCount":1677,"commentCount":3,"articleSection":["Database Administration","Performance Tuning"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/","name":"The Accidental DBA (Day 21 of 30): Essential PerfMon counters - Jonathan Kehayias","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website"},"datePublished":"2013-06-21T15:00:13+00:00","dateModified":"2017-09-26T02:23:12+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/the-accidental-dba-day-21-of-30-essential-perfmon-counters\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/"},{"@type":"ListItem","position":2,"name":"Database Administration","item":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/category\/database-administration\/"},{"@type":"ListItem","position":3,"name":"The Accidental DBA (Day 21 of 30): Essential PerfMon counters"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/","name":"Jonathan Kehayias - The Rambling DBA","description":"The Rambling DBA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/#\/schema\/person\/01c10d94f3648654ef706d5e6305f69c","name":"Jonathan Kehayias","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86630e27f5deecc5c393ea57fc7c3b6a068949f4fd6b5309f81de5a276f12855?s=96&d=mm&r=g","caption":"Jonathan Kehayias"},"sameAs":["http:\/\/3.209.169.194\/blogs\/jonathan"]}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/1817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/comments?post=1817"}],"version-history":[{"count":1,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/1817\/revisions"}],"predecessor-version":[{"id":2112,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/posts\/1817\/revisions\/2112"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/media?parent=1817"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/categories?post=1817"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/jonathan\/wp-json\/wp\/v2\/tags?post=1817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}