Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Legalább minden SQL Server-adatbázis két operációsrendszer-fájllal rendelkezik: egy adatfájllal és egy naplófájllal. Az adatfájlok olyan adatokat és objektumokat tartalmaznak, mint a táblák, indexek, tárolt eljárások és nézetek. A naplófájlok tartalmazzák az adatbázis összes tranzakciójának helyreállításához szükséges információkat. Az adatfájlok fájlcsoportokba csoportosíthatók foglalási és adminisztrációs célokra.
Adatbázisfájlok
Az SQL Server-adatbázisok három fájltípussal rendelkeznek, ahogyan az az alábbi táblázatban is látható.
| File | Description |
|---|---|
| Elsődleges | Az adatbázis indítási adatait tartalmazza, és az adatbázis többi fájlra mutat. Minden adatbázis egy elsődleges adatfájllal rendelkezik. Az elsődleges adatfájlok ajánlott fájlnévkiterjesztése a következő .mdf: . |
| másodlagos | Nem kötelező, felhasználó által definiált adatfájlok. Az adatok több lemezen is eloszthatók, ha mindegyik fájlt egy másik lemezmeghajtóra helyezik. A másodlagos adatfájlok ajánlott fájlnévkiterjesztése a következő .ndf: . |
| Tranzakció-napló | A napló az adatbázis helyreállításához használt adatokat tartalmazza. Minden adatbázishoz legalább egy naplófájlnak kell lennie. A tranzakciónaplókhoz ajánlott fájlnévkiterjesztés a következő .ldf: . |
Egy egyszerű, elnevezett Sales adatbázis például egy elsődleges fájllal rendelkezik, amely tartalmazza az összes adatot és objektumot, valamint egy naplófájlt, amely tartalmazza a tranzakciónapló adatait. Egy összetettebb nevű Orders adatbázis hozható létre, amely egy elsődleges fájlt és öt másodlagos fájlt tartalmaz. Az adatbázisban lévő adatok és objektumok mind a hat fájlra kiterjednek, a négy naplófájl pedig a tranzakciónapló adatait tartalmazza.
Alapértelmezés szerint az adatok és a tranzakciónaplók ugyanarra a meghajtóra és elérési útra kerülnek az egylemezes rendszerek kezeléséhez. Lehet, hogy ez a választás nem optimális gyártási környezetekhez. Javasoljuk, hogy külön lemezekre helyezzen adatokat és naplófájlokat.
Logikai és fizikai fájlnevek
Az SQL Server-fájlok két fájlnévtípust különböztetnek meg:
logical_file_name: A fizikai fájlra való hivatkozáshoz használt név az összes Transact-SQL utasításban. A logikai fájlnévnek meg kell felelnie az SQL Server-azonosítókra vonatkozó szabályoknak, és egyedinek kell lennie az adatbázisban található logikai fájlnevek között.os_file_name: A fizikai fájl neve, beleértve a könyvtár elérési útját. Az operációsrendszer-fájlnevekre vonatkozó szabályokat kell követnie.
A NAME és FILENAME argumentumokkal kapcsolatos további információkért lásd: ALTER DATABASEFájl- és fájlcsoportbeállítások.
Ha az SQL Server több példánya fut egyetlen számítógépen, minden példány egy másik alapértelmezett könyvtárat kap a példányban létrehozott adatbázisok fájljainak tárolásához. További információ: Az SQL Server alapértelmezett és elnevezett példányainak fájlhelyei.
Fájlrendszer-támogatás
Az SQL Server-adatok és naplófájlok FAT- vagy NTFS-fájlrendszereken is elhelyezhetők. Windows rendszereken a Microsoft az NTFS fájlrendszer használatát javasolja, mert az NTFS biztonsági szempontjait figyelembe véve.
Az olvasási/írási adatfájlcsoportok és naplófájlok ntfs tömörített fájlrendszereken nem támogatottak. Ntfs tömörített fájlrendszerre csak írásvédett adatbázisok és írásvédett másodlagos fájlcsoportok helyezhetők el. Helytakarékossághoz használjon adattömörítést a fájlrendszer tömörítése helyett.
Adatfájl-lapok
Az SQL Server-adatfájlban lévő lapok számozása sorrendben, nullával (0) kezdődik a fájl első oldalához. Az adatbázis minden fájlja egyedi fájlazonosítóval rendelkezik. Egy adatbázis lapjának egyedi azonosításához a fájlazonosítóra és az oldalszámra is szükség van. Az alábbi példa egy 4 MB elsődleges adatfájllal és egy 1 MB másodlagos adatfájllal rendelkező adatbázis oldalszámát mutatja be.
A fájlfejléclap az első oldal, amely a fájl attribútumairól tartalmaz információkat. A fájl elején található lapok közül több is tartalmaz rendszerinformációkat, például foglalási térképeket. Az elsődleges adatfájlban és az első naplófájlban tárolt rendszeroldalak egyike egy adatbázis-rendszerindító oldal, amely az adatbázis attribútumairól tartalmaz információkat.
Fájlméret
Az SQL Server-fájlok az eredetileg megadott méretüktől kezdve automatikusan növekedhetnek. Fájl definiálásakor megadhat egy adott növekedési növekményt. Minden alkalommal, amikor a fájl megtelik, a növekedés növekedésével növeli a méretét. Ha egy fájlcsoportban több fájl található, nem fognak automatikusan növekedni (méretben), amíg minden fájl meg nem telik.
Az oldalakról és az oldaltípusokról további információt a Pages and Extents architektúra útmutatójában talál.
Az egyes fájlok maximális mérete is megadható. Ha nincs megadva a maximális méret, a fájl tovább növekedhet, amíg a lemezen nem használja az összes rendelkezésre álló helyet. Ez a funkció különösen akkor hasznos, ha az SQL Servert olyan alkalmazásba beágyazott adatbázisként használják, amelyben a felhasználó nem rendelkezik megfelelő hozzáféréssel a rendszergazdához. A felhasználó engedélyezheti, hogy a fájlok szükség szerint automatikusan növekedjenek az adatbázis szabad területének felügyelete és a további tárhely manuális kiosztása adminisztrációs terheinek csökkentése érdekében.
A tranzakciónapló-fájlkezeléssel kapcsolatos további információkért lásd a tranzakciónapló-fájl méretének kezelését ismertető témakört.
Adatbázis-pillanatképfájlok
Az adatbázis-pillanatképek által az írásra másolt adatok tárolására használt fájl formája attól függ, hogy a pillanatképet egy felhasználó hozza-e létre, vagy belsőleg használja-e:
A felhasználó által létrehozott adatbázis-pillanatképek egy vagy több ritka fájlban tárolják az adatait. A ritka fájltechnológia az NTFS fájlrendszer egyik funkciója. Először a ritka fájlok nem tartalmaznak felhasználói adatokat, és a felhasználói adatok lemezterülete nem lett lefoglalva a ritka fájlhoz. A ritkán használt fájlok adatbázis-pillanatképekben való használatáról és az adatbázis-pillanatképek növekedéséről az adatbázis-pillanatképek ritkán használt fájljának méretének megtekintése című témakörben olvashat.
Az adatbázis-pillanatképeket egyes DBCC-parancsok belsőleg használják. Ezek a parancsok a következők:
DBCC CHECKDB,DBCC CHECKTABLE,DBCC CHECKALLOCésDBCC CHECKFILEGROUP. Az adatbázis-pillanatképek belső készítése során az eredeti adatbázisfájlok ritka alternatív adatfolyamait használják. A ritka fájlokhoz hasonlóan a másodlagos adatfolyamok is az NTFS fájlrendszer egyik funkciója. A ritka alternatív adatfolyamok használata lehetővé teszi, hogy több adatfoglalás egyetlen fájlhoz vagy mappához legyen társítva anélkül, hogy ez hatással lenne a fájlméretre vagy a kötetstatisztikára.
Filegroups
- Az elsődleges fájlcsoport tartalmazza az elsődleges adatfájlt és azokat a másodlagos fájlokat, amelyek nem kerülnek más fájlcsoportokba.
- Felhasználó által definiált fájlcsoportok hozhatók létre az adatfájlok felügyeleti, adatelosztási és elhelyezési célokra való csoportosításához.
Például: Data1.ndf, Data2.ndfés Data3.ndf, három lemezmeghajtón hozható létre, és hozzárendelhető a fájlcsoporthoz fgroup1. Ezután létrehozhat egy táblát kifejezetten a fájlcsoporton fgroup1. A tábla adataira vonatkozó lekérdezések a három lemezen lesznek elosztva; javítja a teljesítményt. Ugyanez a teljesítménybeli javulás egy RAID (független lemezek redundáns tömbje) szalagkészleten létrehozott egyetlen fájllal is elvégezhető. A fájlok és a fájlcsoportok azonban lehetővé teszik új fájlok új lemezekhez való hozzáadását.
Az összes adatfájl az alábbi táblázatban felsorolt fájlcsoportokban van tárolva.
| Filegroup | Description |
|---|---|
| Elsődleges | Az elsődleges fájlt tartalmazó fájlcsoport. Minden rendszertábla az elsődleges fájlcsoport része. |
| Memóriaoptimalizált adatok | A memóriaoptimalizált fájlcsoport a FILESTREAM fájlcsoporton alapul |
| Filestream | A fájlrendszerkönyvtárakban tárolt strukturálatlan adatok. |
| Felhasználó által definiált | Minden olyan fájlcsoport, amelyet a felhasználó akkor hoz létre, amikor a felhasználó először létrehozza vagy később módosítja az adatbázist. |
Alapértelmezett (elsődleges) fájlcsoport
Ha az objektumok anélkül jönnek létre az adatbázisban, hogy meg nem adják, hogy melyik fájlcsoporthoz tartoznak, a rendszer az alapértelmezett fájlcsoporthoz rendeli őket. A rendszer bármikor pontosan egy fájlcsoportot jelöl ki alapértelmezett fájlcsoportként. Az alapértelmezett fájlcsoport fájljainak elég nagynak kell lenniük ahhoz, hogy minden olyan új objektumot tartsanak, amelyet más fájlcsoportok nem foglalnak le.
A PRIMARY fájlcsoport az alapértelmezett fájlcsoport, kivéve, ha az ALTER DATABASE utasítás használatával módosul. A rendszerobjektumok és táblák kiosztása a PRIMARY fájlcsoporton belül marad, nem pedig az új alapértelmezett fájlcsoportban.
Memóriaoptimalizált adatfájlcsoport
A memóriaoptimalizált fájlcsoportokról további információt a Memóriaoptimalizált fájlcsoport című témakörben talál.
FILESTREAM fájlcsoport
A FILESTREAM-fájlcsoportokról további információt a FILESTREAM és a FILESTREAM-Enabled-adatbázis létrehozása című témakörben talál.
Példa fájl- és fájlcsoportra
Az alábbi példa létrehoz egy adatbázist az SQL Server egy példányán. Az adatbázis elsődleges adatfájllal, felhasználó által definiált fájlcsoporttal és naplófájllal rendelkezik. Az elsődleges adatfájl az elsődleges fájlcsoportban található, a felhasználó által definiált fájlcsoport pedig két másodlagos adatfájllal rendelkezik. Egy ALTER DATABASE utasítás a felhasználó által definiált fájlcsoportot állítja alapértelmezettként. Ezután létrejön egy tábla, amely megadja a felhasználó által definiált fájlcsoportot. (Ez a példa egy általános elérési utat C:\Program Files\Microsoft SQL Server\MSSQL.1 használ az SQL Server verziójának megadásának elkerülése érdekében.)
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
);
Az alábbi ábra az előző példa eredményeit foglalja össze (a FILESTREAM-adatok kivételével).
Fájl- és fájlcsoportkitöltési stratégia
A fájlcsoportok arányos kitöltési stratégiát használnak az egyes fájlcsoportokon belüli összes fájlra vonatkozóan. Mivel az adatok a fájlcsoportba íródnak, az SQL Server adatbázismotor a fájlban lévő szabad területtel arányos összeget ír a fájlcsoport minden fájljára, ahelyett, hogy az összes adatot az első fájlba írné, amíg meg nem telik. Ezután a következő fájlba ír. Ha például a fájl f1 100 MB szabad, és a fájl f2 200 MB szabad, akkor egy kiterjesztés adható meg a fájlból f1, két kiterjesztés a fájlból f2, és így tovább. Ily módon mindkét fájl körülbelül egy időben megtelik, és egyszerű csíkozás érhető el.
Egy fájlcsoport például három fájlból áll, és mindegyik automatikusan növekszik. Ha a fájlcsoport összes fájljában elfogy a hely, csak az első fájl lesz kibontva. Ha az első fájl megtelt, és nem lehet több adatot írni a fájlcsoportba, a második fájl ki lesz bontva. Ha a második fájl megtelt, és nem lehet több adatot írni a fájlcsoportba, a harmadik fájl ki lesz bontva. Ha a harmadik fájl megtelik, és nem lehet több adatot írni a fájlcsoportba, az első fájl újra ki lesz bontva, és így tovább.
Fájlok és fájlcsoportok tervezésének szabályai
A következő szabályok fájlokra és fájlcsoportokra vonatkoznak:
Több adatbázis nem használhat fájlokat vagy fájlcsoportokat. Az értékesítési adatbázisból származó adatokat és objektumokat tartalmazó fájlokat
sales.mdféssales.ndfobjektumokat például más adatbázisok nem használhatják.Egy fájl csak egy fájlcsoport tagja lehet.
A tranzakciós naplófájlok soha nem részei egyetlen fájlcsoportnak sem.
Recommendations
Javaslatok fájlok és fájlcsoportok használatakor:
A legtöbb adatbázis jól működik egyetlen adatfájllal és egyetlen tranzakciós naplófájllal.
Ha több adatfájlt használ, hozzon létre egy második fájlcsoportot a további fájlhoz, és állítsa a fájlcsoportot az alapértelmezett fájlcsoportra. Ily módon az elsődleges fájl csak rendszertáblákat és objektumokat fog tartalmazni.
A teljesítmény maximalizálása érdekében a lehető legtöbb rendelkezésre álló lemezen hozzon létre fájlokat vagy fájlcsoportokat. Helyezzen el olyan objektumokat, amelyek nagy mértékben versenyeznek a különböző fájlcsoportokban lévő térért.
Fájlcsoportok használatával engedélyezheti az objektumok adott fizikai lemezeken való elhelyezését.
Helyezzen el különböző táblákat, amelyeket ugyanabban az illesztő lekérdezésben használnak különböző fájlcsoportokban. Ez a lépés javítja a teljesítményt, mivel a párhuzamos lemez I/O az összekapcsolt adatokat keresi.
Helyezze a gyakran elért táblákat és a hozzájuk tartozó nem klaszteres indexeket külön fájlcsoportokba. A különböző fájlcsoportok használata a párhuzamos I/O miatt javítja a teljesítményt, ha a fájlok különböző fizikai lemezeken találhatók.
Ne helyezze a tranzakciónapló-fájlokat ugyanarra a fizikai lemezre, amelyen a többi fájl és fájlcsoport található.
Ha ki kell terjesztenie egy kötetet vagy partíciót, amelyen az adatbázisfájlok találhatók olyan eszközökkel, mint a diskpart, biztonsági másolatot kell készítenie az összes rendszer- és felhasználói adatbázisról, és először le kell állítania az SQL Server-szolgáltatásokat. A lemezkötetek sikeres kiterjesztése után érdemes a DBCC CHECKDB parancs futtatásával biztosítani a köteten található összes adatbázis fizikai integritását.
A tranzakciónapló-fájlkezelési javaslatokról további információt a tranzakciónapló-fájl méretének kezelése című témakörben talál.