概述

  今天有个客户问我一个蛮有意思的问题。我使用的SQL SERVER 2008数据库,目前数据库130多G,其中某个表的记录条数就有3亿1千多万,占用了50多G。那SQL SERVER 数据库中的表有没有行数和列数限制呢?会不会突然有一天,超过这个限制,我的系统就不能使用了?

最大容量

SQL SERVER 是否会被装满,主要是在于数据库的最大容量。包括最大行数和最大列数 以及其他。 具体内容,我们可以查看下面列表:

SQL Server 数据库引擎对象

最大大小/数量

每个 GROUP BY、ORDER BY 的字节数

8,060

每个索引键的字节数2

900

每个外键的字节数

900

每个主键的字节数

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)

我的SQL SERVER数据库会装满吗?的更多相关文章

  1. .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

    今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...

  2. SQL Server数据库定时自动备份

    SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...

  3. C#操作access和SQL server数据库代码实例

    在C#的学习中,操作数据库是比较常用的技术,而access和sql server 数据库的操作却有着不同.那么,有哪些不同呢? 首先,需要引用不同的类.因为有着不同的数据引擎. access:usin ...

  4. python 使用pymssql连接sql server数据库

    python 使用pymssql连接sql server数据库   #coding=utf-8 #!/usr/bin/env python#------------------------------ ...

  5. NetBeans连接SQL server数据库教程

    不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...

  6. SQL Server数据库备份的镜像

    SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GO BACKUP DATABASE [testdatabase] TO DISK = N'C:\testdata ...

  7. SQL Server数据库镜像的页面自动修复原理

    SQL Server数据库镜像的页面自动修复原理 主库页面损坏 镜像库页面损坏 LSN用来保证事务的时序 LSN保存在每个数据页面的页头 在同一台机器,内存中的数据页和磁盘中的数据页保持同步依靠的是数 ...

  8. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  9. SQL Server 数据库分离与附加

    一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即 ...

随机推荐

  1. 使用MonkeyTest对Android客户端进行压力测试

    目录 monkey命令简介 monkey命令参数说明 自动化实例 如何通过日志定位问题   1.monkey命令简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它 ...

  2. 使用Fiddler模拟客户端http响应

    在客户端开发中,常常需要对一些特殊情况做处理,比如404.503等,又比如服务返回错误数据等.而测试这些情况会比较麻烦,往往都是找开发人员配合修改代码,这样效率不高. 接触到Fiddler之后,这样的 ...

  3. oracle 11.2.0.1 rman异机恢复 11.2.0.3(windows X64)

    问题原因: 误操作,需要时间点恢复. 备份情况:rman 备份,每天一次全备份,并且附带备份当天所有产生的archivelog,无expdp备份 恢复目标: 恢复到9号晚上21点数据 源系统:WIND ...

  4. 从外部导入django模块

    import os import sys sys.path.append("D:\\pyweb\\sf"); # 项目位置(不是app) os.environ.setdefault ...

  5. python的学习之路day7-socket网络编程

    python基础部分学习完了,时间也已经过了两个月左右,感觉没学到什么,可能是我学习之后忘记的太多了. 由于没钱买书,要是去培训就更没钱了,所以在网上找了一本书,感觉还不错,讲的比较好,比较详细. P ...

  6. IIS 部署SSL证书

    1.导入证书 打开IIS服务管理器,点击计算机名称,双击‘服务器证书 双击打开服务器证书后,点击右则的导入 选择证书文件,点击确定 2.站点开启SSL 选择证书文件,点击确定 点击网站下的站点名称,点 ...

  7. Hive 整合Hbase

    摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询.同时也可以将hive表中的数据映射到Hbase中.     应用 ...

  8. input file 美化

    <input type='file'>的默认外观实在难看,绝大多数情况都需要对其美化.找了很多资料,目前发现以下方式是最简单的美化方式. 1.将file input用label包裹起来,然 ...

  9. CVE-2017-8046(Spring Data Rest RCE)

    环境搭建参考第一个链接,springboot启动文件如下,不同的启类,将Application.class修改一下就可以了,直接debug.注意:默认版本是2.0.3版本,修改成低版本,看一下mvn下 ...

  10. JS兼容各个浏览器的本地图片上传即时预览效果

    JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ...