11.表的内外连接,索引

虽然可以and但是我们建议这样写,思路更清楚

索引就是mysql服务器运行期间的数据结构

找到扇区连续读八个就把块读到了

为什么是4KB,和内存管理有关,内存也分成4KB块为了让磁盘数据和内存数据进行更好交互,所以有了页框页帧概念2.既要保证io,改一个字节,也要读4KB,这样可以保证一次io拿更多数据3.我一次加4KB,可能后半部分会用到,局部性原理。提高整机效率。

操作系统也很聪明,可以整理我们命令,进而连续访问

mysql读数据,读16kb,操作系统都磁盘 4*4kb大小,硬件上就是16*8个扇区,加载到内存,mysql内部可以通过fsync刷新到磁盘

自己的page和操作系统的page是1:4的

一个个iopage都是一个个struct page结构体对象,io把外面配置搬到内存,不要了把内存搬到外面。内存中用链表管理page,对page管理变成对链表的增删查改,

为什么myql自动按主键排序,方便引入页目录

page*1024是page的字节,包含key和指针,除8+4就是1000多个page,单个page能管理1000多个个page,1360*1024*16/1024/2024=21M数据,

实际真实B+数只有叶子结点用链表联系起来,

mysql自动生成隐藏列充当主键进行排序,这种顺序性就很随机了。所有表都是索引结构。我么之前并没有按照员工主键构建索引,所以查找很慢。

其他数据结构为什么不行:二叉搜索树很高,io效率不好,极端情况变成线性,

将所有数据放到叶子结点就是innodb默认存储表数据的存储结构,还有一种misam存储引擎:

两种引擎不同文件,mysam是非聚簇索引。

太浪费空间,

只要有主键,默认就创建了主键索引,若又给其他列设置索引,重新构建B+ 树,sam直接诶只想数据记录,innodb指向key。

两个完全匹配才算找到,这是一个B+树,默认使用多列第一列作为吧+树名称,这叫复合索引

我想非常高频的通过name找到email,用复合索引,key值本身就是想要的值,匹配到张三直接就返回qq,不用回表,这叫索引覆盖,覆盖的主键索引,不回表,从左侧开始匹配,qq就没法匹配,可以只拿张三,也可以山三,qq

全文索引:misam,支持高并发读,

相关推荐
星恒随风8 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
Pniubi10 小时前
MySQL靠什么实现事务的?事务隔离级别有哪些?
java·数据库·mysql
aiks_yuan11 小时前
MySQL 死锁怎么排查:看懂 INNODB STATUS 死锁日志,先查后插为什么必死锁(MySQL 8.2 实测)
mysql
进击的荆棘14 小时前
MySQL——库的操作
数据库·mysql
计算机毕设定制辅导-无忧学长14 小时前
《基于Spring Boot的迷游哈游戏综合服务平台的开发》
java·vue.js·spring boot·mysql·迷游哈游戏综合服务平台
这个DBA有点耶1 天前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风1 天前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
杨凯凡2 天前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Decay__2 天前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
瑞雪兆丰年兮2 天前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web