// Week 24: Database Maintenance

SQL Server t-sql 5 min.

featured image Week 24: Database Maintenance Wow, time goes by! Welcome back to the last and final installment of the SQL Server Performance Tuning series. Today I will talk in more details about database maintenance in SQL Server, especially about index maintenance operations, and how to perform database maintenance. Index Maintenance Database maintenance is a very crucial part for your job as a DBA to make sure that you get the best possible performance out of your database. [...]

// Week 23: TempDb

SQL Server t-sql 5 min.

featured image Week 23: TempDb In today’s installment of the SQL Server Performance Tuning series we talk about TempDb - the public toilet of SQL Server, as I describe that special database in SQL Server. Everyone of us uses TempDb regularly. Some people use it directly, some people use it indirectly. Today I want to give you an overview of TempDb usage in SQL Server, and I will give you some best practices on how to configure TempDb for better performance. [...]

// Week 22: Wait & I/O Latency Statistics

SQL Server t-sql 4 min.

featured image Week 22: Wait & I/O Latency Statistics Hello and welcome back to the 22th week of the SQL Server Performance Tuning series. Last week I have talked about baselining in SQL Server, and today I will continue by talking about Wait Statistics and I/O Latency Statistics in SQL Server. When I perform SQL Server Health Checks, I always use these two metrics to get the big picture about the health of SQL Server. Wait Statistics Every time you execute a query in SQL Server, the query will wait. [...]

// Week 21: Performance Monitoring

SQL Server t-sql 4 min.

featured image Week 21: Performance Monitoring Hello and welcome back to the last and final month of the SQL Server Performance Tuning series. Over the last 5 months we have covered various performance related topics about SQL Server, and we have covered specific performance tuning techniques and problems. But what are your options, when you have a SQL Server in front of you that doesn’t perform as expected? To help you with that situation, we will cover performance monitoring techniques today, and next week we will have a more detailed look at the so-called Wait Statistics in SQL Server. [...]

// Week 20: Deadlocking

SQL Server t-sql 4 min.

featured image Week 20: Deadlocking Hello and welcome back to the SQL Server Performance Tuning series. Today we will complete the 5th month by talking about Deadlocking in SQL Server. A deadlock occurs when 2 queries are waiting for each other, and no query can continue its work anymore. In the first step I want to give you an overview how SQL Server handles deadlocks. And finally I will show you some specific deadlock types in SQL Server, and how you can avoid and resolve them. [...]

// Week 19: Lock Escalations

SQL Server t-sql 4 min.

featured image Week 19: Lock Escalations Hello and welcome back to the SQL Server Performance Tuning seriesn. In the last 2 weeks we have talked about pessimistic and optimistic locking in SQL Server. Today I want to talk about one phenomenon in SQL Server that is specific to locking: so-called Lock Escalations. Before we go into the details of that problem, I want to talk a little bit more about the Lock Hierarchy that SQL Server uses internally. [...]

// Week 18: Optimistic Concurrency

SQL Server t-sql 3 min.

featured image Week 18: Optimistic Concurrency Hello and welcome back to the SQL Server Performance Tuning series. Last week I have kicked-off the 5th month of the training plan by talking about pessimistic concurrency. Today we will continue by talking about Optimistic Concurrency. Row Versioning Optimistic concurrency was introduced back with SQL Server 2005 and is based on the principle of Row Versioning. The idea behind row versioning is that readers (SELECT queries) don’t acquire shared locks anymore. [...]

// Week 17: Pessimistic Concurrency

SQL Server t-sql 4 min.

featured image Week 17: Pessimistic Concurrency Hello and welcome back to the SQL Server Performance Tuning series. Today marks the beginning of the 5th month where we will talk about Locking, Blocking, and Deadlocking in SQL Server. SQL Server provides you a pessimistic and a optimistic concurrency model that define how concurrent queries are executed. In todays installment I want to give you an overview about the various isolation levels that are part of the pessimistic concurrency model, and next week I will talk in more details about the optimistic isolation levels that were introduced back with SQL Server 2005. [...]

// Week 16: Cardinality Estimation From SQL Server 2014

SQL Server t-sql 3 min.

featured image Week 16: Cardinality Estimation From SQL Server 2014 Hello and welcome back to the SQL Server Performance Tuning series. In the last week we have talked about some problems with the cardinality estimation process in SQL Server. Today we will continue, and we will have a more detailed look on the shiny new Cardinality Estimator that is introduced with SQL Server 2014. The new Cardinality Estimator One of the enhancements in SQL Server 2014 is a new Cardinality Estimator. [...]

// Week 15: Problems With Cardinality Estimation

SQL Server t-sql 3 min.

featured image Week 15: Problems With Cardinality Estimation Hello and welcome back to the SQL Server Performance Tuning series. In the last 2 weeks you have read about statistics, why they are important and how they look like internally in SQL Server. In today’s installment I’m talking about a few limitations that the current Cardinality Estimation has, and how you can overcome these problems by applying various techniques. Cardinality Estimation Errors As you have seen last week, SQL Server uses the Histogram and the Density Vector for the Cardinality Estimation, when an execution plan gets compiled. [...]