NVARCHAR (MAX) için maksimum karakter sayısı nedir?


Yanıtlar:


413

Bir tür sütun için maksimum boyut NVARCHAR(MAX)2 GByte depolama alanıdır.

Yana NVARCHAR2 byte karakter başına kullanımları, bu yaklaşık bu. 1 milyar karakter.

Leo Tolstoj'un Savaşı ve Barışı , yaklaşık 600.000 kelime içeren 640 karakter içeren bir 'sayfa 4040 sayfalık kitaptır. Böylece tüm Savaş ve Barış kitabının yaklaşık 166 kopyasını her NVARCHAR(MAX)sütuna yapıştırabilirsiniz .

Bu ihtiyaçlarınız için yeterli alan mı? :-)


17
Sadece nit bir seçim. NVARCHAR çoğu karakter için 2 bayt kullanır. U + 00FFFF üzerindeki unicode traktörler için. Dört bayt kullanır.
Eli Algranti

7
Bu sparta'nın ötesinde bir delilik.
MisterGeeky

1
PostgreSQL'in NVCHAR'a (MAX) eşdeğer olması nedir?
Pratik

63

Varsayılan olarak, gerçek uzunluk 4000 karakteri geçmediği sürece, nvarchar (MAX) değerleri nvarchar (4000) değerleriyle tam olarak aynı şekilde saklanır; bu durumda, satır içi veriler, verilerin depolandığı bir veya daha fazla ayrı sayfaya bir işaretçi ile değiştirilir.

Muhtemelen 4000 karakteri aşan veriler varsa, nvarchar (MAX) kesinlikle önerilen seçimdir.

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


12
Endeksleme sorunları olduğu için verilerinizin asla 4000 karakteri geçmeyeceği de önerilmez.
HLGEM

Bunun modası geçmiş olduğuna inanıyorum. @Marc_s adresindeki cevaba bakınız.
Fabio Milheiro

9

Gönderen MSDN Belgeler

nvarchar [(n | max )]

Değişken uzunlukta Unicode dize verileri. n , dize uzunluğunu tanımlar ve 1 ile 4,000 arasında bir değer olabilir. max , maksimum depolama boyutunun 2 ^ 31-1 bayt (2 GB) olduğunu gösterir. Bayt cinsinden depolama boyutu, girilen verilerin gerçek uzunluğunun iki katıdır + 2 bayt


6

Aslında nvarchar(MAX)yaklaşık 1070000000 karakter saklayabileceğini düşünüyorum .


Bu numarayı nereden aldığınızı ve ne demek istediğinizi "doğru" olarak açıklayabilir misiniz? (yani bunun zor bir sınır olmadığını mı söylüyorsunuz, ancak daha fazla karakterle sorun olabilir mi? Ne tür problemler var? Neden?)
Adi Inbar

3
Emin değilim, ama sanırım, nvarchar bir char saklamak için varchar'dan çift boşluk kullanıyorsa ve nvarchar (MAX) tarafından charları saklamak için kullanılabilecek maksimum bellek sayısı 2 ^ 31-1 => 2147483647 ise, 2147483647/2, 1073741824'tür. Doğru bir şekilde, bunun tam bir sayı olmadığı anlamına gelir.
Francisco Javier Larios Soto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.