VITA_logo head.png
BG.png

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

32 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 2017 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://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15)

 

Próxima Turma - Outubro/2022

- 15/10

- 22/10

- 29/10

- 05/11

T-SQL.png

Ministrado por - Vitor Fava

VitorNovoVisual1_edited_edited_edited.jpg
  • images
  • YouTube Social  Icon
  • LinkedIn Social Icon
  • Facebook Social Icon
  • Twitter Social Icon

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 18 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.