PLSSUG - Troubleshoot SQL Server performance problems like a Microsoft Engineer

Preview:

Citation preview

Polish SQL Server User Group

Troubleshoot SQL Server performance problems like a Microsoft Engineer

Polish SQL Server User Group

About the Author

Marek Maśko • Senior Database Analyst in

• Working with SQL Server for ~6 years

• SQL DBA, Dev & Architect

• Contact Information: Email: marek.masko@gmail.com

LinkedIn: https://pl.linkedin.com/in/marekmasko

Twitter: @MarekMasko

Polish SQL Server User Group

Scenario

• Users report performance issue

• You know nothing about server and database

What you do?

Polish SQL Server User Group

Microsoft Customer Support Service

• Users report performance issue

• You open the MS Support Case

• MS CSS gives you PSSdiag package and ask you to run it

• You run it and collect the data

• Than You upload collected data to the workspace

• MS CSS returns with: – huge report about your SQL Server state

– issue root cause explanation

– Solution or recommendation

How they do it?

Polish SQL Server User Group

Tools

Data collection

• PSSDiag / SQLDiag

• Diag Manager

Data analysis

• SQLNexus – RML Utilities

– Relog

• PAL Tool

Polish SQL Server User Group

PSSDIAG

Polish SQL Server User Group

PSSdiag

• Developed as a side project at Microsoft

• Mainly used by CSS and PSS teams

• Tool wrapper on other MS tools

• Based on SQLDiag

• Two versions: – Internal

– External

• Dramaticaly simplifies performance data collection

Polish SQL Server User Group

SQLDiag

• It’s a command line utility delivered with SQL Server

• Located in the installation Binn directory

• It’s main purpose is to collect diagnostic data

PSSdiag SQLDiag Collectors

Polish SQL Server User Group

What does it collect?

• Event Logs

• Performance Monitor Counters

• Server Configuration

• Error Logs

• Profiler Trace

• Blocking information

• PerfStat Scripts

• Spinlocks, query statistics query hashes

...

• There is a possibility to add your own custom collectors!

Polish SQL Server User Group

How to run it?

Security • Windows authentication is default

• SQL authentication – Prompt for password

• The account used to run it – Must be able to login into target instances

– Must be a member of the sysadmin role

– Must be a member of Administrators

Configuration • Requires an XML configuration file (specifies what to collect)

Polish SQL Server User Group

Parameters

• PSSdiag /B 14:00:00

• PSSdiag /E +02:00:00

• PSSdiag /B 08:00:00 /E +09:00:00

• PSSdiag /E 02:00:00 /L /Q

• PSSdiag /R /A Myname

• PSSdiag START /A Myname

• PSSdiag /U /A Myname

All command line parameters:

http://msdn.microsoft.com/en-us/library/ms162833.aspx

Polish SQL Server User Group

Resource hit

• PSSDiag itself is negligible

• Collectors are efficient

• Profiler tracing is expensive

• Select output folder carefully

• Do not capture more than you need

• Always test and monitor it!

Polish SQL Server User Group

Extended periods

• Run as a service so logout doesn’t stop collection

• Profiler Trace dominates output file size

• Trace files must always be collected on the server

• Enables real-time NTFS compression (/C1)

• Enable the DeleteOldTraceFiles

Polish SQL Server User Group

DIAG MANAGER

Polish SQL Server User Group

Diag Manager

• GUI tool used to create configuration files

• Can be downloaded for free from: http://diagmanager.codeplex.com

Polish SQL Server User Group

DEMO Lets take a look on PSSDiag

Polish SQL Server User Group

SQLNEXUS

Polish SQL Server User Group

SQL Nexus

• Created as a side project at SQL Support Escalation team

• Process the output of PSSDiag/SQLDiag into a database and runs Reporting Services reports on top of it

• Allows users to create own collections and reports

• Can be downloaded for free from: http://sqlnexus.codeplex.com/

Polish SQL Server User Group

Key Features

• Fast data loading and processing

• SQL Trace data aggregation using advanced logic and pattern recognition for intelligent statement execution grouping

• Supports multiple databases to store several performance analysis data sets

• Visualize loaded data via reports

• Extensibility!

Polish SQL Server User Group

Pre-requsites

• Windows 2008 or newer

• SQL Server 2008 or newer

• .NET framework 4.0

• RML Utilities

Polish SQL Server User Group

SQL Nexus reports

• Built-in reports for: – Environment configuration

– Blocking

– Wait statistics

– Resource utilization

– Interesting events

– Missing indexes

– Data Statistics

– Virtual file stats

Polish SQL Server User Group

Bottleneck Analysis

Polish SQL Server User Group

Read Trace Reports

Polish SQL Server User Group

Read Trace Reports

Polish SQL Server User Group

RML Utilities

• Replay Markup Language (RML) Utilities for SQL Server

• Can be downloaded for free from: https://support.microsoft.com/en-us/kb/944837

• Package contains: – ReadTrace

– Reporter

– OStress

– OStress Replay Control Agent (ORCA)

Polish SQL Server User Group

ReadTrace

• Command line tool for processing Profiler traces and Extended Event traces

• ReadTrace consumes as input trace (.TRC) or (.XEL) files and .CAB or .ZIP files which contain .TRC files.

• The outputs from ReadTrace can be .TRC files, .RML files and the Performance Analysis (PerfAnalysis) database.

• RML Utilities have great documentation

Polish SQL Server User Group

Relog

• Command line tool for processig performance counter logs

• Possible formats: – Text-TSV (tab delimited text)

– Text-CSV (comma-delimited text)

– Binary-BIN

– SQL

• Has possibility to filter specified counters

https://technet.microsoft.com/pl-pl/library/bb490958.aspx

Polish SQL Server User Group

DEMO Lets take a look on SQLNexus

Polish SQL Server User Group

CUSTOM DATA COLLECTIONS

Polish SQL Server User Group

Custom Data Collections

• Add your SQL scripts to the _MyCollectors DiagManager folder

• Make sure the resultsets have a tag that uniquely identifies them

Polish SQL Server User Group

Custom Data Collections

• Custom Collections are added to the CustomDiag.XML file in the _MyCollectorsfolder

• It is quicker to modify this XML file than do it through the UI

Polish SQL Server User Group

Custom Data Collections

• Uses a custom import process

• By modifying a XML configuration file, you can have SQL Nexus import your custom data collection from PSSDiag

• Add the name of the rowset to TextRowsetsCustom.xml

• Located where you installed SQL Nexus

Polish SQL Server User Group

DEMO

Polish SQL Server User Group

PAL TOOL

Polish SQL Server User Group

PAL Tool

• PAL – Performance Analysis of Logs

• Can be downloaded for free from: http://pal.codeplex.com/

• Allows you to set custom thresholds or use threshold already configured for your workload

• Requires MS Chart Controls

Polish SQL Server User Group

PAL Wizard

• Carefully choose options and answer questions

• Processing will take time

Polish SQL Server User Group

PAL Output

• Graphs with thresholds

• Alerts summarized in time slices

Polish SQL Server User Group

PAL Output

• The output is color coded to let you know the areas to focus on – You do have some control over this through the threshold files

– Not everything in red actually means something

• You must know what to look for

Polish SQL Server User Group

DEMO Lets take a look on PAL Tool

Polish SQL Server User Group

When to Use Which Tool?

PSSDIAG / SQLNexus • More targeted performance analysis

• Need to view SQL internal resources (waits, blocking chains, query plans)

• Short timespan for collection

PAL • Great for overall system performance

• Benchmark

• Long duration

Polish SQL Server User Group

SQL SERVER PERFORMANCE DASHBOARD

Polish SQL Server User Group

SQL Server Performance Dashboard Reports

• Set of SSRS performance reports that integrate into SSMS

• Can be downloaded for free from: https://www.microsoft.com/en-us/download/details.aspx?id=29063

• Custom reports made to make

performance monitoring easier. • Great for tracking down trickier

performance issues

Polish SQL Server User Group

Installation

• Download from web page

• Run *.msi package

• Execute setup.sql scripts

• Add reports to SSMS

Polish SQL Server User Group

DEMO

Polish SQL Server User Group

QUESTIONS?

Recommended