2011-05-03 114 views
1

我一直在思考數據庫設計最近,我有以下問題:SQL Server中的內存使用情況?

當一個類型,比如說一個varchar(最大值),被設定爲列2GB的空間預留的每一個行插入的時間?

或者是在服務器上分配的空間等於列中的數據量?

謝謝!

+0

將這些龐大的數據存儲在數據庫中確實是個壞主意。爲此使用文件系統。 – Andrey 2011-05-03 21:58:06

+0

好吧,讓我們說一個varchar(200)...問題不會改變。 – badpanda 2011-05-03 21:59:32

回答

4

varchar SQL Server和其他地方的數據類型意味着大致可變長度的字符數據。 max或任何其他常數值表示其上限,而不是其絕對大小。所以,你的後者的觀察是正確的:

服務器 等於數據量在 列上分配現在

,如果定義類似char(200)的空間(注意缺乏變種在char的前面),那麼是的,無論您在該字段中存儲了多少數據(最多200個字符),都會分配200個字符。順便說一下,char數據類型的maximum upper bound是8000。

2

當然不是:)

Varchar(max) bastardised 混合數據類型 (如果你不介意我是一個有點坦率)

  • 它存儲與如果總行長度不超過8KB限制
  • 否則存儲爲blob。 blob(TEXT,IMAGE)的長度與其長度相同。
+1

也許混合比混蛋更好? ;) – 2011-05-03 22:05:05

+2

說實話,我不喜歡'varchar(max)'。懶惰的數據庫設計人員無法弄清楚他們需要多少存儲空間。 – Aliostad 2011-05-03 22:08:52

+0

+1爲混蛋,你得到我:D – 2011-05-03 22:10:08