Berapa karakter maksimum untuk NVARCHAR (MAX)?

Jawaban:

414

Ukuran maksimal untuk kolom tipe NVARCHAR(MAX)adalah penyimpanan 2 GByte.

Karena NVARCHARmenggunakan 2 byte per karakter, itu kira-kira. 1 miliar karakter.

Perang dan Damai Leo Tolstoj adalah buku setinggi 1'440 halaman, berisi sekitar 600'000 kata - sehingga mungkin 6 juta karakter - lengkap. Jadi, Anda bisa menempel sekitar 166 salinan dari seluruh buku Perang dan Perdamaian ke dalam setiap NVARCHAR(MAX)kolom.

Apakah itu cukup ruang untuk kebutuhan Anda? :-)

marc_s
sumber
17
Hanya pilih nit. NVARCHAR menggunakan 2 byte untuk sebagian besar karakter. Untuk karakter unicode lebih dari U + 00FFFF. Itu akan menggunakan empat byte.
Eli Algranti
7
Ini adalah kegilaan luar biasa.
MisterGeeky
1
Apa itu PostgreSQL setara dengan NVCHAR (MAX)?
Pratik
63

Secara default, nilai nvarchar (MAX) disimpan persis sama dengan nilai nvarchar (4000), kecuali jika panjang sebenarnya melebihi 4000 karakter; dalam hal itu, data dalam baris digantikan oleh pointer ke satu atau lebih halaman terpisah di mana data disimpan.

Jika Anda mengantisipasi data yang mungkin melebihi 4000 karakter, nvarchar (MAX) jelas merupakan pilihan yang disarankan.

Sumber: https://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/

Madushan
sumber
12
Juga TIDAK disarankan jika data Anda tidak akan melebihi 4000 karakter karena ada masalah pengindeksan.
HLGEM
Saya percaya ini sudah ketinggalan zaman. Lihat jawaban dari @marc_s.
Fabio Milheiro
9

Dari Dokumentasi MSDN

nvarchar [(n | maks )]

Data string Unicode-panjang variabel. n mendefinisikan panjang string dan dapat berupa nilai dari 1 hingga 4.000. maks menunjukkan bahwa ukuran penyimpanan maksimum adalah 2 ^ 31-1 byte (2 GB). Ukuran penyimpanan, dalam byte, adalah dua kali panjang data aktual yang dimasukkan + 2 byte

JiNish
sumber
6

Saya pikir sebenarnya nvarchar(MAX)dapat menyimpan sekitar 1070000000 karakter.

Francisco Javier Larios Soto
sumber
Bisakah Anda menjelaskan dari mana Anda mendapatkan nomor itu, dan apa yang Anda maksud dengan "akurat"? (Yaitu maksud Anda itu bukan batas yang sulit, tetapi dengan lebih banyak karakter mungkin ada masalah? Masalah apa? Mengapa?)
Adi Inbar
3
Saya tidak yakin, tapi saya pikir, jika nvarchar menggunakan spasi ganda daripada varchar untuk menyimpan char, dan jumlah maksimal memori yang dapat digunakan oleh nvarchar (MAX) untuk menyimpan karakter adalah 2 ^ 31-1 => 2147483647, maka 2147483647/2 adalah 1073741824. secara akurat maksud saya bukan angka yang tepat.
Francisco Javier Larios Soto