Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL Server Stored Procedures Architecture & Performance Victor Isakov MCT, CTT, MSCE, MCDBA

Similar presentations


Presentation on theme: "SQL Server Stored Procedures Architecture & Performance Victor Isakov MCT, CTT, MSCE, MCDBA"— Presentation transcript:

1 SQL Server Stored Procedures Architecture & Performance Victor Isakov MCT, CTT, MSCE, MCDBA sql@informare.com.au

2 © Victor Isakovsql@informare.com.au Victor Isakov (sql@informare.com.au) Victor Isakov has been involved with SQL Server since Version 4.21a, enjoying a reputation as one of the best "SQL Gurus" in the country He has taught the Administration, Development, Data Warehousing and Performance Tuning courses since 1995 in the Australasia-Pacific region and provided consultancy services to companies like the University of NSW, Department of Education and Training, Westpac and the United Nations He specialises as a consultant in Optimising, Troubleshooting and Architecting Database Solutions based on Microsoft technology

3 © Victor Isakovsql@informare.com.au Agenda Stored Procedure Architecture Stored Procedure Optimization Managing Query Plan Performance Undocumented Microsoft Stored Procedures

4 © Victor Isakovsql@informare.com.au Agenda Stored Procedure Architecture Stored Procedure Optimization Managing the Query Plan for Performance. Undocumented Microsoft Stored Procedures

5 © Victor Isakovsql@informare.com.au Stored Procedure Architecture SPs are SQL Server programs Traditionally written in Transact-SQL In Yukon will include VB.NET, C# Provide Query Management Data Modifications Data / Referential Integrity Maintenance Tasks Protect Data Provide Gateway to Database Objects

6 © Victor Isakovsql@informare.com.au Stored Procedure Architecture Stored in Database Protected like other DB objects Logic moved to server Increased Developer Productivity Reusable Code More structured 3-Tier solutions Eliminate needless query plan construction Cached query plans can improve performance

7 © Victor Isakovsql@informare.com.au Compiled Execution Plan Query Changes Stored Procedure Architecture SQL Server Security Unauthorized Stored Procedure SELECT logic Business Rules Constraints

8 © Victor Isakovsql@informare.com.au Execution Plan in Detail Query Plan Re-Entrant, Read-Only Structure Shared Separate Parallel / Serial Plans Execution Context User Context Parameter Values, etc Not Shared Can be Re-Used

9 © Victor Isakovsql@informare.com.au Agenda Stored Procedure Architecture Stored Procedure Optimization Managing the Query Plan for Performance. Undocumented Microsoft Stored Procedures

10 © Victor Isakovsql@informare.com.au CREATE PROCEDURE… Stored Procedure Optimization Parse TSQL Syntax Resolve References Save in Database EXEC @RC=MyProc… Resolve references Optimize Compile Cache (RAM) Execute

11 © Victor Isakovsql@informare.com.au Compilation in Detail

12 © Victor Isakovsql@informare.com.au RAM Cache Stored Procedure Optimization SQL Server 1st instance compiled and QP loaded 2nd instance shares loaded QP (new EC) 3rd instance shares first QP (& 1st EC) 1st instance finishes Data Pages EXEC @RC=MyProc…

13 © Victor Isakovsql@informare.com.au Compilation / Execution in Detail

14 © Victor Isakovsql@informare.com.au Stored Procedures Optimization Ad-hoc Queries Compiled when first used EP potentially cached Subsequent references Query Optimizer compares query with Query-Templates Conservative Use cached plan if it’s recognized Auto-Parameterization Cache (RAM) Data Pages

15 © Victor Isakovsql@informare.com.au Processing T-SQL in Detail

16 © Victor Isakovsql@informare.com.au Stored Procedure Optimization SPs compiled on first use Query plan cached in RAM Subsequent calls generally use cached plan Recompiled if…. Cache (RAM) Data Pages

17 © Victor Isakovsql@informare.com.au Recompilation WITH RECOMPILE in CREATE PROCEDURE or EXECUTE statement Schema changes to referenced objects Table referenced by stored procedure Adding / dropping constraints, defaults, or rules sysobjects.schema_ver Restoring the database or any objects procedure references

18 © Victor Isakovsql@informare.com.au Recompilation Running sp_recompile on table SET Options May affect query result ANSI_DEFAULTSANSI_NULLSANSI_PADDINGANSI_WARNINGSCONCAT_NULL_YIELDS_NULL Certain operations on temporary tables

19 © Victor Isakovsql@informare.com.au Recompilation Interleaving DDL and DML in procedure Server activity ages plan out of cache Table Type Empty Condition Threshold When Empty Threshold When Not Empty Permanent < 500 rows Changes >= 500 Changes >= 500 + (20% of Cardinality) Temporary < 6 rows Changes >= 6 Changes >= 500 Variable Change in Cardinality does not affect Automatic Recompilation

20 © Victor Isakovsql@informare.com.au Profiler Trap SP:Recompile CodeReason 1 Schema, bindings, or permissions changed between compile or execute 2 Statistics changed 3 Object not found at compile time, deferred check to run time 4 Set option changed in batch 5 Temp table schema, binding, or permission changed 6 Remote rowset schema, binding, or permission changed

21 © Victor Isakovsql@informare.com.au Avoiding Recompilation Use sp_executesql Preferred Method Calling Stored Procedure unaffected Use Sub-Procedures Only smaller sub-procedure recompiled Use KEEP PLAN Option SET Options

22 © Victor Isakovsql@informare.com.au Agenda Stored Procedure Architecture Stored Procedures Optimization Managing Query Plan Performance Undocumented Microsoft Stored Procedures

23 © Victor Isakovsql@informare.com.au Query Optimization All input parameters Whether used or not Suitable indexes Data statistics All logic in the procedure Whether or not the code is executed Query Complexity IF

24 © Victor Isakovsql@informare.com.au Query Optimization in Detail

25 © Victor Isakovsql@informare.com.au Managing Query Plan Performance Generated query plan based on parameters Provided by first query (arbitrary) Cached and reused for all subsequent use Regardless of suitability Some queries run normally, others do not

26 © Victor Isakovsql@informare.com.au Managing the Cache Flushing the Cache DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS Tip: Should CHECKPOINT first to ensure all data is flushed, otherwise “dirty” data pages will remain in the cache. Restart SQL Server Power-cycle system

27 © Victor Isakovsql@informare.com.au SQL Server Cache Least-Frequently-Used strategy Least used objects flushed when cache fills Unified cache stores data and procedure pages Lazywriter does know the difference Monitor cache with Perfmon

28 © Victor Isakovsql@informare.com.au Inserting QP into Cache

29 © Victor Isakovsql@informare.com.au Retrieving QP From Cache

30 © Victor Isakovsql@informare.com.au Lazywriter Cache Processing Flow

31 © Victor Isakovsql@informare.com.au Managing Query Plan Performance Recompilation might help performance When “optimized” query is not optimal Cost of recompile insignificant compared to poorly running query Test all parameter combinations Check for consistent plans, performance If query plan varies based on parameters Recompile for each execution? Best to redesign procedure

32 © Victor Isakovsql@informare.com.au Managing Query Plan Performance Recompiling on Demand CREATE PROCEDURE … WITH RECOMPILE Compiles QP each time stored procedure is executed EXECUTE … WITH RECOMPILE When parameters are not “typical” sp_recompile Forces all plans to be recompiled (very cheap) Point to stored procedure, table… Statement-based recompile Dynamic string execution (dangerous, but powerful) Smaller, more-focused procedures

33 © Victor Isakovsql@informare.com.au Managing Query Plan Performance Use Query Analyzer to view Query Plan Execute query with a range of input parameters Clear procedure and data cache View IO Statistics Enable “Show Execution Plan”

34 © Victor Isakovsql@informare.com.au Managing Query Plan Performance

35 © Victor Isakovsql@informare.com.au Managing Query Plan Performance

36 © Victor Isakovsql@informare.com.au Managing Query Plan Performance Strategy Flush cache DBCC FREEPROCCACHE Force recompile WITH RECOMPILE Avoid “all-purpose” stored procedures SET Options

37 © Victor Isakovsql@informare.com.au Managing Query Plan Performance Strategy Re-engineer stored procedures Break up larger, more complex procedures Each sub-procedure gets its own query plan Design procedures to work with “typical” parms Build special case procedures Use templates!

38 © Victor Isakovsql@informare.com.au Performance Construct Command object Execute query Parse, resolve, build QP Execute query Return resultsets Client-side processing Don’t sweat the small stuff… Client-side preparation Client-side consumption Server-side execution

39 © Victor Isakovsql@informare.com.au Agenda Stored Procedure Architecture. Stored Procedures Optimization Managing Query Plan Performance Undocumented Microsoft Stored Procedures

40 © Victor Isakovsql@informare.com.au Undocumented Microsoft Stored Procedures Stored Procedure Architecture. Stored Procedures Optimization Managing Query Plan Performance Undocumented Microsoft Stored Procedures

41 © Victor Isakovsql@informare.com.au Undocumented Microsoft Stored Procedures Seven for the DBA sp_EnumErrorLogssp_ReadErrorLogsp_TempDbSpacesp_EnumOleDbDatasourcessp_MSForEachDbsp_MSLoginMappingssp_MSTableSpace

42 © Victor Isakovsql@informare.com.au sp_EnumErrorLogs

43 © Victor Isakovsql@informare.com.au sp_ReadErrorLog

44 © Victor Isakovsql@informare.com.au sp_TempDbSpace

45 © Victor Isakovsql@informare.com.au sp_EnumOleDbDataSources

46 © Victor Isakovsql@informare.com.au sp_MSForEachDB

47 © Victor Isakovsql@informare.com.au sp_MSLoginMappings

48 © Victor Isakovsql@informare.com.au sp_MSTableSpace

49 © Victor Isakovsql@informare.com.au Undocumented Microsoft Stored Procedures Seven for the Developer sp_GetTypeStringsp_MSCheck_UId_Owns_Anythingsp_MSGet_Qualified_Namesp_MSForEachTablesp_MSIs_PK_Colsp_MSTable_Has_Unique_Indexsp_MSTableRefs

50 © Victor Isakovsql@informare.com.au sp_GetTypeString

51 © Victor Isakovsql@informare.com.au sp_MSCheck_UId_Owns_Anything

52 © Victor Isakovsql@informare.com.au sp_MSGet_Qualified_Name

53 © Victor Isakovsql@informare.com.au sp_MSForEachTable

54 © Victor Isakovsql@informare.com.au sp_MSIs_PK_Col

55 © Victor Isakovsql@informare.com.au sp_MSTable_Has_Unique_Index

56 © Victor Isakovsql@informare.com.au sp_MSTableRefs

57 © Victor Isakovsql@informare.com.au Summary Audience: “Who cares, let us go home! Please!” Victor: “But I need to put up something…” Understand how SQL Server works Helps you help SQL Server to execute “optimal” plans “KISS” Principle Slides are up on www.sqlserver.org.au


Download ppt "SQL Server Stored Procedures Architecture & Performance Victor Isakov MCT, CTT, MSCE, MCDBA"

Similar presentations


Ads by Google