個人SQL SERVER數據庫會裝滿嗎?

概述

  今天有個客戶問我一個蠻有意思的問題。我使用的SQL SERVER 2008數據庫,目前數據庫130多G,其中某個表的記錄條數就有3億1千多萬,佔用了50多G。那SQL SERVER 數據庫中的表有沒有行數和列數限制呢?會不會忽然有一天,超過這個限制,個人系統就不能使用了? sql

 

最大容量

      SQL SERVER 是否會被裝滿,主要是在於數據庫的最大容量。包括最大行數和最大列數 以及其餘。 具體內容,咱們能夠查看下面列表:數據庫

SQL Server 數據庫引擎對象服務器

最大大小/數量 網絡

每一個 GROUP BY、ORDER BY 的字節數函數

8,060spa

每一個索引鍵的字節數2日誌

900xml

每一個外鍵的字節數對象

900blog

每一個主鍵的字節數

900

每行的字節數8

8,060

每一個 varchar(max)、varbinary(max)、xml、text 或image 列的字節數

2^31-1

每一個 ntext 或 nvarchar(max) 列的字符數

2^30-1

每一個數據表的彙集索引數

1

GROUP BY、ORDER BY 中的列數

僅受字節數限制

GROUP BY WITH CUBE 或 WITH ROLLUP 語句中的列數或表達式數目

10

每一個索引鍵的列數7

16

每一個外鍵的列數

16

每一個主鍵的列數

16

每一個非寬表的列數

1,024

每一個寬表的列數

30,000

每一個 SELECT 語句的列數

4,096

每一個 INSERT 語句的列數

4096

每一個客戶端的鏈接個數

已配置鏈接的最大值

數據庫大小

524,272 TB

每一個 SQL Server 實例的數據庫個數

32,767

每一個數據庫的文件組個數

32,767

每一個數據庫的文件個數

32,767

文件大小(數據)

16 TB

文件大小(日誌)

2 TB

每一個表的外鍵表引用數4

253

標識符長度(以字符計)

128

每臺計算機的實例數

獨立服務器上爲 50 個實例。

故障轉移羣集上 25 個實例。

包含 SQL 語句的字符串的長度(批大小)1

65,536 * 網絡數據包大小

每一個鏈接的鎖數

每一個服務器的最大鎖數

每一個 SQL Server 實例的鎖數5

僅受內存限制

嵌套存儲過程級別數6

32

嵌套子查詢個數

32

嵌套觸發器層數

32

每一個數據表的非彙集索引個數

999

存在如下任意子句的狀況下 GROUP BY 子句中的非重複表達式數目:CUBE、ROLLUP、GROUPING SETS、WITH CUBE、WITH ROLLUP

32

GROUP BY 子句中的運算符生成的分組集數目

4,096

每一個存儲過程的參數個數

2,100

每一個用戶定義函數的參數個數

2,100

每一個數據表的 REFERENCE 個數

253

每一個數據表的行數

受可用存儲空間限制

每一個數據庫的表數3

受數據庫中對象數限制

每一個分區表或索引的分區數

1,000

非索引列的統計信息條數

30,000

每一個 SELECT 語句的表個數

僅受可用資源限制

每一個表的觸發器個數3

受數據庫中對象數限制

每一個 UPDATE 語句(寬表)的列數

4096

用戶鏈接

32,767

XML 索引

249

最大行數

從表中能夠看到,每一個表的行數是受可用空間限制。而可用空間對於整個數據庫達到,524,272 TB。這是很是大的。不過值得注意的是,對於單個數據文件的大小限制是16TB。

自增列

剛纔園子裏的朋友提到了某種特殊的狀況,若是表上的自增列狀況呢?

create TABLE test (
id INT IDENTITY (2147483647,1),
name VARCHAR(100)
)


INSERT INTO test (name) VALUES ('Owen')
INSERT INTO test (name) VALUES ('Zeng')

 

 

果真溢出了。因此說,對於有自增列的表,表上的行數限制,跟定義的自增列的數據類型,起始值,步長都有關係。

針對這種狀況可使用bigint類型。防止超過行數限制。

 

最大列數

而對於列數,非寬表的最大列數是1024.對於關係型數據庫這個值也很是大了,很難想象,你的列數超過這個值。

固然這個1024 只是理論值,和上面的自增列同樣仍是有其餘條件制約着列數的限制。請看下面的例子:

 

CREATE TABLE test(id char(4030),name char(4030),title CHAR(10))

 

 

個人表才3個列就不讓我建立了,,,這個數據庫太無情了,,,,,,

這是爲何呢? 從以前的表上咱們能夠看到,字節數8060.其中包括7字節的內部開銷。

因此,列數限制還和你定義的列的長度有關.

其餘

 對於其餘容量限制就不一一贅述了,後續若是有遇到的時候再補充。

 

引用

官方文檔:https://technet.microsoft.com/zh-cn/library/ms143432(v=sql.100)

相關文章
相關標籤/搜索