Uvnitř úložiště:Anatomie záznamu
Toto je pro SQL Server 2005
- záhlaví záznamu
- 4 bajty dlouhé
- dva bajty metadat záznamu (typ záznamu)
- dva bajty směřující vpřed v záznamu na bitmapu NULL
- část záznamu s pevnou délkou obsahující sloupce ukládající datové typy s pevnou délkou (např. bigint, char(10), datetime)
- NULL bitmapa
- dva bajty pro počet sloupců v záznamu
- proměnný počet bajtů pro uložení jednoho bitu na sloupec v záznamu, bez ohledu na to, zda sloupec má hodnotu null či nikoli (to je jiné a jednodušší než SQL Server 2000, který měl pouze jeden bit na sloupec s možností null)
- to umožňuje optimalizaci při čtení sloupců, které mají hodnotu NULL
- Pole posunutí sloupců s proměnnou délkou
- dva bajty pro počet sloupců s proměnnou délkou
- dva bajty na sloupec s proměnlivou délkou, s posunem na konec značky valueversioning ve sloupci
- toto je pouze v SQL Server 2005 a je to 14bajtová struktura, která obsahuje časové razítko a ukazatel na úložiště verzí v databázi tempdb
Takže za jeden znak (8000)
- 4 bajty (záhlaví záznamu)
- 8000 pevná délka
- 3 nulová bitmapa
- 2 bajty pro počítání proměnné délky
- 14 časové razítko
Pokud jste však měli 40 sloupců varchar(200)
- 4 bajty (záhlaví záznamu)
- 0 pevné délky
- 6 nulová bitmapa
- 2 bajty pro počítání proměnné délky
- 202 x 40 =8080
- 14 časové razítko
Celkem =8080 + 4 + 6 + 2 + 14 =8106. WTF? Při vytvoření této tabulky se zobrazí varování
Moc bych se tím nezavěsil:tato informace nemá ne praktickou každodenní hodnotu