列をとして宣言するとnvarchar(max)
、2Gbのスペースが割り当てられることを理解していますが、テーブルに変更を保存するとすぐに、実際には2Gbのディスクスペースが必要になりますか?または、この列で2Gbのデータを列に入力できることに注意してください。
3 に答える
私が理解しているように、スペースは必要になるまで割り当てられません。
次のクエリを試してください。
CREATE TABLE SizeTest (
MyID int primary key
)
INSERT INTO SizeTest SELECT 1
UNION SELECT 2
UNION SELECT 3
UNION SELECT 4
UNION SELECT 5
EXEC sp_spaceused 'SizeTest'
ALTER TABLE SizeTest ADD MyBigText nvarchar(max)
EXEC sp_spaceused 'SizeTest'
UPDATE SizeTest SET MyBigText = 'This is big text' WHERE MyID = 1
EXEC sp_spaceused 'SizeTest'
DROP TABLE SizeTest
このステートメントを実行すると、3つのsp_spaceused
呼び出しすべてに対して次のようになります。
name rows reserved data index_size unused
SizeTest 5 16 KB 8 KB 8 KB 0 KB
2GBが割り当てられることはありません。
VARCHAR(MAX)の最大ストレージサイズは2 ^ 31-1バイト(2,147,483,647バイトまたは2GB-1バイト)です。ストレージサイズは、入力されたデータの実際の長さ+2バイトです。入力するデータの長さは0文字です。VARCHARデータ型の各文字は1バイトを使用するため、VARCHAR(MAX)データ型の最大長は2,147,483,645です。
NVARCHAR(MAX)の最大ストレージサイズも2 ^ 31-1バイト(2,147,483,647バイトまたは2GB-1バイト)です。ストレージサイズ(バイト単位)は、入力された文字数の2倍+2バイトです。入力するデータの長さは0文字です。NVARCHARデータ型の各Unicode文字は2バイトを使用するため、NVARCHAR(MAX)データ型の最大長は1,073,741,822です。
VARBINARY(MAX)の最大ストレージサイズは、VARCHAR(MAX)およびNVARCHAR(MAX)の最大ストレージサイズと同じで、2 ^ 31-1(2,147,483,647バイトまたは2GB-1バイト)です。ストレージサイズは、入力されたデータの実際の長さ+2バイトです。入力するデータの長さは0バイトです。
2Gbのデータを許可します:)そう思います..2Gbまで許可しますが、このスペースをすぐに割り当てることはありません