我的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数据库会装满吗?的更多相关文章
- .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库
今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...
- SQL Server数据库定时自动备份
SQL Server 数据库定时自动备份[转] 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...
- C#操作access和SQL server数据库代码实例
在C#的学习中,操作数据库是比较常用的技术,而access和sql server 数据库的操作却有着不同.那么,有哪些不同呢? 首先,需要引用不同的类.因为有着不同的数据引擎. access:usin ...
- python 使用pymssql连接sql server数据库
python 使用pymssql连接sql server数据库 #coding=utf-8 #!/usr/bin/env python#------------------------------ ...
- NetBeans连接SQL server数据库教程
不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...
- SQL Server数据库备份的镜像
SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GO BACKUP DATABASE [testdatabase] TO DISK = N'C:\testdata ...
- SQL Server数据库镜像的页面自动修复原理
SQL Server数据库镜像的页面自动修复原理 主库页面损坏 镜像库页面损坏 LSN用来保证事务的时序 LSN保存在每个数据页面的页头 在同一台机器,内存中的数据页和磁盘中的数据页保持同步依靠的是数 ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
- SQL Server 数据库分离与附加
一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即 ...
随机推荐
- 使用MonkeyTest对Android客户端进行压力测试
目录 monkey命令简介 monkey命令参数说明 自动化实例 如何通过日志定位问题 1.monkey命令简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它 ...
- 使用Fiddler模拟客户端http响应
在客户端开发中,常常需要对一些特殊情况做处理,比如404.503等,又比如服务返回错误数据等.而测试这些情况会比较麻烦,往往都是找开发人员配合修改代码,这样效率不高. 接触到Fiddler之后,这样的 ...
- oracle 11.2.0.1 rman异机恢复 11.2.0.3(windows X64)
问题原因: 误操作,需要时间点恢复. 备份情况:rman 备份,每天一次全备份,并且附带备份当天所有产生的archivelog,无expdp备份 恢复目标: 恢复到9号晚上21点数据 源系统:WIND ...
- 从外部导入django模块
import os import sys sys.path.append("D:\\pyweb\\sf"); # 项目位置(不是app) os.environ.setdefault ...
- python的学习之路day7-socket网络编程
python基础部分学习完了,时间也已经过了两个月左右,感觉没学到什么,可能是我学习之后忘记的太多了. 由于没钱买书,要是去培训就更没钱了,所以在网上找了一本书,感觉还不错,讲的比较好,比较详细. P ...
- IIS 部署SSL证书
1.导入证书 打开IIS服务管理器,点击计算机名称,双击‘服务器证书 双击打开服务器证书后,点击右则的导入 选择证书文件,点击确定 2.站点开启SSL 选择证书文件,点击确定 点击网站下的站点名称,点 ...
- Hive 整合Hbase
摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询.同时也可以将hive表中的数据映射到Hbase中. 应用 ...
- input file 美化
<input type='file'>的默认外观实在难看,绝大多数情况都需要对其美化.找了很多资料,目前发现以下方式是最简单的美化方式. 1.将file input用label包裹起来,然 ...
- CVE-2017-8046(Spring Data Rest RCE)
环境搭建参考第一个链接,springboot启动文件如下,不同的启类,将Application.class修改一下就可以了,直接debug.注意:默认版本是2.0.3版本,修改成低版本,看一下mvn下 ...
- JS兼容各个浏览器的本地图片上传即时预览效果
JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ...