Optimalizace úložiště databáze

Dokončeno

Pokud chcete optimalizovat úložiště databáze, měli byste zvážit proporcionální zaplnění a konfiguraci tempdb.

Vysvětlení výkonu vstupně-výstupních operací

Výkon V/V může být pro databázovou aplikaci rozhodující. Azure SQL abstrahuje od fyzického umístění souborů, ale existují metody, které vám umožní zajistit, abyste získali potřebný výkon V/V.

Pro vaši aplikaci může být důležitý počet vstupních a výstupních operací za sekundu (IOPS). Ujistěte se, že jste pro potřeby IOPS zvolili správnou úroveň služby a virtuální jádra. Zjistěte, jak měřit IOPS pro vaše dotazy místně, pokud migrujete do Azure. Pokud máte pro IOPS nějaká omezení, může docházet k dlouhým čekáním na V/V. V nákupním modelu vCore můžete zvýšit počet virtuálních jader nebo přejít na Business Critical nebo Hyperscale, pokud nemáte dostatek IOPS. U produkčních úloh při použití DTU doporučujeme přejít na úroveň Premium.

Další klíčovou komponentou pro výkon V/V je latence V/V. Pro rychlejší V/V latenci pro Azure SQL Database zvažte úroveň Business Critical nebo Hyperscale (Hyperškálování). Pro rychlejší latenci V/V pro SQL spravovanou instanci přejděte na Business Critical nebo zvyšte velikost souboru či počet souborů pro databázi. Zlepšení latence transakčního protokolu může vyžadovat použití transakcí s více úrovněmi.

Soubory a skupiny souborů

Pracovníci, kteří mají na starosti SQL Server, často používají soubory a skupiny souborů ke zlepšení výkonu vstupu a výstupu prostřednictvím fyzického umístění souborů. Azure SQL neumožňuje uživatelům umístit soubory na konkrétní diskové systémy. Azure SQL ale má závazky k výkonu vstupně-výstupních operací, pokud jde o sazby, vstupně-výstupní operace za sekundu a latenci. Tímto způsobem může odproštění uživatele od fyzického umístění souboru přinést výhody.

Azure SQL Database má jenom jeden soubor databáze (Hyperscale jich má obvykle několik) a maximální velikost je konfigurována prostřednictvím rozhraní Azure. Neexistuje žádná funkce pro vytváření dalších souborů.

Spravovaná instance Azure SQL podporuje přidávání databázových souborů a konfiguraci velikostí, ale ne fyzického umístění souborů. Ke zlepšení výkonu vstupně-výstupních operací můžete použít počet souborů a velikostí souborů pro službu SQL Managed Instance. Uživatelsky definované skupiny souborů se navíc podporují pro spravovanou instanci SQL kvůli možnostem správy.

Popište proporcionální zaplnění

Při vkládání 1 gigabajtů dat do databáze SQL Serveru se dvěma datovými soubory můžete očekávat, že se každý soubor zvýší o přibližně 512 megabajtů. To ale není vždy případ. SQL Server distribuuje data na základě velikosti každého souboru. Pokud jsou například oba datové soubory 2 gigabajty, data by se rovnoměrně distribuovala. Pokud je ale jeden soubor 10 gigabajtů a druhý je 1 gigabajt, přibližně 900 MB by přešlo do většího souboru a 100 MB do menšího souboru. Toto chování je běžné v jakékoli databázi, ale v databázi tempdb náročné na zápis může nerovnoměrný vzor zápisu vytvořit kritický bod v největším souboru, protože zpracovává více zápisů.

Konfigurace databáze Tempdb na SQL Serveru

SQL Server zjistí počet dostupných procesorů během instalace a nakonfiguruje odpovídající počet souborů, až osm, s rovnoměrnou velikostí. Kromě toho je chování trasovacích příznaků 1117 a 1118 integrováno do databázového enginu, ale pouze pro tempdb. U úloh náročných na databázi tempdb může být užitečné zvýšit počet souborů tempdb nad osm, což odpovídá počtu procesorů na vašem počítači.

Používáte tempdb to stejným způsobem pro SQL Server i Azure SQL. Mějte ale na paměti, že vaše schopnost konfigurovat tempdb se liší, včetně umístění souborů, počtu a velikosti souborů a tempdb možností konfigurace.

SQL Server používá databázi tempdb pro různé úlohy nad rámec ukládání uživatelem definovaných dočasných tabulek. Používá se pro pracovní tabulky, které mimo jiné ukládají mezilehlé výsledky dotazů, operace řazení a úložiště verzí pro správu verzí řádků. Vzhledem k tomuto rozsáhlému využití je důležité umístit databázi tempdb na úložiště s nejnižší latencí, které je k dispozici, a správně nakonfigurovat své datové soubory.

Soubory databáze se vždy ukládají automaticky na místních jednotkách SSD, takže výkon vstupně-výstupních tempdb operací by neměl být problém.

Odborníci na SQL Server často k rozdělení tabulek tempdb používají více než jeden databázový soubor. U Služby Azure SQL Database se počet souborů škáluje s počtem virtuálních jader (například dvěma virtuálními jádry se rovná 4 souborům) s maximálním počtem 16. Počet souborů nelze konfigurovat pomocí T-SQL vůči tempdb, ale můžete jej nastavit změnou volby nasazení. Maximální velikost tempdb se škáluje na počet virtuálních jader. Se spravovanou instancí SQL získáte 12 souborů nezávisle na virtuálních jádrech.

Možnost databáze MIXED_PAGE_ALLOCATION je nastavená na VYPNUTO a AUTOGROW_ALL_FILES je nastavená na ZAPNUTO. Nemůžete to nakonfigurovat, ale stejně jako u SQL Serveru se jedná o doporučené výchozí hodnoty.

Funkce tempdb optimalizace metadat, zavedená v SQL Serveru 2019, která může zmírnit silné konflikty zámků, není v současné době dostupná ve službě Azure SQL Database nebo ve službě Azure SQL Managed Instance.

Konfigurace databáze

Běžně konfigurujete databázi pomocí jazyka T-SQL ALTER DATABASE a ALTER DATABASE SCOPED CONFIGURATION příkazů. Mnohé z možností konfigurace pro výkon jsou k dispozici pro Azure SQL. Podívejte se do referenčních informací T-SQL k příkazům ALTER DATABASE a ALTER DATABASE SCOPED CONFIGURATION, které popisují rozdíly mezi SQL Serverem, Azure SQL Database a Azure SQL Managed Instance.

Ve službě Azure SQL Database je výchozím modelem obnovení úplné obnovení, které zajišťuje, že vaše databáze může splňovat smlouvy o úrovni služeb Azure (SLA). To znamená, že minimální protokolování pro hromadné operace není podporováno, s výjimkou tempdbpřípadů, kdy je povolené minimální protokolování.

Konfigurace maximálního stupně paralelismu (MAXDOP)

Maximální stupeň paralelismu (MAXDOP) může ovlivnit výkon jednotlivých dotazů. SQL Server a Azure SQL zpracovávají MAXDOP stejným způsobem. Pokud MAXDOP je nastavená na vyšší hodnotu, použijí se pro každý dotaz více paralelních vláken, která potenciálně urychlují provádění dotazů. Tento zvýšený paralelismus však vyžaduje dodatečné paměťové prostředky, což může vést k zatížení paměti a ovlivnit výkon úložiště. Například při komprimaci skupin řádků do sloupcového úložiště paralelismus vyžaduje více paměti, což může vést k přetížení paměti a zkrácení skupin řádků.

Naopak nastavení MAXDOP na nižší hodnotu může snížit zatížení paměti, což umožňuje systému úložiště efektivněji provádět. To je důležité v prostředích s omezenými paměťovými prostředky nebo vysokými požadavky na úložiště. Pečlivou konfigurací MAXDOP můžete vyvážit výkon dotazů a efektivitu úložiště a zajistit tak optimální využití prostředků procesoru i úložiště.

MAXDOP v Azure SQL můžete nakonfigurovat podobným způsobem jako v SQL Serveru pomocí následujících postupů:

  • ALTER DATABASE SCOPED CONFIGURATION konfigurace MAXDOP se podporuje pro Azure SQL.
  • Uložená procedura sp_configure pro maximální stupeň paralelismu je podporována pro službu SQL Managed Instance.
  • MAXDOP Dotazové nápovědy jsou plně podporované.
  • Konfigurace MAXDOP s využitím správce prostředků se podporuje pro službu SQL Managed Instance.