Tuning
YOUR
T-SQL
Like a Pro
Objetivo
Atualmente geramos mais de 44 ZETTABYTES por ano e precisamos consultá-los de forma rápida e eficiente para que insights e tomadas de decisão sejam possíveis em questão de segundos.
Você já deve ter passado por momentos nos quais suas consultas ao ambiente de banco de dados estavam muito lentas e levando minutos (ou até horas) para retornar as informações necessários para sua aplicação, certo?
Você já parou para pensar no por que isso acontece? Qual o motivo para o SQL Server demorar tempo assim para retornar as informações que sua empresa tanto necessita?
E o mais importante de tudo isso!!! COMO PODEMOS AUMENTAR A PERFORMANCE DAS NOSSAS CONSULTAS?
Neste treinamento abordaremos de forma detalhada:
-
Como o SQL Server cria um plano de execução;
-
Como funcionam os principais operadores de pesquisa utilizado pelo otimizador de query;
-
Quais ferramentas estão disponíveis para um troubleshooting detalhado de performance;
-
Quais as melhores formas de escrevermos uma consulta para que tenha sempre a melhor performance nas requisições de leitura e escrita em seu banco de dados
Metodologia
Aulas teóricas e práticas em laboratório
Conteúdo Programático
Módulo 1 - ANATOMY OF A QUERY
-
Building blocks of a T-SQL statement
-
SELECT
-
DISTINCT
-
TOP
-
FROM
-
INNER JOIN
-
OUTER JOIN
-
CROSS JOIN
-
APPLY
-
WHERE
-
ORDER BY
-
GROUP BY
-
HAVING
-
Logical statement processing flow
-
Understanding Query Processing
-
Query compilation essentials
-
Query optimization essentials
-
Query execution essentials
-
Plan caching and reuse
Módulo 2 - STORED PROCEDURES
-
Ad hoc plan caching
-
Parameterization
-
Simple parameterization
-
Forced parameterization
-
The sp_executesql procedure
-
Prepared statements
-
How query processing impacts plan reuse
-
The importance of parameters
-
Security
-
Performance
-
Parameter sniffing
-
To cache or not to cache
Módulo 3 - MECHANICS OF THE QUERY OPTIMIZER
-
Introducing the Cardinality Estimator
-
Understanding the query optimization workflow
-
The Trivial Plan stage
-
The Exploration stage
-
Transaction Processing
-
Quick plan
-
Full optimization
-
Knobs for query optimization
Módulo 4 - EXPLORING QUERY EXECUTION PLANS
-
Exploring Query Execution Plans
-
Accessing a query plan
-
Navigating a query plan
-
Query plan operators of interest
-
Blocking versus non-blocking operators
-
Data-access operators
-
Table Scan
-
Clustered Index Scan
-
NonClustered Index Scan
-
NonClustered Index Seek
-
Clustered Index Seek
-
Lookups
-
RID Lookups
-
Key Lookups
-
Columnstore Index Scan
-
Joins
-
Nested Loops Joins
-
Merge Joins
-
Hash Match joins
-
Adaptive Joins
-
Spools
-
Sorts and aggregation
-
Sorts
-
Stream aggregation
-
Hash aggregation
-
Query plan properties of interest
-
Plan-level properties
-
Cardinality estimation model version
-
Degree of Parallelism
-
Memory Grant
-
MemoryGrantInfo
-
Optimization Level
-
OptimizerHardwareDependentProperties
-
OptimizerStatsUsage
-
QueryPlanHash
-
QueryHash
-
Set options
-
Statement
-
TraceFlags
-
WaitStats
-
QueryTimeStats
-
MissingIndexes
-
Parameter List
-
PlanAffectingConvert
-
WaitForMemoryGrant
-
MemoryGrantWarning
-
SpatialGuess
-
UnmatchedIndexes
-
FullUpdateForOnlineIndexBuild
-
Operator-level properties
-
RunTimeCountersPerThread
-
Actual I/O Statistics
-
Actual Number of Rows
-
Actual Time Statistics
-
Estimated rows
-
EstimateRowsWithoutRowGoal
-
Columns With No Statistics
-
Spill To TempDb
-
No Join Predicate
Módulo 5 - WRITING BETTER T-SQL QUERIES
-
Understanding predicate SARGability
-
Basic index guidelines
-
Clustered indexes
-
Non-clustered indexes
-
INCLUDE columns
-
Filtered indexes
-
Unique versus non-unique
-
Columnstore indexes
-
Indexing strategy
-
Data structure considerations
-
Database usage considerations
-
Query considerations
-
Best practices for T-SQL querying
-
Referencing objects
-
Joining tables
-
Using NOLOCK
-
Using cursors
Módulo 6 - IDENTIFIYNG T-SQL ANTI-PATTERNS
-
The perils of SELECT
-
Functions in our predicate
-
Deconstructing table-valued functions
-
Complex expressions
-
Optimizing OR logic
-
NULL means unknown
-
Fuzzy string matching
-
Inequality logic
-
EXECUTE versus sp_executesql
-
Composable logic
-
Implicit conversions
-
Avoiding unnecessary sort operations
-
UNION ALL versus UNION
-
SELECT DISTINCT
-
SELECT TOP 1 with ORDER BY
-
Avoiding UDF pitfalls
-
Avoiding unnecessary overhead with stored procedures
-
Pitfalls of complex views
-
Pitfalls of correlated sub-queries
-
Properly storing intermediate results
-
Using table variables and temporary tables
-
Using Common Table Expressions
Carga Horária
40 horas
Público Alvo
Arquitetos de Dados, desenvolvedores e DBAs.
Investimento
- R$ 2500,00 à vista
- R$ 2700,00 através do PagSeguro
Referências
- SQL Server 2022 Query Performance Tuning (APRESS)
- SQL Server Execution Plans (REDGATE)
- Query Store for SQL Server 2019 (APRESS)
- T-SQL Querying (MS PRESS)
- Expert Performance Indexing in SQL Server 2019 (APRESS)
- Documentação técnica do SQL Server (https://learn.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver16)
Próxima Turma - Julho/2024
- 20/07
- 27/07
- 03/08
- 10/08
- 17/08
Ministrado por - Vitor Fava
Possui o titulo de Most Valuable Professional (MVP AI e Data Plataform) além das principais certificações relacionadas ao SQL Server, como MCP, MCTS, MCITP, MCSA e MCSE.
DBA com mais de 20 anos de experiência nas áreas de Banco de Dados e Tecnologia da Informação, atuando no desenvolvimento, implementação, manutenção e suporte de servidores de bancos de dados corporativos de grande porte.
Graduado em Sistemas de Informação pela Universidade Presbiteriana Mackenzie/SP, com ênfase em gestão de ambiente de banco de dados de alta performance e missão crítica.
Palestrante em diversos eventos de tecnologia, como SQLBITS, SQL Saturday, The Developers Conference (TDC), SQL Porto, InteropMix e também em diversos grupos de discussão focados em tecnologia de banco de dados.
Ministra treinamentos avançados em SQL Server e Azure SQL Database, além de atuar também como MCT em treinamentos oficiais Microsoft.
Atua como Chapter Leader do PASS Chapter SQL Maniacs em São Paulo - Brasil.