mysql 单个表可以储存多少数据

mysql 单个表可以储存多少数据,第1张

以下是摘抄mysql中文手册的解释:

MySQL 3.22限制的表大小为4GB。由于在MySQL 3.23中使用了MyISAM存储引擎,最大表尺寸增加到了65536TB(2567 – 1字节)。由于允许的表尺寸更大,MySQL数据库的最大有效表尺寸通常是由 *** 作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的。

InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。

在下面的表格中,列出了一些关于 *** 作系统文件大小限制的示例。这仅是初步指南,并不是最终的。要想了解最新信息,请参阅关于 *** 作系统的文档。

*** 作系统

文件大小限制

Linux 2.2-Intel 32-bit

2GB (LFS: 4GB)

Linux 2.4+

(using ext3 filesystem) 4TB

Solaris 9/10

16TB

NetWare w/NSS filesystem

8TB

win32 w/ FAT/FAT32

2GB/4GB

win32 w/ NTFS

2TB(可能更大)

MacOS X w/ HFS+

2TB

有一句话是有谬误的: 在where条件中使用到的字段都加上索引。这个结论似乎成为了好多人的习惯性结论。

事实上我们只需要添加一个联合索引包括这些字段,而不是为每个字段分别添加索引! 这不仅仅是对空间的浪费,而且真正起作用的只是其中一个!

可以做出实验在验证下:

tb_box 表有100万条数据

查询语句如下:

1、先为tb_box的sb_number、create_time字段分别建立a、b索引

执行计划如下,key的值为a 表示只是使用到a索引,b索引未使用!而且extra中出现了using where,表明有字段参与where而不是索引直接参与where

执行时间 0.442秒

2、重新建立索引,为tb_box添加一个联合索引包含sb_number、create_time字段

查看执行计划,a索引被直接使用。索引长度是137比单独创建的131大,说明有更多索引生效。rows=76969比80910小,表明扫描更少的行就能找到结果了

执行时间 0.181秒,快了接近4倍


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8729020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存