Inicial > Não categorizado > Lista de 275 dicas de performance… até agora…

Lista de 275 dicas de performance… até agora…

A lista vai longe… Pelo que percebi, vai ser sem fim… Já temos 175 dicas gravadas e disponíveis em https://cursos.powertuning.com.br/

— Parte 1
1 – Cuidado com “missing index”
2 – Cuidados com NULL
3 – Estatísticas – atualizando com valores falsos
4 – Estatísticas – colunas ascendentes
5 – Estatísticas – date correlation optimization
6 – Estatísticas – desatualizadas
7 – Estatísticas – faltando
8 – Estatísticas – gap
9 – Estatísticas – impacto em operaçoes de rebuild
10 – Estatísticas – múltiplas colunas
11 – Estressando uma consulta
12 – Indexando colunas calculadas
13 – Intersecçao de índices
14 – Like ‘%%’ – Fultext search
15 – Like Fultext search – Coringa no final + reverse
16 – Like ‘%%’ – SQL Collate
17 – Like ‘%%’ – Fragmentos de string
18 – Ordenaçao – disco HDD, performance do tempdb
19 – Ordenaçao – disco HDD, múltiplos arquivos do tempdb
20 – Ordenaçao – disco SSD, performance do tempdb
21 – Ordenaçao – disco SSD, múltiplos arquivos do tempdb
22 – Order by é necessário
23 – Pensando em sets, um exemplo
24 – Removendo LOB da página de dados
25 – Removendo lookups – Include

— Parte 2
26 – Otimizando inserçoes – Parallel insert, SQL2014+
27 – Otimizando inserçoes – Operaçoes minimamente logadas
28 – Otimizando inserçoes – SSIS + Balaced Data Distributor
29 – Otimizando inserçoes – Batch único ou vários inserts
30 – Reescrita de T-SQL – Missing spool
31 – Reescrita de T-SQL – Subquery ou CrossApply
32 – Reescrita de T-SQL – LINQ vs TOP
33 – Reescrita de T-SQL – Group by()
34 – Row goal – Forceseek
35 – Row goal – TOP N, TOP 100
36 – Evitando HP – functions schemabinding
37 – Evitando HP – evitando spool
38 – Wide e narrow plans
39 – SET ou SELECT
40 – Variáveis locais ou parâmetros de entrada
41 – Variáveis do mesmo tipo da coluna
42 – Será que seek é sempre melhor que scan
43 – Expurgo de forma eficiente
44 – Utilizando clausula output
45 – Residual predicates
46 – Prefira um “between” a “IN”
47 – Forçando paralelismo
48 – Seek – quem filtra, index seek ou predicate
49 – Otimizando algoritmo de merge join
50 – Debug tupiniquim com RAISERROR WITH NOWAIT

— Parte 3
51 – Distinct ou group by
52 – TOP 1 ORDER BY DESC ou MAX
53 – Not In ou Not Exists
54 – Subqueries ou CrossOuter apply
55 – Union all VS Union
56 – Count(1) ou Count (asterisco)
57 – Ordem da escrita do join, importa
58 – Escrevendo códigos dinâmicos com eficiência
59 – Reescrevendo OUTER JOINS complexos
60 – CTE para evitar múltiplo acesso a functions
61 – Importância do cache plan
62 – Filtros dinâmicos, utilizando “parameter embedding optimization”
63 – “Parameter embedding optimization” – limitaçao com variável
64 – Evitando recompilaçoes
65 – Minimizando tempo de compilaçao – Merge interval bug
66 – Desnormalizando para obter performance
67 – Utilizando tabela numérica auxiliar
68 – Retornando maior valor de várias colunas
69 – Tabela de sequencia + identity vs sequence
70 – WITH ENCRYPTION nao funciona… nem perca tempo
71 – Processamento em paralelo no SQL (multi threads com CLR)
72 – Scan – Removendo fragmentaçao
73 – Scan – Ajustando fillfactor
74 – Scan – Aplicando compressao de dados
75 – Scan – Scan direction e paralelismo

— Parte 4
76 – Views indexadas
77 – Indice cluster – único
78 – Indice cluster – estático
79 – Indice cluster – sequencial
80 – Indice cluster – pequeno
81 – Particionamento – eliminaçao de partiçao
82 – Indices únicos com vários valores NULL
83 – Cuidados com nolock – leituras sujas
84 – Cuidados com nolock – lendo mesma linha mais de uma vez
85 – Cuidados com nolock – pulando linhas
86 – Cuidados com nolock – mascarando erros de corrupçao
87 – Cuidado, case + subqueries
88 – Otimizando COUNT (DISTINCT…)
89 – Otimizando cursores
90 – Utilizando SET STATISTICS IO, cuidado com funçoes
91 – TOP com empate
92 – Otimizando queries utilizando linked server
93 – Cuidados com nolock – movimentaçao dos dados
94 – Validando se a tabela está vazia… o que usar
95 – Stream aggregate e compute scalar – Otimizando agregaçao
96 – Conversoes implícitas
97 – Filtros – Iniciando com ‘Z’
98 – Filtros – Removendo hora da data
99 – Minimizando compilaçao de queries ad-hoc com plan guides
100 – Convertendo scalar function em inline function

— Parte 5
101 – Criando índices hipotéticos
102 – Indices filtrados
103 – Bushy plans
104 – Hash e order group hints
105 – Planos de execuçao com “time out” na criaçao, TF8780
106 – Planos bons o suficiente
107 – Agregaçoes de vetor e agregaçoes escalares
108 – Parameter sniffing problem
109 – Aplicaçao, parametrizando corretamente – evitando cachebloat
110 – Split de string
111 – Gerando uma string delimitada
112 – Contando a quantidade de caracteres em uma string
113 – Identificando linhas duplicadas
114 – Identificando ilhas
115 – Identificando gaps
116 – Lendo valor da linha anterior
117 – Lendo valor da linha posterior
118 – Identificando valores faltando
119 – Retornando “running aggregations”
120 – Transformando linhas em colunas dinamicamente
121 – Ignorando linhas duplicadas
122 – Qual impacto de sp
123 – Qual impacto de set no count
124 – Escondendo códigos do DBA
125 – Ignorando todos os inserts

— Parte 6
126 – Retornando a quantidade de linhas de uma tabela
127 – Simulando ambiente de produçao em desenvolvimento
128 – Cuidados com performance das funçoes de janela
129 – Check constraints e sua relaçao com performance
130 – Foreign keys e sua relaçao com performance
131 – Evitando contençao de alocaçao de objetos no tempdb
132 – Utilizando variáveis do tipo tabela com eficiência
133 – Escrevendo consultas recursivas
134 – XML – Indices seletivos
135 – Paginaçao, como fazer
136 – Indices únicos e seus benefícios
137 – Force order
138 – Ajustando query wait
139 – Java + parametros unicode
140 – Obtendo mais performance com prefetch
141 – Problemas de bloqueios causados por prefetch
142 – Cuidados com SQL Injection
143 – Cuidados com ISNUMERIC
144 – IF condiçao AND condiçao ou IF condiçao IF condiçao
145 – Erro com ISNULL(ColunaQueNaoAceitaNULL) + colunas calculadas
146 – Problemas com “auto create_update statistics”
147 – Query com OPTION(MAXDOP 1) gerando wait em CXPACKET
148 – Minimizando bloqueios com indexaçao
149 – Lock escalation
150 – Melhorando performance de MIN e MAX em tabelas particionadas

— Parte 7
151 – Reescrita de T-SQL – Quebrando query utilizando tabelas temporárias
152 – Reescrita de T-SQL – Trocando JOIN + OR por CROSS APPLY e UNION
153 – Reescrita de T-SQL – Otimizando DISTINCT COUNT
154 – Reescrita de T-SQL – SARG vs NONSARG e filtros dinâmicos
155 – Reescrita de T-SQL – Otimizando query com ORDER BY e NULLS LAST
156 – Reescrita de T-SQL – Evitando sort em query com OVER(Col ORDER BY DESC)
157 – Reescrita de T-SQL – Cursor melhor que set-based
158 – Eita, eu nao sabia que da pra fazer isso (TRANSLATE)
159 – Eita, eu nao sabia que da pra fazer isso (TRIM)
160 – Eita, eu nao sabia que da pra fazer isso (CONCAT_WS)
161 – Eita, eu nao sabia que da pra fazer isso (DECLARE @c CURSOR)
162 – Eita, eu nao sabia que da pra fazer isso (AS Tab(ColName))
163 – Eita, eu nao sabia que da pra fazer isso (DROP TABLE Tab1, Tab2)
164 – Eita, eu nao sabia que da pra fazer isso (TRUNCATE com WHERE)
165 – Utilizando otimizaçao de insert mais rápido no SQL2014+ e tempdb
166 – Testando hyper-threading
167 – CachePlan – Simple – AutoParam
168 – CachePlan – Cuidados com parameterizaçao na App e TF144
169 – CachePlan – Optimize for adhoc workloads.json
169 – CachePlan – Optimize for adhoc workloads
170 – CachePlan – sp_prepare vs direct exec
171 – CachePlan – Textos iguais, hash tem que bater
172 – CachePlan – Plan Reuse-affecting set options
173 – Apagando um índice para deixar uma consulta mais rápida
174 – Comprimindo VARCHAR(MAX) com ColumnStore
175 – Deu ruim quando liguei read commited snapshot isolation level

— Ainda não publicado:
— Parte 8 (edição TraceFlags)
176 – Utilizando traceflag 174
177 – Utilizando traceflag 610
178 – Utilizando traceflag 715
179 – Utilizando traceflag 1117
180 – Utilizando traceflag 2335
181 – Utilizando traceflag 2371
182 – Utilizando traceflag 2453
183 – Utilizando traceflag 2505
184 – Utilizando traceflag 2548
185 – Utilizando traceflag 3042
186 – Utilizando traceflag 3226
187 – Utilizando traceflag 7412
188 – Utilizando traceflag 7470
189 – Utilizando traceflag 7471
190 – Utilizando traceflag 8602
191 – Utilizando traceflag 8666
192 – Utilizando traceflag 8677
193 – Utilizando traceflag 8690
194 – Utilizando traceflag 8722
195 – Utilizando traceflag 8755
196 – Utilizando traceflag 8757
197 – Utilizando traceflag 9130
198 – Utilizando traceflag 9389
199 – Utilizando traceflag 9481
200 – Utilizando traceflag 9495

— Parte 9 (edição SQL2019)
201 – Batch mode over row store
202 – Batch mode over row store, Internals
203 – Row mode memory grant feedback
204 – Table variable deferred compilation – Demo 1
205 – Table variable deferred compilation – Demo 2
206 – Scalar UDF inlining – 1
207 – Scalar UDF inlining – 2 (bad case)
208 – Accelerated database recovery – Demo 1
209 – Accelerated database recovery – Demo 2
210 – Lightweight query plan ligado por padrao
211 – sys.dm_exec_query_plan_stats
212 – Compression estimates para column store
213 – Novo wait (WAIT_ON_SYNC_STATISTICS_REFRESH)
214 – Suporte a persisted memory
215 – Emulando PMEM (persisted memory) no Linux
216 – APPROX_COUNT_DISTINCT
217 – Novos hints – sys.dm_exec_valid_use_hints
218 – sys.dm_db_page_info
219 – Tempdb in-memory system objects
220 – Transparent Data Encryption (TDE) scan – suspend and resume
221 – Reduçao de recompilaçao para workloads utilizando tabelas temporárias
222 – Suporte a UTF-8
223 – Resume e Pause para criaçao de índices online
224 – Criaçao de índices columnstore online
225 – Improved indirect checkpoint scalability

— Parte 10
226 – Permissao LinkedServer SQL2008R2
227 – Filtros LinkedServer Local VS Remote
228 – LinkedServer vs sp_prepexec e sp_execute
229 – LinkedServer INNER REMOTE JOIN
230 – LinkedServer collation compatible
231 – LinkedServer vs halloween protection
232 – LinkedServer vs MARS
233 – View indexada vs Blocks e DeadLocks
234 – Nível de isolamento vs Entity Framework
235 – Nível de isolamento padrao, lock em select
236 – Lock extra de query rodando em paralelo
237 – Lock extra de query acessando LOB
238 – Lock extra de query com halloween protection
239 – Impacto de conexoes com MARS habilitado
240 – Problema de performance com funçao FORMAT
241 – Memory leak no JDBC
242 – Ajustando cost threshold for parallelism
243 – Troubleshoot com windows performance toolkit
244 – Otimizando velocidade dos backups
245 – A significant part of sql server process memory has been paged out…
246 – BP data cache – free_space_in_bytes e fragmentaçao
247 – BP data cache – utilizando compressao de dados
248 – BP data cache – entendendo page disfavoring
249 – Obtendo informaçoes uteis do default trace
250 – Analisando deadlock envolvendo apenas uma tabela

— Parte 11
251 – Operador do plano de execução – IndexSeek
252 – Operador do plano de execução – Table Spool (Lazzy Spool)
253 – Operador do plano de execução – Table Spool (Eager Spool)
254 – Operador do plano de execução – Index Spool
255 – Operador do plano de execução – KeyLookup apenas pra fazer predicate
256 – Operador do plano de execução – RowCount Spool
257 – Operador do plano de execução – Merge interval
258 – Operador do plano de execução – Split, Sort e Collapse
259 – Operador do plano de execução – Loop join
260 – Operador do plano de execução – Merge join
261 – Operador do plano de execução – Hash join
262 – Operador do plano de execução – Hash join vs residual predicate
263 – Operador do plano de execução – Adaptive join
264 – Foldable expressions
265 – NonUpdating updates
266 – Group hints
267 – DBCC OPTIMIZER_WHATIF
268 – Ligando e desligando optimizer query rules
269 – xEvent – inaccurate_cardinality_estimate
270 – QO Bug, Expressions In Queries
271 – QO Bug, IS NOT NULL
272 – QO Bug, Produto Cartesiano
273 – QO Bug, Segment Operator
274 – QO Bug, Filter VS Aggregation
275 – QO Bug, MERGE

Categorias:Não categorizado
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: