Natural Born Killers, performance
issues to avoid
Richard Douglas
Editor in chief of SQLServerPedia
Natural Born Killer




http://www.flickr.com/photos/merille/4747615138/sizes/z/in/photostream/


2   Natural Born Killers
Adhering to best practices?




http://www.flickr.com/photos/12693492@N04/1338123903/sizes/m/in/photostream/


3   Natural Born Killers
Your host

                           • Richard Douglas
                           • Systems Consultant /
                             Editor in Chief of SQLServerPedia
                           • SQL Server MCITPro
                           • Maidenhead SQL User Group Leader
                           • Blog: http://SQL.RichardDouglas.co.uk
                           • Twitter: @SQLRich
                           • Email: Richard.Douglas@Quest.com
                             Richard_Douglas@Dell.com

4   Natural Born Killers
Agenda
• Statistics

• Table Design

• SELECT pitfalls

• RBAR

• Scalar UDF’s

• Indices

• Key lookups

• Sargability

• Table variables

• Parameter sniffing


5   Natural Born Killers
Statistics

• SQL uses a cost based optimizer
• Costs influenced by statistics




6   Natural Born Killers
Statistics
• Creating Statistics
    – Automatic
    – Manual
       –    CREATE STATISTICS
       –    Sp_CreateStats

• Updating Statistics
           Permanent Table                  Temporary Table
           1st record                       1st record
           -                                6 records
           LT 500 recs, 500 changes         LT 500 recs, 500 changes
           GT 500 recs, 500 changes + 20%   GT 500 recs, 500 changes + 20%
• Sp_UpdateStats
• UPDATE STATISTICS

7   Natural Born Killers
Table Design




                           http://www.flickr.com/photos/aresauburnphotos/2699269321/sizes/o/in/photost
                           ream/

8   Natural Born Killers
Example of bad design




9   Natural Born Killers
Example of a better design




10   Natural Born Killers
Table Design – Size comparison




11   Natural Born Killers
Good table design benefits
• Minimise the CPU overhead.
• Increase the number of records in the buffer cache.
• Reduce the amount of physical disk IO.
• Reduce the amount of network traffic.
• Reduce the data file size(s).
• Reduce the working size of the Transaction Log.
• Reduce Full/Diff /T-Log backup file size.
  Thereby increasing your ability to deliver your RTO.
• Keep transaction time to a minimum.
12   Natural Born Killers
Source: http://cheezburger.com/View/5939764992


13   Natural Born Killers
SELECT *
• Returns all data from one or more tables.
     –   Pulls unnecessary data into the buffer cache
     –   Can result in excessive IO
     –   Increases network activity
     –   Can hide important data in Missing Index DMV’s


• Adding new attributes
     – May break existing code


• Increases code fix time

• SQL Azure
     – Paying for data transfer.



14   Natural Born Killers
SELECT * - A resolution




15   Natural Born Killers
RBAR Vs. Set Based




16   Natural Born Killers
Scalar User Defined Functions

• The Good
     – Re-Usable code


• The Bad
     – Runs once per record in record set
     – They don’t take advantage of parallelism
     – They use Nested Loop joins regardless



• The Ugly
     – So ugly it’s hidden from IO statistics
17   Natural Born Killers
Scalar UDF Solutions and Alternatives

• If you have to use them:
     – View the actual IO usage in Profiler


• If you can replace them:
     – Look at Table Value Functions
     – Look at CLR




18   Natural Born Killers
Indexing strategies
It’s all about DWI knowledge:

                            D W n
                            a o
                                I
                            t   r   t
                            a   k   e
                                l   r
                                o   n
                                a   a
                                d   l
                                    s


19   Natural Born Killers
Golden Rules for Clustered Indexes
Bad example; Surname, Firstname, Middle Initial
• Narrow
                                                 Impacts nonclustered indexes
• Static
• Progressive                                    Fragmentation
• Unique
• Fixed width                                    Space impact
• Not Null
                     This example will have 13 bytes of overhead alone;
                     • 4 byte uniquifier
                     • 2 byte variable offset + 6 bytes for variable length fields
 23
                     • 1 byte for NULL values and NULL bitmap
      Natural Born Killers
Golden Rules for NonClustered Indexes

• Have an optimal clustered key
• Not narrow
• Reduce unnecessary overhead
      – Fixed Width
      – Not null

• Consolidate
• Index foreign keys



 24   Natural Born Killers
Key Lookups – The silent killer




25   Natural Born Killers
Sargability

• SARGable – “Search ARGument able”

• T-SQL functions around a predicate can break
  SARGability

• Some caveats to remember




26   Natural Born Killers
Table Variables Vs. Temp Tables

Table Variables
• Fast when used with small data sets.
• Have a limited scope
• Use less locking and logging resources than temp tables
     – http://sql.richarddouglas.co.uk/archive/2011/06/rollback-gotchas-part-2-2.html

• Estimated statistics always show 1 record
• Cannot be altered after they are declared
• Mythbuster - MAY be memory only, this isn’t guaranteed
• Generally faster with smaller data sets

27   Natural Born Killers
Table Variables Vs. Temp Tables

Temp Tables
• Uses statistics
     – Stat population will cause recompiles (statement level in 2005 +)
     – Can create better plans

• Wider scope
• Can be rolled back
• Can be altered after creation
• Generally faster with larger data sets
28   Natural Born Killers
Parameter Sniffing
• What is it?
     – It’s all a matter of statistics


• How do I know when it will affect me?
     – Monitor the IO and CPU
     – This means baselining your environment


• What are my options?
     – Rewrite dynamic queries
     – Query Hints:
        –    WITH RECOMPILE
        –    OPTIMIZE FOR
     – Plan Guides


29   Natural Born Killers
Demo
30
Free posters, training DVDs, white papers, and more
     http://www.quest.com/landing/?id=5700




1.        SQL Server Blog Aggregator & Wiki at http://www.sqlserverpedia.com.
2.        Product Overviews at http://www.quest.com/sql-server/#c-Performance-
          Management. Plus, http://toadworld.com!
3.        Discussion forums at
          http://sqlserver.quest.com/forumindex.jspa?categoryID=208.
4.        Product video tutorials at http://db-
          management.com/blog/category/sqlserver/tutorials-sqlserver/.
     31   Natural Born Killers
Solution Area                        Product                                         Description

    Backup and
                                                                       Fast, flexible backup and recovery with
    Recovery                                                           industry-leading compression technology



    Performance                                                        Discover and resolve performance issues in
                                                                       production before they impact end users and
    & Operations
                                                                       service levels



    Performance                                                        Deepest possible understanding of database
    Tuning                                                             performance and norms



    Development                                                        Plan and develop applications that deliver
                                                                       both functionality and optimal performance


                                                                       Comprehensive schema, object, security and
    Administration                                                     change management

    Community,
                                    Project                            Community crowdsourcing for SQL Server
    Knowledge,
                                                                       tracing and performance information!
    Training                          Lucy
                     © 2012 Quest Software Inc. All rights reserved.                                        Pg. 32

'Natural born killers, SQL performance issues to avoid'

  • 1.
    Natural Born Killers,performance issues to avoid Richard Douglas Editor in chief of SQLServerPedia
  • 2.
  • 3.
    Adhering to bestpractices? http://www.flickr.com/photos/12693492@N04/1338123903/sizes/m/in/photostream/ 3 Natural Born Killers
  • 4.
    Your host • Richard Douglas • Systems Consultant / Editor in Chief of SQLServerPedia • SQL Server MCITPro • Maidenhead SQL User Group Leader • Blog: http://SQL.RichardDouglas.co.uk • Twitter: @SQLRich • Email: Richard.Douglas@Quest.com Richard_Douglas@Dell.com 4 Natural Born Killers
  • 5.
    Agenda • Statistics • TableDesign • SELECT pitfalls • RBAR • Scalar UDF’s • Indices • Key lookups • Sargability • Table variables • Parameter sniffing 5 Natural Born Killers
  • 6.
    Statistics • SQL usesa cost based optimizer • Costs influenced by statistics 6 Natural Born Killers
  • 7.
    Statistics • Creating Statistics – Automatic – Manual – CREATE STATISTICS – Sp_CreateStats • Updating Statistics Permanent Table Temporary Table 1st record 1st record - 6 records LT 500 recs, 500 changes LT 500 recs, 500 changes GT 500 recs, 500 changes + 20% GT 500 recs, 500 changes + 20% • Sp_UpdateStats • UPDATE STATISTICS 7 Natural Born Killers
  • 8.
    Table Design http://www.flickr.com/photos/aresauburnphotos/2699269321/sizes/o/in/photost ream/ 8 Natural Born Killers
  • 9.
    Example of baddesign 9 Natural Born Killers
  • 10.
    Example of abetter design 10 Natural Born Killers
  • 11.
    Table Design –Size comparison 11 Natural Born Killers
  • 12.
    Good table designbenefits • Minimise the CPU overhead. • Increase the number of records in the buffer cache. • Reduce the amount of physical disk IO. • Reduce the amount of network traffic. • Reduce the data file size(s). • Reduce the working size of the Transaction Log. • Reduce Full/Diff /T-Log backup file size. Thereby increasing your ability to deliver your RTO. • Keep transaction time to a minimum. 12 Natural Born Killers
  • 13.
  • 14.
    SELECT * • Returnsall data from one or more tables. – Pulls unnecessary data into the buffer cache – Can result in excessive IO – Increases network activity – Can hide important data in Missing Index DMV’s • Adding new attributes – May break existing code • Increases code fix time • SQL Azure – Paying for data transfer. 14 Natural Born Killers
  • 15.
    SELECT * -A resolution 15 Natural Born Killers
  • 16.
    RBAR Vs. SetBased 16 Natural Born Killers
  • 17.
    Scalar User DefinedFunctions • The Good – Re-Usable code • The Bad – Runs once per record in record set – They don’t take advantage of parallelism – They use Nested Loop joins regardless • The Ugly – So ugly it’s hidden from IO statistics 17 Natural Born Killers
  • 18.
    Scalar UDF Solutionsand Alternatives • If you have to use them: – View the actual IO usage in Profiler • If you can replace them: – Look at Table Value Functions – Look at CLR 18 Natural Born Killers
  • 19.
    Indexing strategies It’s allabout DWI knowledge: D W n a o I t r t a k e l r o n a a d l s 19 Natural Born Killers
  • 20.
    Golden Rules forClustered Indexes Bad example; Surname, Firstname, Middle Initial • Narrow Impacts nonclustered indexes • Static • Progressive Fragmentation • Unique • Fixed width Space impact • Not Null This example will have 13 bytes of overhead alone; • 4 byte uniquifier • 2 byte variable offset + 6 bytes for variable length fields 23 • 1 byte for NULL values and NULL bitmap Natural Born Killers
  • 21.
    Golden Rules forNonClustered Indexes • Have an optimal clustered key • Not narrow • Reduce unnecessary overhead – Fixed Width – Not null • Consolidate • Index foreign keys 24 Natural Born Killers
  • 22.
    Key Lookups –The silent killer 25 Natural Born Killers
  • 23.
    Sargability • SARGable –“Search ARGument able” • T-SQL functions around a predicate can break SARGability • Some caveats to remember 26 Natural Born Killers
  • 24.
    Table Variables Vs.Temp Tables Table Variables • Fast when used with small data sets. • Have a limited scope • Use less locking and logging resources than temp tables – http://sql.richarddouglas.co.uk/archive/2011/06/rollback-gotchas-part-2-2.html • Estimated statistics always show 1 record • Cannot be altered after they are declared • Mythbuster - MAY be memory only, this isn’t guaranteed • Generally faster with smaller data sets 27 Natural Born Killers
  • 25.
    Table Variables Vs.Temp Tables Temp Tables • Uses statistics – Stat population will cause recompiles (statement level in 2005 +) – Can create better plans • Wider scope • Can be rolled back • Can be altered after creation • Generally faster with larger data sets 28 Natural Born Killers
  • 26.
    Parameter Sniffing • Whatis it? – It’s all a matter of statistics • How do I know when it will affect me? – Monitor the IO and CPU – This means baselining your environment • What are my options? – Rewrite dynamic queries – Query Hints: – WITH RECOMPILE – OPTIMIZE FOR – Plan Guides 29 Natural Born Killers
  • 27.
  • 28.
    Free posters, trainingDVDs, white papers, and more http://www.quest.com/landing/?id=5700 1. SQL Server Blog Aggregator & Wiki at http://www.sqlserverpedia.com. 2. Product Overviews at http://www.quest.com/sql-server/#c-Performance- Management. Plus, http://toadworld.com! 3. Discussion forums at http://sqlserver.quest.com/forumindex.jspa?categoryID=208. 4. Product video tutorials at http://db- management.com/blog/category/sqlserver/tutorials-sqlserver/. 31 Natural Born Killers
  • 29.
    Solution Area Product Description Backup and Fast, flexible backup and recovery with Recovery industry-leading compression technology Performance Discover and resolve performance issues in production before they impact end users and & Operations service levels Performance Deepest possible understanding of database Tuning performance and norms Development Plan and develop applications that deliver both functionality and optimal performance Comprehensive schema, object, security and Administration change management Community, Project Community crowdsourcing for SQL Server Knowledge, tracing and performance information! Training Lucy © 2012 Quest Software Inc. All rights reserved. Pg. 32