MySQL索引&锁
2023-09-27 14:24:03 时间
在InnoDB中一个3层B+树最多大概可以存放多少行数数据?
参考:https://www.pianshen.com/article/43511636667/
https://zhuanlan.zhihu.com/p/86137284
在innodb存储引擎里面,最小的存储单元是页(page),一个页的大小是16KB。(show varilables like 'innodb_page_size' )
假设一条数据占用 1K 大小的话,那么一页可以存储 16 条数据。
根据 B+ 树的特性,叶子节点才存储数据,非叶子节点只存在“页指针 + 键值”,假设主键ID为bigint类型,长度为8字节(byte),而指针大小在InnoDB源码中设置为6字节(byte),所以一页 16KB 可以存储 16*1024/(8+6) = 1170,那么一个 3层的 B+ 树就可以存储 1170*1170*16 = 21902400,约 2200 万条数据。
而每经过一个节点都需要IO一次,把这个页数据从磁盘读取到缓存,也就是说读取一个数据只需要三次IO。
那如果走辅助索引的话,就需要 6 次 IO ?走辅助索引拿到主键索引的值,再遍历一遍主键索引的 B+ 树,拿到真正的数据
相关文章
- 解决 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working
- mysql的学习记录
- Linux下的Mysql安装 & 配置
- 安装 mysql
- MySQL实战系列2:你不可不知的数据库操作
- 如何在 Linux 中重置 MySQL 或者 MariaDB 的 root 密码
- MySQL & NoSQL – Memcached 插件
- Linux--忘记MySQL密码的解决方法和输入mysqld_safe --skip-grant-tables &后无法进入MySQL的解决方法
- MySQL exist
- mysql sql常用语句大全
- 利用mysql对特殊字符和超长字符会进行截断的特性 进行存储型XSS攻击——WordPress <4.1.2 & <=4.2 存储型xss
- 《PHP、MySQL和Apache入门经典(第5版)》一一2.10 Q&A
- mysql 查看某个数据库中所有表的数据量
- 当MySQL想恋爱,java和navicate抢着做媒婆 ------ java连接MySQL数据库 & navicat for MySQL 连接
- MySQL数据库常见面试题总结
- 数据库原理及MySQL应用 | 视图
- mysql大数据高并发处理
- (19)python操作mysql,python与mysql交互(pymysql)
- MySQL日志Undo&Redo
- mysql 快速迁移数据 mysqldump
- navicat使用ssh登录mysql报错:expected key exchange group packet from server
- MySQL 查询表中的字段 && 查询常量、表达式、函数
- Springboot & MySQL & Mybatis 学生管理系统