Kad tas uzlabo ātrdarbību:
- Veidojot jaunu datu bāzi (tas attiecas tikai uz datu failiem. Uz log failu nē);
- Atjaunojot datu bāzi no rezerves kopijas (atjaunojot no rezerves kopijas, no sākuma tiek izveidota datu bāze vajadzīgajā izmērā un tad atjaunoti dati. Tātad, pirmais posms kļūst daudz ātrāks);
- Brīdī, kad notiek datu bāzes faila palielināšana (kad notiek faila automātiska palielināšana vai arī, ja to dara manuāli izmantojot T-SQL);
- Startējot SQL Server instanci (katru reizi tiek veidota tempdb datu bāze, tās izveide notiek ātrāk. Tas spēlē lomu, ja maina tempdb sākotnējo izmēru SQL Server. Ja nu kas, to darīt ir labā prakse)
- Neattiecas uz LOG failiem;
- Drošības caurums, gadījumā, ja SQL Server administrators nav Windows administrators. Šādā gadījumā SQL Server administrators var piekļūt OS dzēstajiem datiem. Šis fakts gan realitātē ļoti, ļoti, ļoti retos gadījumos var kļūt par īstu "drošības caurumu".
- Ja darbojas TDE, tad šī iespēja nevar tikt izmantota. Arī Retinātie faili (Sparse files) šo iespēju neizmanto un tas arī nav nepieciešams retināto failu gadījumā.
Lai izmantotu šo iespēju SQL Server instances kontam (service account) jāpiešķir tiesības "Perform volume maintenance tasks" jeb savādāk apzīmē "SE_MANAGE_VOLUME_NAME".
Pa soļiem:
- Ir jāzina, ar kādu kontu strādā SQL Server. Interesants veids kā to izdarīt izmantojot T-SQL (avots):
DECLARE @serviceaccount varchar(100)
EXECUTE master.dbo.xp_instance_regread
N'HKEY_LOCAL_MACHINE',
N'SYSTEM\CurrentControlSet\Services\MSSQLSERVER',
N'ObjectName',
@ServiceAccount OUTPUT,
N'no_output'
SELECT @Serviceaccount - Administrative Tools -> Local Security Policy, pēc tam Local Policies -> user Rights Assignment -> Perform volume maintenance tasks:
- Pievienojam servisa kontu add user or group:
- (Ja tiek izmantots SQL Server Klasteris, šis jāatkārto visiem datoriem)
- Pārstartē SQL Server instanci
Testu veicu pāris reizes izveidojot tukšu datu bāzi.
CREATE DATABASE [CreateTimeTest] ON PRIMARYKā jau iepriekš tika minēts, LOG failam šī iespēja netiek izmantota. tātad, pus GB tiek nullēts abos gadījumos. Datu fails aizņem 2 GB.
(
NAME = N'CreateTimeTest',
FILENAME = N'C:\DATA\CreateTimeTest.mdf' ,
SIZE = 2048000KB ,
FILEGROWTH = 10%
)
LOG ON
(
NAME = N'CreateTimeTest_log',
FILENAME = N'C:\DATA\CreateTimeTest_log.ldf' ,
SIZE = 512000KB ,
FILEGROWTH = 10%
)
Go
Drop Database [CreateTimeTest]
Vidējais laiks pirms iespējas pieslēgšanas: 18 sekundes
Vidējais laiks pēc iespējas pieslēgšanas: 5 sekundes
Ja log faila izmēru norāda ļoti mazu, tad izveides laiks nokrīt līdz 0 sekundēm (tātad, milisekundēm).
Jāatzīmē, ka šis ir visai triviāls piemērs, kurā cīņa ir par sekundēm. Reālākos testos šie skaitļi var sasniegt daudzas minūtes.
Avoti:
Database File Initialization
How and Why to Enable Instant File Initialization
Nav komentāru:
Ierakstīt komentāru