Optimalizace výkonu v MS SQL | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Optimalizace výkonu v MS SQL

Optimalizace výkonu v MS SQL

Přečti si co udělat pro zlepšení výkonu databáze MS SQL

Společnosti a organizace staví své podnikání na datech, proto je ukládají a analyzují v celé řadě systémů, které jsou nedílnou součástí firmy. Populární volbou jsou relační systémy pro správu databází. Jedním z nejčastějších řešení je Microsoft SQL Server.

Datoví vědci s informacemi uloženými v relační databázi pracují pomocí dotazů. Systém na tyto dotazy reaguje, ale v mnoha situacích nemusí odpovídat tak, jak je nezbytně nutné. To může být způsobeno několika faktory, které mohou zapříčinit výrazné snížení výkonu MS SQL, což je problém nejen pro uživatele, ale i datové vědce, kteří v databázích pracují.

V článku si projdeme krok za krokem, jak bys měl*a postupovat, abys zjistil*a, kde může být případný problém. Také ti nastíníme pár tipů, jak efektivně pracovat s dotazy, abys dostal*a rychlejší odpovědi.

5 kroků, jak postupovat při monitorování MS SQL serveru

Microsoft SQL Server (zkráceně SQL Server, MSSQL) je komplexní počítačový program, který pracuje s dynamicky se měnícím prostředím. Data aplikací se neustále mění, a s nimi i počet uživatelů i způsob, jakým s relační databází interagují programy, které jsou na něj napojené.

Databáze SQL Serveru automaticky spravuje systémové prostředky (místo na disku a paměť), aby se minimalizovala nutnost rozsáhlé ruční optimalizace. To umožňuje správcům MSSQL zaměřit se na výkonnostní ukazatele a určit, zda jsou nutné změny. Proto ti povíme, jak v takových případech postupovat, abys zjistil*a, co je potřeba optimalizovat.

1. Stanov si cíle monitorování SQL Serveru

Abys mohl*a efektivně provést optimalizaci výkonu SQL Serveru, především si musíš ujasnit, z jakého důvodu a proč systém/databázi monitoruješ. Tvým cílem tak může být:

  • definování výkonnostního benchmarku a identifikace změn výkonu v průběhu času,
  • diagnostika konkrétních problémů s výkonem a identifikace komponentů nebo procesů, které je třeba optimalizovat,
  • monitorování dopadu různých aplikací na výkon, sledování činnosti uživatelů nebo testování reakce databáze na různé způsoby zatížení,
  • testování plánované údržby, zálohování a plánů obnovy,
  • testování různých variant architektury databáze nebo hardwarového nastavení.

2. Zvol si potřebný nástroj pro monitorování MSSQL

Pokud už sis určil*a důvody pro monitorování, je potřeba vybrat správný nástroj pro zjištění daného problému. MSSQL nabízí celou řadu možnosti optimalizace výkonu (blíže ti je představíme v další kapitole článku), stejně jako operační systém Windows, což ti umožňuje monitorovat prostředí s velkým objemem dat.

3. Vyber správný komponent a metriku v MS SQL

Urči, které komponenty databáze MS SQL je třeba monitorovat. Nástroj SQL Server Profiler umožňuje provést kontrolu vybraných typů událostí, nebo vyloučit ty nerelevantní. Na základě výsledku snadno zjistíš, jakým komponentům je potřeba věnovat pozornost. 

V souvislosti s tím pak vybereš metriku, která může zahrnovat určitá data o událostech, abys zajistil*a, zdali jsou relevantní pro cíl tvého monitorování. Omezení dat, která shromažďuješ v trasování, ušetří systémové prostředky potřebné k optimalizaci výkonu MS SQL Serveru.

4. Monitorování SQL Server databáze

Začni průběžně spouštět monitorovací nástroj, který sis vybral*a, nakonfiguroval*a a shromáždi data o vybraných událostech a metrikách. Těmi může být například definování si trasování a shromažďování dat o událostech vzniklých na SQL Serveru při konkrétní činnosti.

5. Analyzuj data

Analyzuj údaje shromážděné tebou vybraným nástrojem, abys ses ujistil*a, že bylo dosaženo cílů monitorování. Pokud z dat nic nezjistíš (nemůžeš určit zdroj problému s výkonem), uprav sledované komponenty nebo metriky a vyzkoušej to znovu.

Nástroje pro optimalizaci a monitorování výkonu MS SQL Server

Pro optimalizaci výkonu MS SQL Serveru je k dispozici řada nástrojů. Na následujících řádcích proto zmíníme několik nejpoužívanějších z nich.

Vestavěná funkce jazyka Transact-SQL

MS SQL Server poskytuje funkce, které přináší přehled o činnosti databáze od jejího spuštění. Data se ukládají do předem předdefinovaných čítačů.

Transact-SQL s DBCC

Pomocí příkazů DBCC (Database console commands) můžeš ověřit fyzickou a logickou integritu databáze a získat statistiky o výkonu.

Database Engine Tuning Advisor (DTA)

Analyzuje dopad příkazu Transact-SQL na databázi, a to za účelem optimalizace výkonu. DTA poskytuje automatizované pokyny pro úpravu indexů, zobrazení nebo oddílů s cílem zlepšit výkon.

Database Experimentation Assistant (DEA)

Nové řešení pro optimalizaci výkonu SQL Serveru využívající koncept A/B testování. Jde o skvělý způsob, jak vyhodnotit konkrétní verze databázového jádra SQL Server, a to při konkrétní pracovní činnosti.

Protokoly událostí aplikací systému Windows

Poskytují informace o událostech zaznamenaných SQL Serverem, agentem a textovým procesovým vyhledávačem, jež nelze získat z jiných nástrojů a které mohou být cenné při optimalizaci výkonu MSSQL.  Dají se použít k diagnostice a řešení mnoha typů problémů.

Statistiky dotazů v reálném čase (LQS)

LSQ poskytuje údaje o provádění dotazů v reálném čase. To je velmi užitečné pro řešení problémů s výkonem dotazů v rámci optimalizace výkonu SQL Serveru.

Pro lepší výkon databáze nezapomeň na SQL dotazy

Při práci s relačními databázemi, jako je MS SQL Server, jsou klíčové i dotazy, které používáš pro práci. Pojďme si představit několik způsobů, jak je využívat správně, aby se předešlo zbytečné zátěži a snížení výkonu MSSQL. 

Nepoužívej * ve funkci SELECT

Používáš často SELECT *? Pak se zobrazí všechny sloupce dané tabulky, což zabírá velké množství času, proto je lepší použít: SELECT Id, DeptName, Description, kde je zmíněn název sloupce, který požaduješ jako výsledný.

Použití funkce EXIST místo poddotazu

Pokud někdy potřebuješ použít poddotaz, zkus nejprve funkci EXIST(), a to tehdy, když poddotaz vrací velký objem dat. V tomto případě funkce EXIST() pracuje rychleji než In, neboť Exist() vrací logickou hodnotu na základě tvého dotazu.

Používej správně JOIN a vyhni se poddotazům

Je lepší použít funkci JOIN místo poddotazu. Definovat ho můžeš na základě LEFT nebo RIGHT dotazu, díky čemuž se kontrolují pouze ty záznamy, které odpovídají daným kritériím. V případě poddotazu se ověřují všechny záznamy a pak se vrátí výsledek, a tudíž je to časově náročnější.

Použití WHERE místo HAVING

Další technikou optimalizace dotazů SQL je použití WHERE místo HAVING. Dotazy WHERE se provádějí rychleji než HAVING. WHERE filtruje záznamy před vytvořením skupin, zatímco HAVING filtruje data ze skupin. V důsledku toho je použití WHERE místo HAVING snadnou strategií optimalizace dotazů SQL.

Pokud je to možné, použij UNION ALL místo UNION

Hlavní rozdíl mezi UNION a UNION ALL spočívá v tom, že UNION vrací různé záznamy, zatímco UNION ALL všechny, včetně těch duplicitních. Když použiješ dotaz UNION, tak nejprve dochází ke třídění, k hledání odlišných záznamů a pak se zobrazí výsledek, a proto proces trvá déle než u funkce UNION ALL. Pokud ale požaduješ pouze odlišné záznamy, dává smysl použití dotazu UNION.

Vyhni se negativnímu vyhledávání

Uživatelé databází SQL někdy používají negativní vyhledávání v podmínkách WHERE, jako například not equals (<>), not like atd., ale tomuto je potřeba se úplně vyhnout. Pokud zadáš přesná kritéria vyhledávání, tak se ti v daném okamžiku vrátí výsledek. Zato při použití negativního vyhledávání snižuješ výrazně rychlost dotazu.

Optimalizace výkonu SQL Serveru se rozchodně vyplatí

Optimalizace databáze SQL Serveru, ve kterém pracuješ se rozhodně vyplatí. Můžeš tak přibližně dosáhnout až 50% zlepšení výkonu. Mnohdy záleží na tom, jak pokročilou techniku zvolíš a jaké znalosti SQL máš. Proto nezapomínej prohlubovat své dovednosti a znalosti. S tím ti třeba pomůže náš kurz SQL, který startuje 5. 9. 2023.

Autor: Martin Šlat

Více článků
A proč je užitečná pro každého, kdo pracuje s computer vision
Kde můžeš začít navazovat vztahy s lidmi se zájmem o IT?