Performance Tuning Microsoft Azure SQL Database

Report
Performance Tuning
Microsoft Azure
SQL Database
Eric D. Boyd
Founder & CEO, responsiveX
Microsoft Azure MVP, Insider & Advisor
About Eric D. Boyd
Founder/CEO
Microsoft Azure MVP
@EricDBoyd
EricDBoyd.com
Speaker & Author
Agenda
1)
2)
3)
4)
5)
Understanding SQL Database Architecture
Managing Connections
Monitoring Performance
Scaling SQL Database
Get Started with new Service Tiers
Understanding
SQL Database Architecture
Experience, Capabilities, Characteristics
Azure SQL DB is like SQL Server
• Same TDS protocol as SQL Server
• Same port (1433) as SQL Server
• Same tools as SQL Server
• SQL Server Management Studio
• Visual Studio
• Third-Party Tools
• Same T-SQL as SQL Server
5
Azure SQL DB is resilient
• Up to 99.99% Service Level Agreement
• Databases are replicated on three
servers
• Databases can be geo-replicated to
other data centers
• Azure manages the underlying
infrastructure for you
6
Azure SQL DB is scalable
• You can scale up resources for better
performance
• You can scale out across multiple
databases
• You can architect solutions with a mix
of scale up and scale out to efficiently
meet your needs
7
Azure SQL DB is multi-tenant
• Customers share physical
resources
• This enables you to save money
when you don’t need all of the
physical resources
8
Multi-Tenant Services Are Tricky
 Take What You Can Get
 Policed Resources
 Dedicated Resources
Web & Business Edition
• Take What You Can Get + Policed Resources
• Editions are not based on performance, but based on
database size
• Unpredictable performance
• Terminated connections
10
Getting Back to the Basics
Open connections late, close early
Pool connections
Limit the size and shape of the data
Tune queries
11
Managing Connections
• Connections can be terminated when:
• Hardware failures or server balancing occurs
• You consume too many resources, too quickly
• You take to long to do what you need to do
• You should retry when a connection termination is a
transient fault and temporary
12
Is It Transient?
13
Is It Transient?
http://msdn.microsoft.com/library/azure/dn338079.aspx
14
Don’t Reinvent The Wheel
• Recent versions of ADO.NET provides retry capability
• SqlAzureExecutionStrategy
15
Handling Transient Faults in
Entity Framework 6
DEMO
Don’t Reinvent The Wheel
• Recent versions of ADO.NET provides retry capability
• SqlAzureExecutionStrategy
• Microsoft Azure CAT and Patterns & Practices (P&P)
created the Transient Fault Handling Application
Block
17
Transient Fault Handling Application Block
Component
Detection Strategy
Description
Determines when an exception is a transient fault
condition
Retry Strategy
Defines how often and how many times to retry when a
fault is identified as a transient fault
Combines a detection strategy and a retry strategy, and
is used to call services that might encounter transient
faults
Retry Policy
19
Retry Strategies
Class
Description
ExponentialBackoff Retries a specified number of times, exponentially
delaying retries based on specified back-off parameters
FixedInterval
Incremental
Retries a specified number of times with a fixed interval
between each retry
Retries a specified number of times with an incrementing
interval between each retry
20
Transient Fault Handling
Application Block
DEMO
Monitoring SQL Database
• Connections
• sys.database_connection_stats – database connections
• sys.event_log – connectivity events
22
Connection Events
DEMO
Monitoring SQL Database
• Dynamic Management Objects – views and functions
• Monitor and Manage:
• Database – indexes, partitions and waits
• Execution – connections, sessions, requests
• Transaction – transactions and locks
24
Database – Dynamic Management Views
Name
Description
dm_db_index_usage_stats
Returns counts of different types of index operations and the time each
type of operation was last performed
dm_db_missing_index_details
Returns detailed information about missing indexes
dm_db_missing_index_group_stats
Returns summary information about groups of missing indexes
dm_db_missing_index_groups
Returns information about what missing indexes are contained in a
specific missing index group
dm_db_objects_impacted_on_version_change
Provides an early warning system to determine objects that will be
impacted by major release upgrades
dm_db_partition_stats
Returns page and row-count information for every partition in the
database
dm_db_wait_stats
Returns information about all the waits encountered by threads that
executed during operation
25
Database – Dynamic Management Functions
Name
Description
dm_db_index_operational_stats
Returns current low-level I/O, locking, latching, and access method
activity for each partition of a table or index in the database
dm_db_index_physical_stats
Returns size and fragmentation information for the data and indexes
of the specified table or view
dm_db_missing_index_columns
Returns information about database table columns that are missing
and index
26
Database
Dynamic Management Objects
DEMO
Execution – Dynamic Management Views
Name
Description
dm_exec_cached_plans
Returns a row for each query plan that is cached by SQL Database
dm_exec_connections
Returns information about the connections established to SQL
Database
dm_exec_procedure_stats
Returns aggregate performance statistics for cached stored procedures
dm_exec_query_memory_grants
Returns information about the queries that have acquired a memory
grant or that still require a memory grant to execute
dm_exec_query_stats
Returns aggregate performance statistics for cached query plans
dm_exec_requests
Returns information about each request that executes
dm_exec_sessions
Returns information about all active user connections and internal tasks
dm_exec_trigger_stats
Returns aggregate performance statistics for cached triggers
28
Execution – Dynamic Management Functions
Name
Description
dm_exec_describe_first_result_set
Returns the metadata description of the first result set for
the statement
dm_exec_describe_first_result_set_for_object
Returns the metadata description of the first result based
on an object Id
dm_exec_query_plan
Returns the Showplan in XML format for the batch
specified by the plan handle
dm_exec_sql_text
Returns the text of the SQL batch that is identified by the
specified sql handle
dm_exec_text_query_plan
Returns the Showplan in text format for the batch specified
by the plan handle or a specific statement within the batch
29
Execution
Dynamic Management Objects
DEMO
Transaction – Dynamic Management Views
Name
Description
dm_tran_active_transactions
Returns information about transactions for your current
database
dm_tran_database_transactions
Returns information about transactions at the database
level
dm_tran_locks
Returns information about currently active lock manager
resources
dm_tran_session_transactions
Returns correlation information for associated transactions
and sessions
31
Scaling SQL Database
• Scale Up
• Web & Business allow you to scale up
storage
• New Service Tiers enable you to scale
up performance
• Scale Out
• Partitioning and sharding enable you
to scale out without limits
32
Partition By Function
Customer
Catalog
Order
Vendor
33
Sharding
CustomerShard01
Customer
CustomerShard02
Shard Map
34
Scaling Out by Sharding
DEMO
Additional Resources
• Cloud Service Fundamentals
• http://code.msdn.microsoft.com/windowsazure/CloudService-Fundamentals-4ca72649
36
New Performance Based Editions
SQL Database Service Tiers and Performance Levels
Web & Business Edition
PERFORMANCE
8
7
6
5
4
3
2
1
0
38
Goal of New Service Tiers
PERFORMANCE
8
7
6
5
4
3
2
1
0
39
SQL Database Editions and Service Tiers
Tier
Perf
Level
Basic
DTU
Max DB
Size
Max Worker
Threads
Benchmark
Transaction Rate
Benchmark
Transaction
Rate/Hour
5
2 GB
30
16,600/hour
16,600
Standard
S0
10
250 GB
60
521/minute
31,260
Standard
S1
20
250 GB
90
934/minute
56,040
Standard
S2
50
250 GB
120
2,570/minute
154,200
Premium
P1
100
500 GB
200
105/second
378,000
Premium
P2
200
500 GB
400
228/second
820,800
Premium
P3
800
500 GB
1600
735/second
2,646,000
40
New Service Tiers
DEMO
More SQL Database? – Get the Book
•
•
•
•
•
•
•
•
•
Get Started
Setup and Configuration
Migration
Security
Backup
Reporting
Performance
Scalability
Monitoring
• Management
Summary
• SQL Database is familiar, resilient and scalable
• You need to consider fundamentals like connection
management and query optimization when building
applications using SQL DB
• New Service Tiers provide consistent and predicable
performance
43
Questions?
Eric D. Boyd
Founder + CEO, responsiveX
Microsoft Azure MVP, Insider & Advisor
[email protected]
www.EricDBoyd.com
@EricDBoyd

similar documents