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

相关推荐
AllData公司负责人1 小时前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
wefg12 小时前
【MySQL】事务
数据库·mysql
黑白极客2 小时前
mysql的高可用性
数据库·mysql
heimeiyingwang5 小时前
【架构实战】MySQL索引优化:从慢查询到毫秒响应
数据库·mysql·架构
渣渣灰飞5 小时前
MySQL 系统学习 第二阶段 第四章:DCL(Data Control Language)第二节:权限管理与角色(Role)
数据库·学习·mysql
宠友信息7 小时前
多端即时通讯源码技术实践,Redis路由、MySQL持久化与Socket接入
spring boot·websocket·mysql·uni-app
渣渣灰飞7 小时前
MySQL 系统学习 第四阶段:MySQL 高级 第一节:索引(Index)
数据库·学习·mysql
greasyfork8 小时前
多种数据库管理混乱?Navicat Premium 17 for Mac 统一解决
数据库·mysql·macos·mac
宠友信息9 小时前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app