Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Managed Instance
Každá databáze SQL Serveru má minimálně dva soubory operačního systému: datový soubor a soubor protokolu. Datové soubory obsahují data a objekty, jako jsou tabulky, indexy, uložené procedury a zobrazení. Soubory protokolu obsahují informace potřebné k obnovení všech transakcí v databázi. Datové soubory je možné seskupit do skupin souborů pro účely přidělování a správy.
Soubory databází
Databáze SQL Serveru mají tři typy souborů, jak je znázorněno v následující tabulce.
| File | Description |
|---|---|
| Primární | Obsahuje informace o spuštění databáze a odkazuje na ostatní soubory v databázi. Každá databáze má jeden primární datový soubor. Doporučená přípona názvu souboru pro primární datové soubory je .mdf. |
| Sekundární | Volitelné uživatelem definované datové soubory Data je možné rozprostřet mezi více disků tak, že každý soubor umístíte na jinou diskovou jednotku. Doporučená přípona názvu souboru pro sekundární datové soubory je .ndf. |
| Transakční protokol | Protokol obsahuje informace používané k obnovení databáze. Pro každou databázi musí existovat alespoň jeden soubor protokolu. Doporučená přípona názvu souboru pro transakční protokoly je .ldf. |
Například jednoduchá databáze Sales má jeden primární soubor, který obsahuje všechna data a objekty, a logovací soubor, který obsahuje informace transakčního protokolu. Složitější pojmenovanou Orders databázi lze vytvořit, která obsahuje jeden primární soubor a pět sekundárních souborů. Data a objekty v databázi jsou rozloženy do všech šesti souborů a čtyři soubory protokolu, které obsahují informace transakčního protokolu.
Ve výchozím nastavení se protokoly dat a transakcí umístí na stejnou jednotku a cestu pro zpracování systémů s jedním diskem. Tato volba nemusí být pro produkční prostředí optimální. Doporučujeme umístit data a soubory protokolů na samostatné disky.
Názvy logických a fyzických souborů
Soubory SQL Serveru mají dva typy názvů souborů:
logical_file_name: Název použitý k odkaz na fyzický soubor ve všech příkazech Transact-SQL. Název logického souboru musí splňovat pravidla pro identifikátory SQL Serveru a musí být jedinečný mezi názvy logických souborů v databázi.os_file_name: Název fyzického souboru včetně cesty k adresáři. Musí dodržovat pravidla pro názvy souborů operačního systému.
Další informace o argumentech NAME a FILENAME naleznete v tématu Možnosti souborů a skupin souborů v ALTER DATABASE.
Pokud na jednom počítači běží více instancí SYSTÉMU SQL Server, obdrží každá instance jiný výchozí adresář pro uložení souborů pro databáze vytvořené v instanci. Další informace naleznete v tématu Umístění souborů pro výchozí a pojmenované instance SYSTÉMU SQL Server.
Podpora systému souborů
Data a soubory protokolu SQL Serveru je možné umístit do systémů souborů FAT nebo NTFS. V systémech Windows společnost Microsoft doporučuje používat systém souborů NTFS kvůli bezpečnostním aspektům NTFS.
Skupiny souborů pro čtení a zápis dat a soubory protokolů nejsou podporované v komprimovaném systému souborů NTFS. Do komprimovaného systému souborů NTFS je možné umístit pouze databáze jen pro čtení a sekundární skupiny souborů jen pro čtení. Pro úsporu místa místo komprese systému souborů použijte kompresi dat .
Stránky datových souborů
Stránky v datovém souboru SQL Serveru jsou očíslovány postupně, počínaje nulou (0) pro první stránku v souboru. Každý soubor v databázi má jedinečné číslo ID souboru. K jednoznačné identifikaci stránky v databázi se vyžaduje ID souboru i číslo stránky. Následující příklad ukazuje čísla stránek v databázi, která má primární datový soubor 4 MB a sekundární datový soubor 1 MB.
Stránka záhlaví souboru je první stránka, která obsahuje informace o atributech souboru. Několik dalších stránek na začátku souboru obsahuje také systémové informace, jako jsou mapy přidělení. Jednou ze systémových stránek uložených v primárním datovém souboru i prvním souboru protokolu je spouštěcí stránka databáze, která obsahuje informace o atributech databáze.
Velikost souboru
Soubory SQL Serveru se můžou automaticky zvětšovat z původně zadané velikosti. Při definování souboru můžete určit konkrétní přírůstek velikosti. Pokaždé, když je soubor vyplněný, zvětšuje jeho velikost přírůstkem. Pokud je ve skupině souborů více souborů, nebudou se automaticky zvětšovat, dokud nebudou všechny soubory plné.
Další informace o stránkách a typech stránek najdete v průvodci architekturou stránek a rozsahů.
Každý soubor může mít také zadanou maximální velikost. Pokud není zadaná maximální velikost, může se soubor dál zvětšovat, dokud nevyužil veškeré dostupné místo na disku. Tato funkce je zvlášť užitečná, když se SQL Server používá jako databáze vložená do aplikace, kde uživatel nemá pohodlný přístup k správci systému. Uživatel může nechat soubory automaticky narůst, aby se snížila administrativní zátěž při monitorování volného místa v databázi a ruční přidělení dalšího prostoru.
Další informace o správě souborů transakčního protokolu naleznete v tématu Správa velikosti souboru transakčního protokolu.
Soubory snímků databáze
Forma souboru, který používá snímek databáze k uložení dat kopírování při zápisu, závisí na tom, jestli je snímek vytvořen uživatelem nebo použit interně:
Snímek databáze vytvořený uživatelem ukládá data do jednoho nebo více zhuštěnějších souborů. Technologie řídkých souborů je vlastnost systému souborů NTFS. Nejprve řídký soubor neobsahuje žádná uživatelská data a místo na disku pro uživatelská data nebylo přiděleno řídkému souboru. Obecné informace o použití řídkých souborů ve snímcích databáze a o tom, jak se snímky databáze zvětšují, najdete v tématu Zobrazení velikosti zhuštěného souboru snímku databáze.
Snímky databáze jsou používány interně určitými příkazy DBCC. Mezi tyto příkazy patří
DBCC CHECKDB,DBCC CHECKTABLE,DBCC CHECKALLOCaDBCC CHECKFILEGROUP. Interní snímek databáze používá řídké alternativní datové proudy původních databázových souborů. Stejně jako zhuštěné soubory jsou alternativní datové proudy funkcí systému souborů NTFS. Použití řídkých alternativních datových proudů umožňuje přidružit více přidělení dat k jednomu souboru nebo složce, aniž by to ovlivnilo velikost souboru nebo statistiku svazku.
Filegroups
- Primární skupina souborů obsahuje primární datový soubor a všechny sekundární soubory, které nejsou vložené do jiných skupin souborů.
- Uživatelem definované skupiny souborů je možné vytvořit pro seskupení datových souborů společně pro účely správy, přidělování dat a umístění.
Například: Data1.ndf, Data2.ndfa Data3.ndf, lze vytvořit na třech diskových jednotkách, v uvedeném pořadí, a přiřazeny ke skupině fgroup1souborů . Pak lze vytvořit tabulku speciálně pro skupinu fgroup1souborů . Dotazy na data z tabulky budou rozloženy mezi tři disky; zvýší výkon. Stejného zlepšení výkonu lze dosáhnout pomocí jednoho souboru vytvořeného v sadě stripe RAID (redundantní pole nezávislých disků). Soubory a skupiny souborů ale umožňují snadno přidávat nové soubory na nové disky.
Všechny datové soubory jsou uloženy ve skupinách souborů uvedených v následující tabulce.
| Filegroup | Description |
|---|---|
| Primární | Skupina souborů, která obsahuje primární soubor. Všechny systémové tabulky jsou součástí primární skupiny souborů. |
| Data optimalizovaná pro paměť | Skupina souborů optimalizovaná pro paměť je založená na skupině souborů FILESTREAM. |
| Filestream | Nestrukturovaná data uložená v adresářích systému souborů. |
| Uživatelem definované | Jakákoli skupina souborů vytvořená uživatelem, když uživatel nejprve vytvoří nebo později upraví databázi. |
Výchozí (primární) skupina souborů
Při vytváření objektů v databázi bez určení skupiny souborů, do které patří, jsou přiřazeny k výchozí skupině souborů. Kdykoli je jako výchozí skupina souborů určená právě jedna skupina souborů. Soubory ve výchozí skupině souborů musí být dostatečně velké, aby byly všechny nové objekty nepřidělovány jiným skupinám souborů.
Skupina PRIMARY souborů je výchozí skupina souborů, pokud se nezmění pomocí příkazu ALTER DATABASE . Přidělení systémových objektů a tabulek zůstává v rámci PRIMARY skupiny souborů, nikoli nové výchozí skupiny souborů.
Skupina datových souborů optimalizovaných pro paměť
Další informace o souborových skupinách optimalizovaných pro paměť naleznete v tématu Skupina souborů optimalizovaná pro paměť.
FILESTREAM skupina souborů
Další informace o souborových skupinách FILESTREAM naleznete v tématu FILESTREAM a vytvoření FILESTREAM-Enabled Databáze.
Příklad souboru a skupiny souborů
Následující příklad vytvoří databázi na instanci SQL Serveru. Databáze obsahuje primární datový soubor, uživatelsky definovanou skupinu souborů a soubor protokolu. Primární datový soubor je v primární skupině souborů a skupina souborů definovaná uživatelem má dva sekundární datové soubory. Příkaz ALTER DATABASE nastaví skupinu souborů definovanou uživatelem jako výchozí. Pak se vytvoří tabulka určující uživatelem definovanou skupinu souborů. (Tento příklad používá obecnou cestu C:\Program Files\Microsoft SQL Server\MSSQL.1 , aby se zabránilo zadání verze SQL Serveru.)
USE master;
GO
-- Create the database with the default data
-- filegroup, FILESTREAM filegroup and a log file. Specify the
-- growth increment and the max size for the
-- primary data file.
CREATE DATABASE MyDB
ON
PRIMARY (
NAME = 'MyDB_Primary',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_Prm.mdf',
SIZE = 4 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 1 MB
),
FILEGROUP MyDB_FG1 (
NAME = 'MyDB_FG1_Dat1',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_1.ndf',
SIZE = 1 MB,
MAXSIZE = 10 MB, FILEGROWTH = 1 MB
), (
NAME = 'MyDB_FG1_Dat2',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_2.ndf',
SIZE = 1 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 1 MB
),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM (
NAME = 'MyDB_FG_FS',
FILENAME = 'C:\Data\filestream1'
)
LOG ON (
NAME = 'MyDB_log',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB.ldf',
SIZE = 1 MB,
MAXSIZE = 10 MB,
FILEGROWTH = 1 MB
);
ALTER DATABASE MyDB
MODIFY FILEGROUP MyDB_FG1 DEFAULT;
-- Create a table in the user-defined filegroup.
USE MyDB;
GO
CREATE TABLE MyTable
(
cola INT PRIMARY KEY,
colb CHAR (8)
) ON MyDB_FG1;
GO
-- Create a table in the FILESTREAM filegroup
CREATE TABLE MyFSTable
(
cola INT PRIMARY KEY,
colb VARBINARY (MAX) FILESTREAM NULL
);
Následující obrázek shrnuje výsledky předchozího příkladu (s výjimkou dat FILESTREAM).
Strategie vyplňování souborů a skupin souborů
Skupiny souborů používají strategii proporcionální výplně ve všech souborech v rámci každé skupiny souborů. Vzhledem k tomu, že se data zapisují do skupiny souborů, databázový stroj SQL Serveru zapíše množství úměrné volnému místu v souboru ke každému souboru v rámci skupiny souborů, místo aby zapisovala všechna data do prvního souboru, dokud se nezaplní. Potom se zapíše do dalšího souboru. Pokud má například soubor f1 100 MB zdarma a soubor f2 má 200 MB zdarma, jeden rozsah je uveden ze souboru f1, dva rozsahy ze souboru f2atd. Tímto způsobem se oba soubory zaplní přibližně ve stejnou dobu a dosáhne se jednoduchého prokládání.
Například skupina souborů se skládá ze tří souborů, všechny nastavené tak, aby se automaticky zvětšovala. Když se vyčerpá mezera ve všech souborech ve skupině souborů, rozbalí se jenom první soubor. Když je první soubor plný a do skupiny souborů nelze zapsat žádná další data, druhý soubor se rozbalí. Pokud je druhý soubor plný a do skupiny souborů nelze zapsat žádná další data, třetí soubor se rozbalí. Pokud se třetí soubor zaplní a do skupiny souborů se nedají zapsat žádná další data, první soubor se znovu rozbalí a tak dále.
Pravidla pro navrhování souborů a skupin souborů
Následující pravidla se týkají souborů a skupin souborů:
Soubor nebo skupina souborů nelze použít více než jednou databází. Například soubory
sales.mdfasales.ndf, které obsahují data a objekty z prodejní databáze, nemohou být použity žádnou jinou databází.Soubor může být členem pouze jedné skupiny souborů.
Soubory transakčních protokolů nejsou nikdy součástí žádné skupiny souborů.
Recommendations
Doporučení při práci se soubory a skupinami souborů:
Většina databází bude dobře fungovat s jedním datovým souborem a jedním souborem transakčního protokolu.
Pokud používáte více datových souborů, vytvořte druhou skupinu souborů pro další soubor a vytvořte tuto skupinu souborů jako výchozí. Tímto způsobem bude primární soubor obsahovat pouze systémové tabulky a objekty.
Pokud chcete co nejvýkonněji dosáhnout výkonu, vytvořte soubory nebo skupiny souborů na různých dostupných discích. Umístěte objekty, které silně soupeří o prostor v různých skupinách souborů.
Pomocí skupin souborů můžete povolit umístění objektů na konkrétních fyzických discích.
Umístěte různé tabulky použité ve stejných dotazech spojení do různých skupin souborů. Tento krok zlepší výkon, protože vstupně-výstupní operace paralelního disku vyhledá připojená data.
Umisťujte silně přístupné tabulky a neclusterované indexy, které patří do těchto tabulek v různých skupinách souborů. Použití různých skupin souborů zlepší výkon, protože dochází k paralelním vstupně-výstupním operacím, pokud jsou soubory umístěné na různých fyzických discích.
Neukládejte soubory transakčního protokolu na stejný fyzický disk, který obsahuje ostatní soubory a skupiny souborů.
Pokud potřebujete rozšířit svazek nebo oddíl, ve kterém se nacházejí soubory databáze pomocí nástrojů, jako je diskpart, měli byste nejprve zálohovat všechny systémové a uživatelské databáze a nejprve zastavit služby SQL Serveru. Po úspěšném rozšíření svazků disků byste měli zvážit spuštění příkazu DBCC CHECKDB , abyste zajistili fyzickou integritu všech databází umístěných na svazku.
Další informace o doporučeních pro správu souborů transakčního protokolu naleznete v tématu Správa velikosti souboru transakčního protokolu.