標籤:
背景
今天有個客戶問我一個蠻有意思的問題。我使用的SQL SERVER 2008的資料庫。目前資料庫130多G了。其中某個表的就有
3億1千多萬的記錄數,佔用了50多G。那SQL SERVER 資料庫中某一表有沒有行數限制和列數限制呢?會不會突然有一天,超過這個限制
我的系統就不能使用了?
分析
這個問題其實在微軟的官方文檔已經給出瞭解釋。只是大家可能沒有注意看。具體結果如所示:
SQL Server 資料庫引擎對象 |
最大大小/數量 - SQL Server(32 位) |
最大大小/數量 - SQL Server(64 位元) |
每個 GROUP BY、ORDER BY 的位元組數 |
8,060 |
8,060 |
每個索引鍵的位元組數2 |
900 |
900 |
每個外鍵的位元組數 |
900 |
900 |
每個主鍵的位元組數 |
900 |
900 |
每行的位元組數8 |
8,060 |
8,060 |
每個 varchar(max)、varbinary(max)、xml、text 或image 列的位元組數 |
2^31-1 |
2^31-1 |
每個 ntext 或 nvarchar(max) 列的字元數 |
2^30-1 |
2^30-1 |
每個資料表的叢集索引數 |
1 |
1 |
GROUP BY、ORDER BY 中的列數 |
僅受位元組數限制 |
僅受位元組數限制 |
GROUP BY WITH CUBE 或 WITH ROLLUP 語句中的列數或運算式數目 |
10 |
10 |
每個索引鍵的列數7 |
16 |
16 |
每個外鍵的列數 |
16 |
16 |
每個主鍵的列數 |
16 |
16 |
每個非寬表的列數 |
1,024 |
1,024 |
每個寬表的列數 |
30,000 |
30,000 |
每個 SELECT 語句的列數 |
4,096 |
4,096 |
每個 INSERT 語句的列數 |
4096 |
4096 |
每個用戶端的串連個數 |
已配置串連的最大值 |
已配置串連的最大值 |
資料庫大小 |
524,272 TB |
524,272 TB |
每個 SQL Server 執行個體的資料庫個數 |
32,767 |
32,767 |
每個資料庫的檔案組個數 |
32,767 |
32,767 |
每個資料庫的檔案個數 |
32,767 |
32,767 |
檔案大小(資料) |
16 TB |
16 TB |
檔案大小(日誌) |
2 TB |
2 TB |
每個表的外鍵表引用數4 |
253 |
253 |
標識符長度(以字元計) |
128 |
128 |
每台電腦的執行個體數 |
所有 SQL Server 版本(Workgroup 除外)的獨立伺服器上為 50 個執行個體。Workgroup 支援每台電腦上最多有 16 個執行個體。 SQL Server 支援容錯移轉叢集上有 25 個執行個體。 |
獨立伺服器上為 50 個執行個體。 容錯移轉叢集上 25 個執行個體。 |
包含 SQL 陳述式的字串的長度(批大小)1 |
65,536 * 網路資料包大小 |
65,536 * 網路資料包大小 |
每個串連的鎖數 |
每個伺服器的最大鎖數 |
每個伺服器的最大鎖數 |
每個 SQL Server 執行個體的鎖數5 |
最多 2,147,483,647 |
僅受記憶體限制 |
嵌套預存程序層級數6 |
32 |
32 |
嵌套子查詢個數 |
32 |
32 |
嵌套觸發器層數 |
32 |
32 |
每個資料表的非叢集索引個數 |
999 |
999 |
存在以下任意子句的情況下 GROUP BY 子句中的非重複表格達式數目:CUBE、ROLLUP、GROUPING SETS、WITH CUBE、WITH ROLLUP |
32 |
32 |
GROUP BY 子句中的運算子產生的分組集數目 |
4,096 |
4,096 |
每個預存程序的參數個數 |
2,100 |
2,100 |
每個使用者定義函數的參數個數 |
2,100 |
2,100 |
每個資料表的 REFERENCE 個數 |
253 |
253 |
每個資料表的行數 |
受可用儲存空間限制 |
受可用儲存空間限制 |
每個資料庫的表數3 |
受資料庫中對象數限制 |
受資料庫中對象數限制 |
每個分區表或索引的分區數 |
1,000 |
1,000 |
非索引列的統計資訊條數 |
30,000 |
30,000 |
每個 SELECT 語句的表個數 |
僅受可用資源限制 |
僅受可用資源限制 |
每個表的觸發器個數3 |
受資料庫中對象數限制 |
受資料庫中對象數限制 |
每個 UPDATE 語句(寬表)的列數 |
4096 |
4096 |
使用者串連 |
32,767 |
32,767 |
XML 索引 |
249 |
249 |
從表中可以看到,每個表的行數是受可用空間限制。而可用空間對於整個資料庫達到,524,272 TB。這是非常大的。不過值得注意的是,
對於單個資料檔案的大小限制是16TB。
而對於列數,非寬表的最大列數是1024.對於關係型資料庫這個值也非常大了,很難想象,你的列數超過這個值。
而表中的其他項目就不一一贅述了。需要的時候可以比對看看。
引用
官網的地址:https://technet.microsoft.com/zh-cn/library/ms143432(v=sql.100)
註:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文連結!
若您覺得這篇文章還不錯請點擊下右下角的推薦,非常感謝!
SQL SERVER工作日誌--我的資料庫會裝滿嗎?