Monitoring database counters can help administrators maintain Exchange 2007 mailbox server health. Microsoft Exchange Server expert Brien Posey explains some important database counters and threshold values and offers advice on spotting potential mailbox server problems. MSExchange Database ==> Instances(*)*\Log Generation Checkpoint Depth counter -- There are a few counters you can use to spot database performance problems -- this is the most important one. If the current process fails, Exchange Server must either undo or redo the process to keep a partial transaction from remaining in the database. This counter indicates the amount of work involved in fixing the database if needed. According to Microsoft, this counter will usually display a value between 20 and 30 for a healthy Exchange 2007 mailbox server (per-storage group). Higher values may indicate that there is either a long running transaction (perhaps a message with a very large attachment), or a disk bottleneck. A higher value isn't considered problematic unless it exceeds 500. MSExchange Database (Information Store) \ Database Page Fault Stalls/Sec counter -- This counter is incremented each time the database cache manager allocates a new page from the database cache. This counter should remain at zero. Higher values indicate that Exchange is not removing dirty pages from the database fast enough. MSExchange Database (Information Store)\Log Record Stalls/sec counter -- This counter tells how many log records Exchange failed to write to log buffers each second because the buffers are full. Ideally, this counter should remain at zero most of the time, with an average value of 10 or less. If you set an alert based on this counter, the threshold value should be set at 100. This is the highest spike that Microsoft considers acceptable for a healthy server. Higher spikes or averages greater than 10 may indicate high I/O write latencies. MSExchange Database (Information Store)\Version Buckets Allocated counter -- This is a somewhat obscure yet vital counter to monitor. By default, Exchange 2007 has a maximum of 16,384 version buckets. If more than 70% of these buckets have been allocated, Exchange is at risk of depleting the version store. Because of this, the counter should remain at 12,000 or less. MSExchange Database Instances(*)\I/O Database Reads Average Latency counter and the MSExchange Database Instances (*)\I/O Database Writes Average Latency counter -- The database read latency should register as 20 milliseconds or less on average, but spikes of up to 50 milliseconds are acceptable. Database writes take a bit longer, so they should be 50 milliseconds or less on average. These can spike up to 100 milliseconds, as long as database page fault stalls are not occurring. MSExchange Database (Information Store)\Database Cache Hit% counter -- This counter shows you the percentage of database file page requests that the database cache fulfilled, instead of having Exchange perform a file operation. If users are operating in Outlook cached mode, this number should remain above 99%. If the majority of your clients are operating Outlook online, or if they're accessing Exchange through OWA, this number should remain above 90%. Lower numbers indicate that the database cache size is too small. You can usually fix this problem by adding additional memory to the mailbox server.