您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL单表到底可以多大

2024/2/27 12:14:39发布13次查看
前天突然收到monitor center发出来的报警: problem:cn_dsl_***4/maxfile is critical,snmp critical *these file size is larger than 18932735283: /abc/def/ghi/***/***.myd 刚看到这个报警的时候,还吓了一跳。数据文件超过最大文件限制?不会吧?好像才
前天突然收到monitor center发出来的报警:
problem:cn_dsl_***4/maxfile is critical,snmp critical – *these file size is larger than 18932735283: /abc/def/ghi/***/***.myd
刚看到这个报警的时候,还吓了一跳。数据文件超过最大文件限制?不会吧?好像才18g嘛,怎么会就开始报警了?
于是开始查找报警来源,经过一番查找,总算找到监控脚本。这台机器之前是sa管理维护的,所以相关规范也是按照sa管理的web服务器来设计的。所以他们在监控系统中添加了某些特定的目录下文件大小的限制,防止某些意外出现大文件的情况。最后我只得在监控脚本中过滤掉了mysql的“.myd”和“.myi”文件。
说到文件大小,刚好常有人问我说mysql是否有单个表的大小限制?限制多大呢?这里做一个简单的介绍吧。
在老版本的mysql 3.22中,mysql的单表限大小为4gb,当时的mysql的存储引擎还是isam存储引擎。但是,当出现myisam存储引擎之后,也就是从mysql 3.23开始,mysql单表最大限制就已经扩大到了64pb了(官方文档显示)。也就是说,从目前的技术环境来看,mysql数据库的myisam存储引擎单表大小限制已经不是有mysql数据库本身来决定,而是由所在主机的os上面的文件系统来决定了。
而mysql另外一个最流行的存储引擎之一innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。
当使用共享表空间存储方式的时候,innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。从innodb的官方文档中可以看到,其表空间的最大限制为64tb,也就是说,innodb的单表限制基本上也在64tb左右了,当然这个大小是包括这个表的所有索引等其他相关数据。
而当使用独享表空间来存放innodb的表的时候,每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了。
以下是从收集到的一点信息,不一定全部准确:
操作系统? 大小限制
win32 w/ fat/fat32? 2gb/4gb
win32 w/ ntfs? 2tb(可能更大)
linux 2.2-intel 32-bit? 2gb (lfs: 4gb)
linux 2.4+? 4tb(ext3)
solaris 9/10 16tb
netware w/nss filesystem? 8tb
macos x w/ hfs+ 2tb
以下是mysql文档中的内容:
windows用户请注意: fat和vfat (fat32)不适合mysql的生产使用。应使用ntfs。
在默认情况下,mysql创建的myisam表允许的最大尺寸为4gb。你可以使用show table status语句或myisamchk -dv tbl_name检查表的最大尺寸。请参见13.5.4节,“show语法”。
如果需要使用大于4gb的myisam表(而且你的操作系统支持大文件),可使用允许avg_row_length和max_rows选项的create table语句。创建了表后,也可以使用alter table更改这些选项,以增加表的最大允许容量。
原文地址:mysql单表到底可以多大, 感谢原作者分享。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product