当前位置:网站首页>mysql底层数据结构
mysql底层数据结构
2022-07-27 01:40:00 【Hide on jdk】
数据结构网址:
1.二叉树:容易形成单链表,不能保存储千万数据,如果2000多万数据入库的话,那么采用这种结构容易导致频繁I/O

2.红黑树:可以看到最大搞高度是4,最小高度是2,差距2,而且红色和黑色节点着色,旋转需要时间,效率低

3.AVL树:最大高度和最小高度差距不会相差1,是一种严格的平衡二叉树,且不需要着色,但是高度台高了。也不适合做mysql的底层数据结构

4.B-Tree特点:
叶节点具有相同的深度,
叶节点的指针为空 所有索引元素不重复
节点中的数据索引从左到右递增排列
缺点:每个节点代表一个指针,也就是指向下一个节点的内存地址,但是这个节点还包括数据,
也就是一个节点=指针位置+数据,假设一个指针占6个字节+数据索引bigint=8,那么一个节点14个字节,由于mysql是按照页来存储数据的
查看mysql文件页大小(16K):SHOW GLOBAL STATUS like 'Innodb_page_size’;
16k/1k=16
三层能存放的数据大小估算为: 16*16*16=4096,显然不能满足mysql存储百万数据的要求

5.B+Tree(B-Tree变种)
非叶子节点不存储data,只存储索引(冗余),
可以放更多的索引
叶子节点包含所有索引字段
叶子节点用指针连接,提高区间访问的性能
16*1024/14=1170
三层:1170*1170*16=2190W

现在来测试到底一张表能存放多少行记录?
表结构如下:
CREATE TABLE `employees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',
`age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',
`position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',
`hire_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入职时间',
PRIMARY KEY (`id`),
KEY `idx_name_age_position` (`name`,`age`,`position`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='员工记录表';
我们来算一下到底一行记录占用多少个字节: 4+3*24+2+4+20*3+2+8=152
那么一页可以存放的行数: 16K=16*1024/152=105
那么三层可以存放:16K=16*1024/(6+4)=1638*1638*105=2.8亿
实际上不会这么做:阿里巴巴规范明确规定超过500W数据就要分库分表操作了,所以我们精确计算一行记录到底占用多少个字节是没有意义的。
6.mysql底层的文件结构:
数据文件目录路径 /usr/local/mysql/data/数据库名字

这种是innodb的存储引擎结构
边栏推荐
- 数据湖(二十):Flink兼容Iceberg目前不足和Iceberg与Hudi对比
- Yilingsi T35 FPGA drives LVDS display screen
- 周全的照护 解析LYRIQ锐歌电池安全设计
- Submodule cache cache failure
- Spark: ranking statistics of regional advertising hits (small case)
- 快速排序及优化
- Sqlserver select * can you exclude a field
- Activiti5.22.0扩展支持达国产数据库,以GBase据库为例
- 二叉树(DAY 82)
- Mysql: summary of common sub database and sub table schemes of Internet companies
猜你喜欢

Quick sequencing and optimization

C语言const用法详解

Boom 3D new 2022 audio enhancement app

Details of impala implementation plan

图解用户登录验证流程,写得太好了!

spark学习笔记(四)——sparkcore核心编程-RDD

索引最佳实践

The diagram of user login verification process is well written!

Worthington木瓜蛋白酶解离系统解决方案

Spark: ranking statistics of regional advertising hits (small case)
随机推荐
Wechat applet generation Excel
An error in the fourth edition of the red book?
Deeply understand the underlying data structure and algorithm of MySQL index
国内服务器与海外服务器用1个数据库,怎样可以访问的快?
Data Lake (20): Flink is compatible with iceberg, which is currently insufficient, and iceberg is compared with Hudi
[learning notes, dog learning C] string + memory function
opiodr aborting process unknown ospid (21745) as a result of ORA-609
Explain详解
Data Lake (20): Flink is compatible with iceberg, which is currently insufficient, and iceberg is compared with Hudi
Learn the recycling mechanism of recyclerview again
字节一面:TCP 和 UDP 可以使用同一个端口吗?
Jmeter分布式压测
索引最佳实践
Worthington果胶酶的特性及测定方案
再学RecyclerView的回收复用机制
二叉树(北京邮电大学机试题)(DAY 85)
Explain
Acwing 2074. Countdown simulation
积分发放带给商家的两个帮助
网络安全/渗透测试工具AWVS14.9下载/使用教程/安装教程