SQL Server Performance

  • Home
  • Articles
  • Forums
  • Tips
  • Training
  • FAQ's
  • Blogs
  • Software
  • Books
  • About Us
RSS Feeds
Sign in | Join


Article Topics

All Articles
Performance Tuning
Audit
Business Intelligence
Clustering
Reporting Services
SQL Azure
Developer
General DBA
ASP.NET / ADO.NET
SQL Azure

USEFUL SITES :

ASP.NET Tutorials
Windows and SQL Azure Tutorials
Cloud Hosting Magazine
SharePoint Tutorials
Windows Server Help

Write for Us

Share your SQL Server knowledge with others and raise your profile in the community More...
Latest Articles

A High Level Comparison Between Oracle and SQL Server - Part ...
A High Level Comparison Between Oracle and SQL Server - Part ...
A High Level Comparison Between Oracle and SQL Server - Part ...
A High Level Comparison Between Oracle and SQL Server

More     
 
Latest FAQ's

Add Node to A SQL Server failover Cluster failed with invalid ...
SQL Server Destination remote server error
Setting Up Data And Log Files For SQL Server
Will Check Constraints Improve Database Performance?

More     
   
Latest Software Reviews

dbForge Review
Spotlight on ApexSQL Diff - Server-based database comparison tool ...
Spotlight on ApexSQL Data Diff - Server-based database comparison tool ...
Spotlight on ApexSQL Doc 2008

More     

articles >> performance tuning >> 10 Baselining Tips for SQL Server: Lessons ...

10 Baselining Tips for SQL Server: Lessons From the Field

By : Geert Vanhove
Jul 31, 2005

“A known value against which later measurements can be compared” is one of many definitions for SQL Server baselining. In this article I want to share my findings with you on this subject.

This document is the first in a series of four where I want to cover subjects as baselining (this article), monitoring, stress testing, and the interpretation of performance behavior (articles in the pipeline).
These will not be theoretical essays, but lessons from the field. Look on it as a collection of features that I found seldom, or not at all covered in other articles. Where possible, I want to give concrete answers to questions like:

  • What set of counters must be logged?

  • What should my monitoring architecture look like?

  • Is it bad to have a value x for counter y?

It is my intention to give you a list of tips -- building upon BOL, not repeating it -- which will be useful when you establish your monitoring environment from which your baselines will be produced. Storing and analyzing logged information over an extended period of time is the take-off point of any baselining scenario.

In a second article, I will go deeper into detail on how to set up online and analytical system monitoring and alerting. A third article will cover dos and don’ts on how to set up a stress test environment The last article will discuss how to interpret the results of our monitoring processes.

For all four articles, I’ll stick with Microsoft out-of-the-box tools, like Performance Monitor (PerfMon) and SQL Profiler, tools everyone is familiar with. You’ll be surprised to see the real power that comes with them.

I don’t pretend for this list to be complete, or the way to go. Some of these tips are just nice-to-know; others are indispensable in my eyes. Most important for me is that you don't lose time figuring out the things I have already spent time on.

In this article, I won’t bore you with an exposition on what baselining means and why you should monitor. I’m convinced everybody can find some definition on the Internet, and I hope everyone is convinced that baselining and monitoring is essential for all your production SQL Server systems.

When I get called for a ‘performance’ intervention, once on site, I notice too often that no decent logging of system behavior is available, which makes it more difficult to troubleshoot performance issues. I’ll give you some practical tips you can use to set up monitoring. Baselines will be produced from these monitoring results.

Remember: To count is to know.

This document is applicable to SQL 2000, as well as SQL 2005, unless specifically mentioned.

 

Tip 1: Set Up Your Monitoring System

We will be concentrating on two Microsoft out-of-the-box tools: Performance Monitor (PerfMon) and SQL Profiler.

Of course, at some point in time these tools will show there limitations and other will come into the picture. But for the scope of this set of articles, and for a first time intervention at a client’s site who has performance issues, PerfMon and SQL Profiler will often be your only companions.

These tools also have a number of advantages compared to third-party monitoring tools:

  • They are widely accepted in Microsoft environments, and that is what we are focusing on. The client is often not keen on installing and using software on its production environment they aren’t familiar with.

  • Third-party monitoring tools often have features I’m not interested in (e.g. page splits in msdb), but nevertheless generate additional overhead.

  • Third-party monitoring tools often lack flexibility, e.g., in what can be done with logged data.

I prefer data to be accessible, so I can integrate them in my own tools the way I want to, and not in some vendor proprietary black box. But flexibility has its price.

To use PerfMon and SQL Profiler, you ideally should use a dedicated monitoring server with sufficient disk capacity to save resources on you production servers (>10 GB per system monitored on condition that you have archiving in place). This way one central system can trace multiple remote systems, storing its data centrally.

Collect PerfMon Counters

One exception to this rule is the way PerfMon should collect its data. To avoid making expensive DCOM call's to your database production system, you can run PerfMon locally on the DB server you want to monitor. If you think this generates too much overhead on your system, check all counters with Instance Name = smlogsvc (this is the service responsible for PerfMon). My experience tells me it’s not as bad as some people say.

A default interval of 15 seconds can be retained in a first phase. A detailed set of counters to be included is listed in tip 5. Results can better be redirected to your monitoring server to limit disk I/O pressure. Here, check network counters (bandwidth).

 


    Next Page>>    








C# Help and Tutorials | PHP MySQL Tutorial | Sharepoint Tutorial | Azure Tutorial | Cloud Hosting Magazine | ASP.NET Tutorials | Windows Server Help | Windows Phone Pro | Silverlight Ace | Visual Studio Tutorials | Home | Peformance Articles | Audit Articles | Business Intelligence Articles | Clustering Articles | Developer Articles | Reporting Services Articles | DBA Articles | ASP.NET / ADO.NET Articles | SQL Server Training Videos | DBA FAQ's | Developer Peformance FAQ's | DBA Peformance FAQ's | Developer FAQ's | Clustering FAQ's | Error Messages | Audit Tool Reviews | Backup Tool Reviews | Coding Tool Reviews | Compare Tool Reviews | Documentation Tool Reviews | Design Tool Reviews | Monitoring Tool Reviews | Log Tool Reviews | Reporting Tool Reviews | Clustering Tool Reviews | Security Tool Reviews | Change Management Tool Reviews | Remote Access Tool Reviews | Book Reviews | Security Tool Reviews | ADO.NET / ASP.NET | Administration | Analysis/OLAP Services | Application Development | Configuration | Components | ETL | Hardware | High Availability | Hints | Index | Misc | Operating Systems | Performance Tuning | Replication | T-SQL | Views


              © 2010 Jude O'Kelly. All rights reserved