Di dalam Mesin Penyimpanan:Anatomi catatan
Ini untuk SQL Server 2005
- rekaman tajuk
- panjang 4 byte
- dua byte metadata rekaman (tipe rekaman)
- dua byte mengarah ke depan dalam catatan ke bitmap NULL
- bagian dengan panjang tetap dari catatan, berisi kolom yang menyimpan tipe data yang memiliki panjang tetap (misalnya bigint, char(10), datetime)
- Bitmap NULL
- dua byte untuk jumlah kolom dalam catatan
- jumlah variabel byte untuk menyimpan satu bit per kolom dalam catatan, terlepas dari apakah kolom tersebut dapat dibatalkan atau tidak (ini berbeda dan lebih sederhana dari SQL Server 2000 yang hanya memiliki satu bit per kolom yang dapat dibatalkan)
- ini memungkinkan pengoptimalan saat membaca kolom yang NULL
- array offset kolom dengan panjang variabel
- dua byte untuk jumlah kolom dengan panjang variabel
- dua byte per kolom panjang variabel, memberikan offset ke akhir tag valueversioning kolom
- ini hanya di SQL Server 2005 dan merupakan struktur 14-byte yang berisi stempel waktu plus penunjuk ke penyimpanan versi di tempdb
Jadi, untuk satu karakter(8000)
- 4 byte (tajuk rekaman)
- 8000 panjang tetap
- 3 bitmap nol
- 2 byte untuk menghitung panjang variabel
- 14 stempel waktu
Namun, jika Anda memiliki 40 kolom varchar(200)
- 4 byte (tajuk rekaman)
- 0 panjang tetap
- 6 bitmap nol
- 2 byte untuk menghitung panjang variabel
- 202 x 40 =8080
- 14 stempel waktu
Total =8080 + 4 + 6 + 2 + 14 =8106. WTF? Anda mendapatkan peringatan saat membuat tabel ini
Saya tidak akan terlalu terpaku padanya:informasi ini tidak nilai praktis sehari-hari