MySQL中的极限值2013-01-07 11:14:57
分类: Mysql/postgreSQL
参考:http://dev.mysql.com/doc/refman/5.5/en/limits.html
join极限值
每个表join的最大个数是61个.
库和表的极限值
在MySQL中,对库和表没有限制,不过在操作系统中会有文件个数的限制.
注:在innodb引擎下,每个库下面最多是40亿个表
表大小的极限值
MySQL内部没有对表大小的限制,通常是操作系统控制的.下表是一些操作系统对单个文件大小的极限值
Operating System |
File-size Limit |
Win32 w/ FAT/FAT32 |
2GB/4GB |
Win32 w/ NTFS |
2TB (possibly larger) |
Linux 2.2-Intel 32-bit |
2GB (LFS: 4GB) |
Linux 2.4+ |
(using ext3 file system) 4TB |
Solaris 9/10 |
16TB |
MacOS X w/ HFS+ |
2TB |
表中列数量和行大小的极限值
列的数量
每个表最多能创建的列的数量是4096,但是受很多因素引擎,并不能创建这么多.
行
每个表(不论什么引擎)的行的最大值是65535个字节.不同的存储引擎可以额外的约束行的最大值,但是不能超过65535个字节.
例如
每个utf8字符需要3个字节,对于CHAR(255)的列,每个值需要765个字节.如果一个表全部是CHAR(255)列,则最大的列的数量为85 (65535/765).
对于VARCHAR(255),每个值需要767个字节,有2个字节存储值的长度.每个表都有一个.frm文件来存储表的定义,该.frm文件的大小上限是64KB.
INNODB引擎的一些极限值.
innodb最大允许1000个列
innodb的行的最大是8000个字节,其中不包括VARBINARY, VARCHAR, BLOB, or TEXT 等列
innodb存储的文件格式(COMPRESSED, REDUNDANT)不同,也会影响行的极限值.
参考
CHAR vs VARCHAR
In contrast to CHAR, VARCHAR values are stored as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number of bytes in the value. A column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes
http://dev.mysql.com/doc/refman/5.5/en/char.html
UTF-8使用一至四个字节为每个字符编码:
128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)
带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码(Unicode范围由U+0080至U+07FF)
其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码
其他极少使用的Unicode 辅助平面的字符使用四字节编码
本文出自 “Linux运维” 博客,请务必保留此出处http://2853725.blog.51cto.com/2843725/1394426