Optimització i optimització de consultes de SQL Server (Packt)

Pàgina 1 de 4

Autor: Benjamí Nevarez
Editorial: Packt Publishing Pàgines: 446
ISBN: 9781803242620
Imprimeix: 1803242620
Kindle: B0B42SVBFY
Públic: DBA i desenvolupadors intermedis a avançats
Valoració: 4,7
Revisor: Ian Stirk

Aquest llibre pretén oferir-vos les eines i els coneixements per obtenir el màxim rendiment de les vostres consultes, com funciona?

El llibre, que és en gran part una actualització de l’autor Ajust i optimització de consultes de Microsoft SQL Server 2014 publicat per McGraw-Hill, amb dos capítols nous, tracta l’ajust i l’optimització de consultes, amb l’objectiu de proporcionar-vos les eines i el coneixement per obtenir el màxim rendiment de les vostres consultes i aplicacions. L’optimitzador crea un pla d’execució, detallant com es complirà la consulta, la qualitat del pla sovint depèn de les dades que se li donen (per exemple, disseny de base de dades, índexs disponibles, etc.). Aquest llibre analitza aquests factors amb l’objectiu de millorar el rendiment de les consultes.

El llibre està dirigit a professionals de SQL Server, desenvolupadors de bases de dades, DBA i arquitectes de dades. Suposa un cert coneixement d’SQL Server i una familiaritat amb el llenguatge SQL. Cobreix totes les versions admeses d’SQL Server, inclòs SQL Server 2022.

A continuació es mostra una exploració capítol per capítol dels temes tractats.

Capítol 1 Introducció a l’optimització i l’optimització de consultes

El capítol s’obre amb la idea que com més sàpigues sobre com funciona SQL Server, més estaràs en una millor posició per solucionar els problemes d’SQL. Continua amb una breu mirada als components arquitectònics principals: el motor d’emmagatzematge (controla l’obtenció de dades, la concurrència i la integritat) i el motor relacional (també conegut com el processador de consultes, això crea un pla, executa la consulta i retorna els resultats). Aquest capítol analitza com funciona el processador de consultes.

El procés de processament de consultes es desglossa i es discuteixen els seus passos, a saber:

  • Anàlisi i enllaç (l’anàlisi assegura que la sintaxi SQL és vàlida, l’enllaç és principalment la resolució de noms)

  • Optimització de consultes:

  • Generar plans d’execució de candidats (vol un pla prou bo. Sovint potencialment molts plans, utilitza regles i heurístiques, cal limitar el temps d’optimització)

  • Avaluació del cost de cada pla (cost de l’operador físic [CPU, IO etc] juntament amb les files estimades [cardinality] reflecteix el cost total)

  • Execució de consultes i emmagatzematge a la memòria cau del pla (el pla d’execució s’emmagatzema a la memòria cau del pla. Primer es revisa la memòria cau per veure si existeix el pla, ja que l’optimització pot ser relativament cara)

El següent capítol se centra en els plans d’execució, els seus components i com llegir-los. Són el mètode principal d’interacció amb el processador de consultes. Es comenten els diferents formats dels plànols, a saber: gràfic, XML i text; s’observa que aquest últim està en desús. Es comenten diversos atributs del pla (per exemple, STATEMENTOPTMLEVEL). Els plans sovint contenen missatges d’advertència (per exemple, NoJoinPredicate), que són indicacions útils d’un pla problemàtic o subòptim. La capacitat d’obtenir el pla a partir d’una traça o de la memòria cau del pla es discuteix juntament amb l’ús de l’eina rellevant. Finalment, l’ús de SET STATISTICS TIME i IO es discuteix amb exemples, proporcionant un altre mètode d’ajustament útil.

Aquest capítol ofereix una visió general molt bona de com funciona el processador de consultes (anàlisi, enllaç, optimització, execució), així com una visió general útil dels conceptes que s’utilitzen a la resta del llibre. Hi ha diagrames útils que mostren el processament de consultes i els processos de compilació i recompilació. Hi ha un codi útil per crear una sessió d’esdeveniments ampliats (XE) per gravar la informació del pla de presentació.

El capítol sí que té algunes mancances. En primer lloc, s’hauria d’haver actualitzat per fer referència als plans d’execució que es mantenen a Query Store. En segon lloc, per obtenir les 10 consultes més cares per ús de la CPU, l’autor ordena per CPU mitjana; això és incorrecte, cal ordenar per total_worker_Time. Aquesta és la segona ressenya consecutiva de llibres on veig aquest error. L’explicació de la meva correcció és: si una consulta triga 20 minuts de CPU a executar-se i s’executa dues vegades, el seu ús mitjà de CPU és de 20 minuts i el seu ús total de CPU és de 40 minuts, si una altra consulta triga 2 minuts de CPU a executar-se, i s’executa 1.000 vegades, el seu ús mitjà de la CPU és de 2 minuts i el seu ús total de la CPU és de 2.000 minuts. Si ordeneu els resultats per l’ús mitjà de la CPU, la consulta de 20 minuts apareix a la part superior, tot i que no és la consulta que utilitza més CPU.

Hi ha un consell útil sobre com examinar l’esquema associat al pla XML per descobrir qualsevol propietat addicional del pla (p. ex. StatementOptmEarlyAbortReason, NonParallelPlanReason). Hi ha un bon exemple de codi per il·lustrar els conceptes tractats, bons enllaços a capítols relacionats i enllaços al lloc web per obtenir més informació; aquests trets s’apliquen a tot el llibre.

.

Leave a Comment

Your email address will not be published. Required fields are marked *