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,支持高并发读,

相关推荐
小羊没烦恼!5 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
这个DBA有点耶5 小时前
Redo Log循环写与checkpoint推进:长事务阻塞下的Checkpoint风暴完整链路
数据库·mysql·代码规范
梦影_7 小时前
MySQL进阶教程(一)—— 储存过程与触发器(上)
开发语言·数据库·后端·sql·mysql·中间件
stark张宇7 小时前
库存扣减的“锁”事:悲观锁、乐观锁、分布式锁
redis·分布式·mysql
qq_白羊座7 小时前
口头说的 JSON 和 MySQL 里的 JSON
数据库·mysql·json
花间相见9 小时前
【计算基础|MySQL11】事务与隔离级别
sql·mysql·adb·架构
eleven_4u9 小时前
MySQL引擎层是如何工作的
数据库·mysql
计算机毕设定制辅导-无忧学长11 小时前
《基于微信小程序的个人智能刷题助手的设计与实现》
java·spring boot·mysql·微信小程序·uniapp·个人智能刷题助手系统
geovindu11 小时前
sql:Managing Complex Joins and Subqueries in SQL using mysql 9.0
大数据·数据库·数据仓库·sql·mysql·数据库开发·数据库架构
瑞克-桑切斯11 小时前
MySQL部署手册(5.7.20/8.0)
数据库·mysql