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,支持高并发读,
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)