3

列をとして宣言するとnvarchar(max)、2Gbのスペースが割り当てられることを理解していますが、テーブルに変更を保存するとすぐに、実際には2Gbのディスクスペースが必要になりますか?または、この列で2Gbのデータを列に入力できることに注意してください。

4

3 に答える 3

5

私が理解しているように、スペースは必要になるまで割り当てられません。

次のクエリを試してください。

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が割り当てられることはありません。

于 2012-10-09T13:14:39.720 に答える
2

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バイトです。

于 2012-10-09T13:33:07.903 に答える
1

2Gbのデータを許可します:)そう思います..2Gbまで許可しますが、このスペースをすぐに割り当てることはありません

于 2012-10-09T12:58:54.983 に答える