Sdílet prostřednictvím


Vytváření dělených tabulek a indexů

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLDatabáze SQL v Microsoft Fabric

Dělenou tabulku nebo index můžete vytvořit pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL. Data v dělených tabulkách a indexech jsou horizontálně rozdělena do jednotek, které je možné rozdělit do více než jedné skupiny souborů v databázi nebo ukládat do jedné skupiny souborů. Dělení může vytvářet velké tabulky a indexy lépe spravovatelnými a škálovatelnými.

Vytvoření dělené tabulky nebo indexu obvykle probíhá ve třech nebo čtyřech částech:

  1. Volitelně můžete vytvořit skupinu souborů nebo skupiny souborů a odpovídající datové soubory, které budou obsahovat oddíly určené schématem oddílů. Hlavním důvodem, proč umístit oddíly do více skupin souborů, je zajistit, abyste mohli nezávisle provádět operace zálohování a obnovení u skupin souborů. Pokud to není nutné, můžete se rozhodnout přiřadit všechny oddíly k jedné skupině souborů pomocí existující skupiny souborů, například PRIMARYnebo nové skupiny souborů se souvisejícími datovými soubory. V téměř všech scénářích dosáhnete všech výhod dělení , ať už používáte více skupin souborů.

  2. Vytvořte funkci oddílu , která mapuje řádky tabulky nebo indexu na oddíly na základě hodnot zadaného sloupce. K rozdělení více objektů můžete použít jednu funkci rozdělení.

  3. Vytvořte schéma oddílů , které mapuje oddíly dělené tabulky nebo indexu na jednu skupinu souborů nebo na více skupin souborů. Můžete použít jednotné schéma oddílů k rozdělení více objektů.

  4. Vytvořte nebo upravte tabulku nebo index a zadejte partiční schéma jako úložiště, spolu se sloupcem, který bude sloužit jako partiční sloupec.

  • Particionování je plně podporované ve službě Azure SQL Database a v SQL databázi v prostředí Fabric. Všechny oddíly musí být umístěny do PRIMARY skupiny souborů, protože v Azure SQL Database a v databázi SQL ve Fabric je k dispozici pouze PRIMARY skupina souborů.
  • Dělení tabulek je k dispozici ve vyhrazených fondech SQL ve službě Azure Synapse Analytics s některými rozdíly v syntaxi. Další informace najdete v tématu Dělení tabulek ve vyhrazeném fondu SQL.

Permissions

Vytvoření dělené tabulky vyžaduje oprávnění CREATE TABLE v databázi a oprávnění ALTER ke schématu, ve kterém se tabulka vytváří. Vytvoření děleného indexu vyžaduje oprávnění ALTER v tabulce nebo zobrazení, kde se index vytváří. Vytvoření dělené tabulky nebo indexu vyžaduje některá z následujících dalších oprávnění:

  • Oprávnění ALTER ANY DATASPACE. Toto oprávnění ve výchozím nastavení platí pro členy pevných rolí serveru sysadmin a pevných databázových rolí db_owner a db_ddladmin.

  • Oprávnění CONTROL nebo ALTER k databázi, ve které jsou vytvářeny funkce oddílu a schéma oddílů.

  • CONTROL SERVER nebo ALTER ANY DATABASE oprávnění na serveru databáze, ve které se vytváří funkce oddílu a schéma oddílů.

Vytvoření dělené tabulky v jedné skupině souborů pomocí Transact-SQL

Pokud nepotřebujete nezávisle provádět operace zálohování a obnovení u skupin souborů, dělení tabulky pomocí jedné skupiny souborů zjednodušuje správu dělené tabulky v průběhu času.

Tento příklad je vhodný pro Azure SQL Database a SQL databázi ve službě Fabric, které nepodporují přidávání souborů a skupin souborů. V SQL Serveru a službě Azure SQL Managed Instance můžete v závislosti na postupech při správě souborů a skupin souborů určit skupinu souborů vytvořenou uživatelem.

Příklad postupu vytvoření dělené tabulky v aplikaci SQL Server Management Studio (SSMS) pomocí Transact-SQL a přiřadí všechny oddíly ke skupině PRIMARY souborů. Příklad:

  • Vytvoří funkci oddílu RANGE RIGHT s názvem myRangePF1 se třemi hodnotami hranic pomocí datového typu datetime2 . Výsledkem tří hodnot hranic bude dělená tabulka se čtyřmi oddíly.
  • Vytvoří schéma oddílů s názvem myRangePS1 , které používá ALL TO syntaxi k přiřazení všech oddílů ve funkci oddílu myRangePF1 ke skupině PRIMARY souborů.
  • Vytvoří tabulku s názvem PartitionTable ve schématu oddílů myRangePS1 a určí sloupec pojmenovaný col1 jako sloupec pro partitionování.
  1. V Průzkumníku objektůse připojte k instanci databázového stroje.

  2. Na panelu Standard vyberte Nový dotaz.

  3. Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit. Tento příklad vytvoří funkci oddílu a schéma oddílu. Vytvoří se nová tabulka, ve které je schéma oddílů použito jako umístění úložiště.

CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))
    AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;
GO

CREATE PARTITION SCHEME myRangePS1
    AS PARTITION myRangePF1
    ALL TO ('PRIMARY') ;
GO

CREATE TABLE dbo.PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))
    ON myRangePS1 (col1) ;
GO

Vytvoření dělené tabulky ve více skupinách souborů pomocí Transact-SQL

Podle kroků v této části vytvořte jednu nebo více skupin souborů, odpovídající soubory a dělenou tabulku pomocí Transact-SQL v SSMS.

SQL Server i Azure SQL Managed Instance podporují vytváření skupin souborů a souborů. Spravovaná instance Azure SQL automaticky nakonfiguruje cestu pro všechny přidané soubory databáze, takže ALTER DATABASE ADD FILE příkaz ve službě Azure SQL Managed Instance nepovolí FILENAME parametr. Azure SQL Database podporuje vytváření dělených tabulek pouze ve skupině PRIMARY souborů. Vyhledání ukázkového kódu pro Azure SQL Database v vytvoření dělené tabulky v jedné skupině souborů pomocí jazyka Transact-SQL

Spusťte následující příklad s prázdnou databází. Příklad:

  • Přidá do databáze čtyři nové skupiny souborů.
  • Přidá jeden soubor do každé skupiny souborů.
  • Vytvoří funkci oddílu RANGE RIGHT volanou myRangePF1 se třemi hodnotami hranic, které rozdělí tabulku do čtyř oddílů.
  • Vytvoří schéma oddílů nazvané myRangePS1, které aplikuje myRangePF1 na čtyři nové skupiny souborů.
  • Vytvoří rozdělenou tabulku s názvem PartitionTable, která používá myRangePS1 k rozdělení col1.
  1. V Průzkumníku objektůse připojte k instanci databázového stroje.

  2. Na panelu nástrojů Standard vyberte Nový dotaz.

  3. Tento příklad vytvoří novou databázi a použije ji. Potom vytvoří nové skupiny souborů, funkci oddílu a schéma oddílů. Vytvoří se nová tabulka, ve které je schéma oddílů použito jako umístění úložiště. Zkopírujte a vložte následující příklad do okna dotazu.

    Pokud používáte spravovanou instanci, odeberte FILENAME parametr a přidruženou ALTER DATABASE ADD FILE hodnotu z příkazu. Spravovaná instance určuje cestu k souboru automaticky.

    Pokud používáte instanci SQL Serveru, přizpůsobte hodnotu parametru FILENAME do umístění vhodného pro vaši instanci.

    Pokud chcete použít existující databázi, odeberte CREATE DATABASE příkaz a upravte USE příkaz na příslušný název databáze.

    SELECT Execute.

    CREATE DATABASE PartitionTest;
    GO
    
    USE PartitionTest;
    GO
    
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test1fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test2fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test3fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILEGROUP test4fg;
    
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest1,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest1.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test1fg;
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest2,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest2.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test2fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest3,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest3.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test3fg;
    GO
    ALTER DATABASE PartitionTest
    ADD FILE
    (
        NAME = partitiontest4,
        FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest4.ndf',
        SIZE = 5MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP test4fg;
    GO
    
    CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))
        AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;
    GO
    
    CREATE PARTITION SCHEME myRangePS1
        AS PARTITION myRangePF1
        TO (test1fg, test2fg, test3fg, test4fg) ;
    GO
    
    CREATE TABLE PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))
        ON myRangePS1 (col1) ;
    GO
    

Rozdělení tabulky pomocí SSMS

Podle kroků v této části můžete volitelně vytvořit skupiny souborů a odpovídající soubory a pak vytvořit dělenou tabulku nebo vytvořit existující tabulku pomocí Průvodce vytvořením oddílu v aplikaci SQL Server Management Studio (SSMS). Průvodce vytvořením oddílu je k dispozici v nástroji SSMS pro SQL Server a spravovanou instanci Azure SQL. Informace o azure SQL Database najdete v tématu Vytvoření dělené tabulky v jedné skupině souborů pomocí jazyka Transact-SQL.

Vytvoření nových skupin souborů (volitelné)

Pokud chcete umístit dělenou tabulku do jedné nebo více nových skupin souborů, postupujte podle kroků v této části. SQL Server i Azure SQL Managed Instance podporují vytváření skupin souborů a souborů. U služby Azure SQL Managed Instance se cesta všech vytvořených souborů automaticky nakonfiguruje za vás.

  1. V Průzkumníku objektů klikněte pravým tlačítkem myši na databázi, ve které chcete vytvořit dělenou tabulku, a vyberte Vlastnosti.

  2. V dialogovém okně Vlastnosti databáze -database_name v části Vybrat stránku vyberte Skupiny souborů.

  3. V části Řádky vyberte Přidat. Do nového řádku zadejte název skupiny souborů.

    Warning

    Při zadávání více skupin souborů musíte při vytváření oddílů vždy mít jednu další skupinu souborů kromě počtu skupin souborů určených pro hodnoty hranic.

  4. Pokračujte v přidávání řádků, dokud nevytvořili všechny skupiny souborů pro dělenou tabulku nebo tabulky.

  5. Vyberte OK.

  6. V části Vybrat stránku vyberte Soubory.

  7. V části Řádky vyberte Přidat. Do nového řádku zadejte název souboru a vyberte skupinu souborů.

  8. Pokračujte v přidávání řádků, dokud pro každou skupinu souborů nevytvořili aspoň jeden soubor.

Vytvoření dělené tabulky

  1. Volitelně rozbalte složku Tabulky a vytvořte tabulku, jak byste normálně měli. Další informace najdete v tématu Vytvoření tabulek (databázový stroj). Případně můžete v dalším kroku zadat existující tabulku.

  2. Klikněte pravým tlačítkem myši na tabulku, kterou chcete rozdělit, přejděte na úložiště a pak vyberte Vytvořit oddíl....

  3. V Průvodci vytvořením oddílu na stránce Vítá vás průvodce vytvořením oddílu vyberte Další.

  4. Na stránce Vybrat sloupec dělení v mřížce Dostupné sloupce pro dělení vyberte sloupec, na kterém chcete tabulku rozdělit. V mřížce dostupných sloupců se zobrazí pouze sloupce s datovými typy, které lze použít k dělení dat. Pokud jako sloupec dělení vyberete počítaný sloupec, musí se sloupec vytvořit jako trvalý sloupec.

    Volby, které máte pro sloupec dělení a rozsah hodnot, jsou určeny především rozsahem, v jakém se vaše data dají seskupit logickým způsobem. Můžete se například rozhodnout rozdělit data do logických seskupení podle měsíců nebo čtvrtletí roku. Dotazy, které plánujete provést s vašimi daty, určují, jestli je toto logické seskupení adekvátní ke správě oddílů tabulky. Všechny datové typy jsou platné pro dělení sloupců s výjimkou textu, ntext, obrázku, xml, časového razítka, varchar(max), nvarchar(max), varbinary(max), datových typů aliasů nebo uživatelem definovaných datových typů CLR (Common Language Runtime).

    Na této stránce jsou k dispozici následující další možnosti:

    Sloučit tuto tabulku s vybranou dělenou tabulkou
    Umožňuje vybrat dělenou tabulku, která obsahuje související data pro spojení s touto tabulkou ve sloupci dělení. Tabulky s děleními spojené na dělicích sloupcích jsou obvykle dotazovány efektivněji.

    Zarovnejte neunikátní indexy a jedinečné indexy se sloupcem indexovaného oddílu do úložiště
    Zarovná všechny indexy tabulky, které jsou rozdělené na oddíly se stejným schématem oddílů. Když je tabulka a její indexy zarovnané, můžete oddíly přesunout efektivněji do a z dělených tabulek, protože data jsou rozdělená stejným způsobem.

    Po výběru sloupce dělení a dalších možností vyberte Další.

  5. Na stránce Vybrat funkci oddílu vyberte v části Vybrat funkci oddílu možnost Nová funkce oddílu nebo Existující funkce oddílu. Pokud zvolíte Nová funkce oddílu, zadejte název funkce. Pokud zvolíte Existující funkci oddílu, vyberte ze seznamu název funkce, kterou chcete použít. Možnost Existující funkce oddílu nebude dostupná, pokud v databázi nejsou žádné další funkce oddílů.

    Po dokončení této stránky vyberte Další.

  6. Na stránce Vybrat schéma oddílů v části Vybrat schéma oddílů vyberte buďNové schéma oddílů , nebo Existující schéma oddílů. Pokud zvolíte Nové schéma diskových oddílů, zadejte název schématu. Pokud zvolíte Existující schéma oddílů, vyberte ze seznamu název schématu, které chcete použít. Možnost Existující schéma oddílů nebude dostupná, pokud databáze neobsahuje žádná jiná schémata oddílů.

    Po dokončení této stránky vyberte Další.

  7. Na stránce Mapovat oddíly v části Rozsah vyberte levou nebopravou hranici. Levá hranice určuje, že nejvyšší hraniční hodnota bude zahrnuta v oddílu. Pravá hranice určuje, že nejnižší hraniční hodnota bude zahrnuta do každé partice. Přečtěte si další informace o pravých a levých rozsazích ve funkci Partition.

    Při zadávání více hraničních bodů musíte vždy zadat jeden řádek navíc kromě řádků určených pro přiřazení hraničních hodnot ke skupině souborů.

    V části Select filegroups (Vybrat skupiny souborů) a zadejte mřížku hodnot hranic v části Filegroup (Skupina souborů) vyberte skupinu souborů, do které chcete data rozdělit. V části Hranice zadejte hodnotu hranice pro každou skupinu souborů. Pokud chcete přiřadit více oddílů nebo všechny oddíly do stejné skupiny souborů, vyberte pro každý řádek stejný název skupiny souborů. Pokud vyberete skupinu souborů na jednom řádku a hodnota hranice zůstane prázdná, funkce oddílu mapuje celou tabulku nebo index do jednoho oddílu pomocí názvu funkce oddílu.

    Na této stránce jsou k dispozici následující další možnosti:

    Nastavit hranice...
    Otevře dialogové okno Nastavit hodnoty hranic a vyberte hodnoty hranic a rozsahy kalendářních dat, které chcete pro oddíly použít. Tato možnost je dostupná jenom v případě, že jste vybrali sloupec dělení, který obsahuje jeden z následujících datových typů: date, datetime, smalldatetime, datetime2 nebo datetimeoffset.

    Odhad úložiště
    Odhaduje počet řádků, požadované místo a dostupné místo pro úložiště pro každou skupinu souborů zadanou pro oddíly. Tyto hodnoty se v mřížce zobrazují jako hodnoty jen pro čtení.

    Dialogové okno Nastavit hodnoty hranic umožňuje následující další možnosti:

    Počáteční datum
    Vybere počáteční datum pro hodnoty rozsahu oddílů.

    Koncové datum
    Vybere koncové datum pro hodnoty rozsahu oddílů. Pokud jste na stránce Mapovat oddíly vybrali levou hranici, bude toto datum poslední hodnotou pro každou skupinu souborů nebo oddíl. Pokud jste na stránce Mapové oddíly vybrali pravou hranici, bude toto datum první hodnotou v následující skupině souborů.

    Rozsah dat
    Vybere členitost data nebo hodnotu rozsahu, kterou chcete pro každý oddíl zvýšit.

    Po dokončení této stránky vyberte Další.

  8. Na stránce Vybrat výstupní možnost určete, jak chcete dokončit dělenou tabulku. Vyberte Vytvořit skript a vytvořte skript SQL založený na předchozích stránkách průvodce. Po dokončení všech zbývajících stránek v průvodci vyberte Spustit okamžitě, aby se vytvořila nová dělená tabulka. Vyberte Naplánovat a vytvořte novou dělenou tabulku v předem určeném čase v budoucnu.

    Pokud vyberete Vytvořit skript, jsou v části Možnosti skriptu k dispozici následující možnosti:

    Skript do souboru
    Vygeneruje skript jako soubor .sql. Zadejte název a umístění souboru do pole Název souboru nebo vyberte možnost Procházet... a otevřete dialogové okno Umístění souboru skriptu. V Uložit jakovyberte text Unicode nebo text ANSI.

    Zkopírovat skript do schránky
    Uloží skript do schránky.

    Skript do nového dotazového okna
    Vygeneruje skript do nového okna Editoru dotazů. Toto je výchozí výběr.

    Pokud vyberete Plán, pak vyberte Změnit plán.

    1. V dialogovém okně Nový plán úlohy zadejte do pole Název název plánu úlohy.

    2. V seznamu Typ plánu vyberte typ plánu:

      • Spustit automaticky při spuštění agenta SQL Serveru

      • Spustit pokaždé, když se procesory stanou nečinnými

      • Recurring. Tuto možnost vyberte, pokud se nová dělená tabulka pravidelně aktualizuje o nové informace.

      • Jednou. Toto je výchozí výběr.

    3. Vyberte nebo zrušte zaškrtnutí políčka Povoleno, abyste plán povolili nebo zakázali.

    4. Pokud vyberete Opakující se:

      1. Pod položkou Frekvence, na seznamu Výskyt, zadejte frekvenci výskytu:

        • Pokud vyberete Denní, do pole Opakuje se každých zadejte, jak často se plán úloh opakuje ve dnech.

        • Pokud vyberete Týdenní, v poli Opakuje se každých, zadejte, jak často se harmonogram úloh opakuje v týdnech. Vyberte den nebo dny v týdnu, ve které se plán úlohy spouští.

        • Pokud vyberete měsíční, vyberte buď den nebo .

          • Pokud vyberete Den, zadejte jak datum dne v měsíci, kdy má plán úlohy běžet, tak i frekvenci, jak často se má plán úlohy opakovat v měsících. Pokud například chcete, aby plán úlohy běžel 15. den v měsíci každý druhý měsíc, vyberte Den a do prvního pole zadejte "15" a do druhého pole zadejte "2". Největší povolené číslo v druhém poli je "99".

          • Pokud vyberete , zvolte konkrétní den v týdnu během měsíce, kdy má plán úlohy běžet, a jak často se plán úlohy opakuje v průběhu měsíců. Pokud například chcete, aby plán úlohy běžel v posledním týdnu v měsíci každý druhý měsíc, vyberte Den, vyberte poslední z prvního seznamu a pracovní den z druhého seznamu a do posledního pole zadejte "2". Můžete také vybrat první, druhý, třetínebo čtvrtýa také konkrétní pracovní dny (například neděle nebo středa) z prvních dvou seznamů. Největší povolené číslo v posledním poli je "99".

      2. V části Denní frekvenceurčete, jak často se plán úloh opakuje v den spuštění plánu úlohy:

        • Pokud vyberete Nastane jednou v, zadejte konkrétní čas, kdy má plán úlohy běžet v poli Nastane jednou v. Zadejte hodinu, minutu a sekundu dne a také AM nebo PM.

        • Pokud vyberete Nastane každý, určete, jak často se plán úlohy spouští v průběhu dne, který jste zvolili v nastavení Frekvence. Pokud například chcete, aby se plán úlohy opakoval každé 2 hodiny během dne, kdy je plán úlohy spuštěn, vyberte Opakuje se každé, do prvního pole zadejte "2" a potom v seznamu vyberte hodin. V tomto seznamu můžete také vybrat minutu(y) a sekundu(y). Největší povolené číslo v prvním poli je "100".

          Do pole Začátek v zadejte čas, kdy má začít běžet plán úlohy. Do pole Konec na zadejte čas, kdy má harmonogram úlohy přestat se opakovat. Zadejte hodinu, minutu a sekundu dne a také AM nebo PM.

      3. V části Doba trvánía v části Datum zahájenízadejte datum, kdy má plán úlohy začít běžet. Vyberte Koncové datum nebo Bez koncového data pro určení, kdy má plán úlohy přestat běžet. Pokud vyberete koncové datum, zadejte datum, kdy má plánovaná úloha přestat běžet.

    5. Pokud vyberete možnost Jednorázověv části Jednorázový výskyt, zadejte do pole Datum datum, kdy se plán úlohy spustí. V poli Čas zadejte čas, kdy má být spuštěn rozvrh úlohy. Zadejte hodinu, minutu a sekundu dne a také AM nebo PM.

    6. V části Souhrn, v Popis, ověřte, zda jsou všechna nastavení plánu úloh správná.

    7. Vyberte OK.

    Po dokončení této stránky vyberte Další.

  9. Na stránce Souhrn revizí v části Zkontrolovat vybrané možnosti rozbalte všechny dostupné možnosti a ověřte správnost všech nastavení oddílů. Pokud je vše podle očekávání, vyberte Dokončit.

  10. Na stránce Průběh průvodce vytvořením oddílu monitorujte informace o stavu akcí Průvodce vytvořením oddílu. V závislosti na možnostech, které jste vybrali v průvodci, může stránka průběhu obsahovat jednu nebo více akcí. V horním poli se zobrazí celkový stav průvodce a počet zpráv o stavu, chybě a upozorněních, které průvodce obdržel.

    Na stránce Průvodce průběhem vytváření oddílu jsou k dispozici následující možnosti:

    Details
    Poskytuje akci, stav a jakékoliv zprávy, které jsou vráceny z akce provedené průvodcem.

    Action
    Určuje typ a název každé akce.

    Status
    Určuje, zda akce průvodce jako celek vrátila hodnotu Úspěch nebo Neúspěch.

    Message
    Poskytuje všechny chybové nebo upozorňující zprávy, které se vrátí z procesu.

    Report
    Vytvoří sestavu, která obsahuje výsledky Průvodce vytvoření oddílu. Možnosti jsou Zobrazit sestavu, Uložit sestavu do souboru, Kopírovat sestavu do schránkya Odeslat sestavu e-mailem.

    zobrazení sestavy
    Otevře dialogové okno Zobrazit zprávu, které obsahuje textovou zprávu o průběhu Průvodce vytvořením oddílu.

    Uložit zprávu do souboru
    Otevře dialogové okno Uložit sestavu jako.

    Zkopírovat sestavu do Schránky
    Zkopíruje výsledky průběhové zprávy průvodce do schránky.

    odeslat sestavu jako e-mailovou zprávu
    Zkopíruje výsledky ze zprávy o průběhu vytvořené průvodcem do e-mailové zprávy.

    Po dokončení vyberte Zavřít.

Průvodce vytvořením oddílu vytvoří funkci a schéma oddílu a pak použije dělení na zadanou tabulku. Pokud chcete ověřit dělení tabulky, klikněte v Průzkumníku objektů pravým tlačítkem myši na tabulku a vyberte Vlastnosti. Vyberte stránku Úložiště . Na stránce se zobrazí informace, jako je název funkce oddílu a schéma a počet oddílů.

Dotazování metadat dělených tabulek a indexů

Můžete se dotazovat na metadata, abyste zjistili, jestli je tabulka rozdělená, body hranic pro dělenou tabulku, sloupec dělení pro dělenou tabulku, počet řádků v každém oddílu a jestli byla v oddílech implementována komprese dat .

Určení, jestli je tabulka rozdělená na oddíly

Následující dotaz vrátí jeden nebo více řádků, pokud je tabulka PartitionTable rozdělená na oddíly, nebo pokud jsou rozdělené nějaké neclusterované indexy v tabulce. Pokud tabulka není rozdělená na oddíly a neclusterované indexy v tabulce nejsou rozdělené do oddílů, nebudou vráceny žádné řádky.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, *
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.[object_id] = i.[object_id]
JOIN sys.partition_schemes ps
    ON i.data_space_id = ps.data_space_id
WHERE t.name = 'PartitionTable';
GO

Určení hodnot hranic pro dělenou tabulku

Následující dotaz vrátí hodnoty hranic pro každý oddíl v tabulce PartitionTable.

Dotaz používá type sloupec v sys.indexes k vrácení pouze informací pro clusterovaný index tabulky nebo pro základní tabulku, pokud je tabulka haldou. Pokud chcete do výsledků dotazu zahrnout všechny dělené neclusterované indexy, odeberte nebo zakomentujte AND i.type <= 1 z dotazu.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
    p.partition_number, p.partition_id, i.data_space_id, f.function_id, f.type_desc,
    r.boundary_id, r.value AS BoundaryValue
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.object_id = i.object_id
JOIN sys.partitions AS p
    ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN  sys.partition_schemes AS s
    ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
    ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
    ON f.function_id = r.function_id and r.boundary_id = p.partition_number
WHERE
    t.name = 'PartitionTable'
    AND i.type <= 1
ORDER BY SchemaName, t.name, i.name, p.partition_number;

Určení sloupce oddílu pro dělenou tabulku

Následující dotaz vrátí název sloupce dělení tabulky PartitionTable.

Dotaz používá type sloupec v sys.indexes k vrácení pouze informací pro clusterovaný index tabulky nebo pro základní tabulku, pokud je tabulka haldou. Pokud chcete do výsledků dotazu zahrnout všechny dělené neclusterované indexy, odeberte nebo zakomentujte AND i.type <= 1 z dotazu.

SELECT
    t.[object_id] AS ObjectID
    , SCHEMA_NAME(t.schema_id) AS SchemaName
    , t.name AS TableName
    , ic.column_id AS PartitioningColumnID
    , c.name AS PartitioningColumnName
    , i.name as IndexName
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.[object_id] = i.[object_id]
    AND i.[type] <= 1 -- clustered index or a heap
JOIN sys.partition_schemes AS ps
    ON ps.data_space_id = i.data_space_id
JOIN sys.index_columns AS ic
    ON ic.[object_id] = i.[object_id]
    AND ic.index_id = i.index_id
    AND ic.partition_ordinal >= 1 -- because 0 = non-partitioning column
JOIN sys.columns AS c
    ON t.[object_id] = c.[object_id]
    AND ic.column_id = c.column_id
WHERE t.name = 'PartitionTable';
GO

Určete řádky, které popisují možný rozsah hodnot v každé části.

Následující dotaz vrátí řádky podle oddílu pro tabulku PartitionTablea popis "relačních operátorů" pro funkci oddílu, která se používá. Zadejte původní dotaz od Kalen Delaney.

Dotaz používá type sloupec v sys.indexes k vrácení pouze informací pro clusterovaný index tabulky nebo pro základní tabulku, pokud je tabulka haldou. Pokud chcete do výsledků dotazu zahrnout všechny dělené neclusterované indexy, odeberte nebo zakomentujte AND i.type <= 1 z dotazu.

SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
    p.partition_number AS PartitionNumber, f.name AS PartitionFunctionName, p.rows AS Rows, rv.value AS BoundaryValue,
CASE WHEN ISNULL(rv.value, rv2.value) IS NULL THEN 'N/A'
ELSE
    CASE WHEN f.boundary_value_on_right = 0 AND rv2.value IS NULL THEN '>='
        WHEN f.boundary_value_on_right = 0 THEN '>'
        ELSE '>='
    END + ' ' + ISNULL(CONVERT(varchar(64), rv2.value), 'Min Value') + ' ' +
        CASE f.boundary_value_on_right WHEN 1 THEN 'and <'
                ELSE 'and <=' END
        + ' ' + ISNULL(CONVERT(varchar(64), rv.value), 'Max Value')
END AS TextComparison
FROM sys.tables AS t
JOIN sys.indexes AS i
    ON t.object_id = i.object_id
JOIN sys.partitions AS p
    ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN  sys.partition_schemes AS s
    ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
    ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
    ON f.function_id = r.function_id and r.boundary_id = p.partition_number
LEFT JOIN sys.partition_range_values AS rv
    ON f.function_id = rv.function_id
    AND p.partition_number = rv.boundary_id
LEFT JOIN sys.partition_range_values AS rv2
    ON f.function_id = rv2.function_id
    AND p.partition_number - 1= rv2.boundary_id
WHERE
    t.name = 'PartitionTable'
    AND i.type <= 1
ORDER BY t.name, p.partition_number;

Sloupec TextComparison popisuje možný rozsah hodnot v každém oddílu na základě definice funkce oddílu. Tady je zobrazení ukázkových výsledků dotazu:

SchemaName TableName IndexName Číslo oddílu PartitionFunctionName rows Hraniční hodnota Porovnávání textu
dbo Tabulka oddílů PK_PartitionTable 1 PFTest 0 2022-03-01 00:00:00.000 >= Minimální hodnota a < 1. března 2022 12:00
dbo Tabulka oddílů PK_PartitionTable 2 PFTest 2 2022-04-01 00:00:00.000 >= 1. března 2022 12:00 a < 1. dubna 2022 12:00
dbo Tabulka oddílů PK_PartitionTable 3 PFTest 1 2022-05-01 00:00:00.000 >= 1. dubna 2022 12:00 a < 1. května 2022 12:00
dbo Tabulka oddílů PK_PartitionTable 4 PFTest 0 2022-06-01 00:00:00.000 >= 1. května 2022 12:00 a < 1. června 2022 12:00
dbo Tabulka oddílů PK_TabulkaOddílů 5 PFTest 1 2022-07-01 00:00:00.000 >= 1. června 2022 12:00 a < 1. července 2022 12:00
dbo Tabulka oddílů PK_PartitionTable 6 PFTest 0 NULL >= 1. července 2022 12:00 AM a < maximální hodnota

Limitations

Seznamte se s omezeními a aspekty výkonu pro particionování v Omezeních.