设为首页 收藏本站
查看: 601|回复: 0

[经验分享] 我的SQL SERVER数据库会装满吗?

[复制链接]

尚未签到

发表于 2017-7-13 07:51:26 | 显示全部楼层 |阅读模式
概述
  今天有个客户问我一个蛮有意思的问题。我使用的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')
DSC0000.png

  果然溢出了。所以说,对于有自增列的表,表上的行数限制,跟定义的自增列的数据类型,起始值,步长都有关系。
  针对这种情况可以使用bigint类型。防止超过行数限制。
最大列数
  而对于列数,非宽表的最大列数是1024.对于关系型数据库这个值也非常大了,很难想象,你的列数超过这个值。
  当然这个1024 只是理论值,和上面的自增列一样还是有其他条件制约着列数的限制。请看下面的例子:
  CREATE TABLE test(id char(4030),name char(4030),title CHAR(10))
DSC0001.png

  我的表才3个列就不让我创建了,,,这个数据库太无情了,,,,,,
  这是为什么呢? 从之前的表上我们可以看到,字节数8060.其中包括7字节的内部开销。 DSC0002.png
  所以,列数限制还和你定义的列的长度有关.
其他
  对于其他容量限制就不一一赘述了,后续如果有遇到的时候再补充。
引用
  官方文档:https://technet.microsoft.com/zh-cn/library/ms143432(v=sql.100)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393360-1-1.html 上篇帖子: sql server的日期格式转化形式 下篇帖子: SQL Server 2008 R2升级到SQL Server 2012 SP1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表