Saya mencari-cari SSMS dan melihat "ukuran" INT
kolom saya adalah 4 byte (diharapkan) tapi saya agak terkejut melihat BIT
kolom saya adalah byte penuh.
Apakah saya salah mengerti apa yang saya lihat?
sql-server
datatypes
Nate
sumber
sumber
Jawaban:
Berapa banyak kolom bit yang telah Anda tetapkan dalam tabel? Saya menemukan ini di MSDN, katanya 8 atau kurang bit kolom disimpan sebagai satu byte.
http://msdn.microsoft.com/en-us/library/ms177603.aspx
sumber
Iya nih.
Jika Anda hanya memiliki satu
bit
kolom dalam tabel maka penyimpanan menggunakan abyte
tetapi hingga 8bit
kolom dapat disimpan dalam byte yang sama sehingga 7 berikutnya "bebas" dalam hal itu.Ada juga 1 bit per kolom kebutuhan penyimpanan untuk
NULL_BITMAP
(lagi dibulatkan ke byte berikutnya). Di halaman data ini berisibit
untuk semua kolom terlepas dari apakah mereka mengizinkanNULL
(dengan pengecualian kolom nullable ditambahkan kemudian sebagai metadata hanya berubah melaluiALTER TABLE
mana baris belum diperbarui)sumber
BIT
menggunakan satu byte per baris, tetapi Anda dapat mengemas hingga 8BIT
bidang ke dalam penyimpanan satu byte itu.Jadi field pertama berharga satu byte, tetapi tujuh berikutnya gratis !
sumber