Tôi đã chọc vào SSMS và nhận thấy "kích thước" của INT
các cột của tôi là 4 byte (dự kiến) nhưng tôi hơi sốc khi thấy BIT
các cột của mình là một byte toàn bộ.
Tôi đã hiểu sai những gì tôi đang nhìn?
Tôi đã chọc vào SSMS và nhận thấy "kích thước" của INT
các cột của tôi là 4 byte (dự kiến) nhưng tôi hơi sốc khi thấy BIT
các cột của mình là một byte toàn bộ.
Tôi đã hiểu sai những gì tôi đang nhìn?
Câu trả lời:
Có bao nhiêu cột bit bạn đã xác định trong bảng? Tôi đã tìm thấy điều này trên MSDN, nó nói 8 cột bit hoặc ít hơn được lưu trữ dưới dạng một byte.
Vâng.
Nếu bạn chỉ có một bit
cột trong bảng thì bộ lưu trữ sử dụng byte
nhưng tối đa 8bit
cột có thể được lưu trữ trong cùng một byte để 7 cột tiếp theo là "miễn phí" trong khía cạnh đó.
Ngoài ra còn có nhu cầu lưu trữ 1 bit cho mỗi cột cho NULL_BITMAP
(một lần nữa được làm tròn đến byte kế tiếp). Trong các trang dữ liệu, phần này chứa một bit
cột cho tất cả các cột bất kể chúng có cho phép hay không NULL
( ngoại trừ các cột không thể được thêm sau này vì siêu dữ liệu chỉ thay đổi thông qua ALTER TABLE
nơi hàng chưa được cập nhật)