mysql单个表可以储存多少内容(浅谈mysql一张表到底能存多少数据)
mysql单个表可以储存多少内容
浅谈mysql一张表到底能存多少数据程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨
知识准备
数据页
在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB)。详细学习可以参考官网我们可以用如下命令查询到。
|
mysql> SHOW GLOBAL STATUS LIKE 'innodb_page_size' ; + ------------------+-------+ | Variable_name | Value | + ------------------+-------+ | Innodb_page_size | 16384 | + ------------------+-------+ 1 row in set (0.00 sec) |
今天咱们数据页的具体结构指针等不深究,知道它默认是16kb就行了,也就是说一个节点的数据大小是16kb
索引结构(innodb)
mysql的索引结构咱们应该都知道,是如下的b+树结构
通常b+树非叶子节点不存储数据,只有叶子节点(最下面一层)才存储数据,那么咱们说回节点,一个节点指的是(对于上图而言)
每个红框选中的部分称为一个节点,而不是说某个元素。了解了节点的概念和每个节点的大小为16kb之后,咱们计算mysql能存储多少数据就容易很多了
具体计算方法
根节点计算
首先咱们只看根节点
比如我们设置的数据类型是bigint,大小为8b
在数据本身如今还有一小块空间,用来存储下一层索引数据页的地址,大小为6kb
所以我们是可以计算出来一个数据为(8b+6b=14b)的空间(以bigint为例)我们刚刚说到一个数据页的大小是16kb,也就是(161024)b,那么根节点是可以存储(161024/(8+6))个数据的,结果大概是1170个数据如果跟节点的计算方法计算出来了,那么接下来的就容易了。
其余层节点计算
第二层其实比较容易,因为每个节点数据结构和跟节点一样,而且在跟节点每个元素都会延伸出来一个节点,所以第二层的数据量是1170*1170=1368900,问题在于第三层,因为innodb的叶子节点,是直接包含整条mysql数据的,如果字段非常多的话数据所占空间是不小的,我们这里以1kb计算,所以在第三层,每个节点为16kb,那么每个节点是可以放16个数据的,所以最终mysql可以存储的总数据为
1170 * 1170 * 16 = 21902400 (千万级条)
其实计算结果与我们平时的工作经验也是相符的,一般mysql一张表的数据超过了千万也是得进行分表操作了。
总结
最后用一张图片总结一下今天讨论的内容,希望您能喜欢
到此这篇关于浅谈mysql一张表到底能存多少数据的文章就介绍到这了,更多相关mysql表存多少数据内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://www.cnblogs.com/xuehao/p/14421795.html
- mysqlsource命令作用(MySQL source命令的使用简介)
- mysql的三大组件(详解MySQL8的新特性ROLE)
- centosdocker镜像安装mysql(linux下利用Docker安装mysql的步骤)
- centos7可以装mysql吗(详解腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题)
- mysqlgroupby语句实现原理(Mysql中错误使用SQL语句Groupby被兼容的情况)
- mysql表锁行锁和分页锁(MySQL 不停机不锁表主从搭建)
- mysql dateformat(MySQL的DATE_FORMAT函数的使用)
- mysql 操作系统时区(mysql时区查看与设置方法)
- 查看mysql索引缓存(MySQL查询缓存的小知识)
- php redis应用场景(PHP商品秒杀问题解决方案实例详解mysql与redis)
- mysqltruncate(MYSQL中Truncate的用法详解)
- mysql8.0.23.0官方安装手册(MySQL8.0.23安装超详细教程)
- mysql将字符串转换成整数(MYSQL字符串强转的方法示例)
- mysql查看慢查询(MySQL 慢查询日志深入理解)
- mysql数据恢复时间点(MySQL 基于时间点的快速恢复方案)
- linuxmysql安装教程5.7.25学习(linux mysql5.5升级至mysql5.7的步骤与踩到的坑)
- 高考数学题(高考数学题基础题占多少分)
- 没钱只能吃土(没钱要吃土了幽默短信发朋友圈)
- 今年考高会很难吗(今年高考会考试吗)
- 盘古开天地 他创造了世界,谁创造了盘古 盘古是伏羲吗(盘古开天地他创造了世界)
- 关于队徽 你了解这些么 二(关于队徽你了解这些么)
- 冬天来了手脚冰凉 真不是因为上辈子你是折翼的天使(冬天来了手脚冰凉)
热门推荐
- windows server 2008r2怎么安装(Windows Server2008 R2 MVC 环境安装配置教程)
- SQL Server获取时间段内的所有月份
- js的遍历数组方法(JS中数组常用的循环遍历你会几种)
- python飞机大战游戏背景(python实现飞机大战游戏)
- pgsql函数里有多个事务如何处理(关于SQL数据库 msdb.dbo.sp_send_dbmail 函数发送邮件的场景分析)
- python面向对象的介绍(Python面向对象思想与应用入门教程类与对象)
- python有什么好的微信公众号(python下载微信公众号相关文章)
- SQLServer设置客户端使用IP地址登录的图文详解(SQLServer设置客户端使用IP地址登录的图文详解)
- docker容器无法启动(Docker 无法停止或删除容器服务问题的解决方案)
- MVC中数据验证
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9