我的SQL SERVER数据库会装满吗?
概述
今天有个客户问我一个蛮有意思的问题。我使用的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数据库会装满吗?相关推荐
- SQL Server 数据库备份
SQL Server 数据库备份 原文 http://www.cnblogs.com/ynbt/archive/2013/04/04/2999642.html 备份数据库是指对数据库或事务日志进行复制 ...
- SQL Server数据库六种数据移动方法
1. 通过工具DTS的设计器进行导入或导出DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然, ...
- python 使用pymssql连接sql server数据库
Python连接SQL Server数据库 - pymssql使用基础 ----原文地址:http://www.cnblogs.com/baiyangcao/p/pymssql_basic.html ...
- powershell连接数据库_PowerShell 连接SQL Server 数据库
PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整理的一小段脚本,后来没有用上,先记录在这里: 建立数据库连接 查询返回一个DataTatble对象 执 ...
- SQL Server数据库错误9003(LSN无效)的处理方法
国内一些ERP.财务软件一般后台都使用SQL Server的数据库,SQL Server作为一个中大型数据库是不应该在桌面系统上运行的,小规模企业一般不使用专用服务器,大部分直接使用XP系统+桌面引擎 ...
- 如何通过代码连接SQL Server数据库
我们曾经为南方电网做过几个有关架空线路的科技项目,要趁着假期有整段的空闲时间,把这些代码整理一下,放入团队刚刚重构的代码库中. 由于这些项目使用的数据库为 SQL Server,所以在整理代码之前需要 ...
- SQL Server数据库收缩日志的方法
SQL Server数据库收缩日志的方法: 方法一 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大. 1.设置数据库模式为 ...
- 数据库附加出错显示服务器,SQL Server数据库附加失败的解决办法
SQL Server数据库附加失败的解决办法 本文为大家分享了SQL Server数据库附加失败的具体解决方法,供大家参考,具体内容如下 1.错误3415 问题:附加数据库的时候,发现总是附加失败,查 ...
- JDBC连接sql server数据库及其它
JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...
最新文章
- “环太平洋”走进现实,五角大楼研发人与武器互动的意念控制技术
- 基于python和OpenCV构建智能停车系统
- [原]《Web前端开发修炼之道》-读书笔记CSS部分
- Java基础之Comparable接口和Comparator接口的比较
- winrar压缩指定目录
- SQL语言之子查询(Oracle)
- NetCat Tutorials
- php通过条件来定义const,php用const出错是什么原因
- discuz和php的关系,UCenter和Discuz!的关系
- C# USING ADO.NET
- DB2 SQLCODE: -407, SQLSTATE: 23502
- 考研初试将近,收好这份准备清单,祝你一战成硕
- MVCC(Multiversion concurrency control)
- 关于StopSelf
- javascript事件委托和jQuery事件绑定on、off 和one以及on绑定多个事件(重要)
- PDF编辑软件如何编辑PDF文件
- 测试移动硬盘的真实容量的软件,u盘扩容修复工具
- 算法渐近性质分析_神奇宝贝解释的渐近分析:深入研究复杂性分析
- 数码管动态扫描显示程序内消影流程
- MTK平台双击Power打开Camera的简单流程