Bên trong Công cụ Lưu trữ:Giải phẫu một bản ghi
Điều này dành cho SQL Server 2005
- tiêu đề bản ghi
- Dài 4 byte
- hai byte siêu dữ liệu bản ghi (loại bản ghi)
- hai byte trỏ về phía trước trong bản ghi tới bitmap NULL
- phần độ dài cố định của bản ghi, chứa các cột lưu trữ các loại dữ liệu có độ dài cố định (ví dụ:bigint, char (10), datetime)
- Bản đồ bit NULL
- hai byte để đếm số cột trong bản ghi
- số byte thay đổi để lưu trữ một bit trên mỗi cột trong bản ghi, bất kể cột đó có thể null hay không (điều này khác và đơn giản hơn so với SQL Server 2000 chỉ có một bit trên mỗi cột có thể nullable)
- điều này cho phép tối ưu hóa khi đọc các cột NULL
- mảng bù đắp cột có độ dài thay đổi
- hai byte để đếm các cột có độ dài thay đổi
- hai byte cho mỗi cột có độ dài thay đổi, tạo khoảng chênh lệch cho phần cuối của thẻ định giá trị cột
- cái này chỉ có trong SQL Server 2005 và là cấu trúc 14 byte chứa dấu thời gian cộng với một con trỏ vào kho phiên bản trong tempdb
Vì vậy, đối với một ký tự (8000)
- 4 byte (tiêu đề bản ghi)
- 8000 chiều dài cố định
- 3 bitmap rỗng
- 2 byte để đếm độ dài thay đổi
- 14 dấu thời gian
Tuy nhiên, nếu bạn có 40 cột varchar (200)
- 4 byte (tiêu đề bản ghi)
- 0 độ dài cố định
- 6 bitmap rỗng
- 2 byte để đếm độ dài thay đổi
- 202 x 40 =8080
- 14 dấu thời gian
Tổng =8080 + 4 + 6 + 2 + 14 =8106. WTF? Bạn nhận được cảnh báo khi tạo bảng này
Tôi sẽ không quá lo lắng về nó:thông tin này có không giá trị thực tế hàng ngày