![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 90
问道玄霄
初见惊艳,再见依然
展开
-
Innodb引擎SQL执行的BufferPool缓存机制
Innodb引擎SQL执行的BufferPool缓存机制SQL的执行执行流程redo日志作用undo日志作用SQL的执行执行流程加载缓存数据,加载id为1的记录所在的整页数据(相当于索引树的一个结点,16KB)写入更新数据的旧值到undo日志中,方便回滚执行器更新BufferPool缓存池中的内存数据;写入redo日志,将操作结果写入Redo Log Buffer缓冲区。准备提交事务,redo日志写入磁盘中准备提交事务,将结果写入binlog日志,binlog日志写入磁盘,binlog主原创 2021-05-28 02:03:14 · 289 阅读 · 2 评论 -
MVCC多版本并发控制机制
MVCCMVCC多版本并发控制机制Undo日志版本链Read View读视图版本链比对规则delete疑问总结MVCC多版本并发控制机制MySQL在可重复读级别下如何保证较高的隔离性,同样的SQL语句在一个事务里多次执行查询结果,就算其他事务对数据有修改也不会影响当前事务SQL语句的查询结果;Undo日志版本链Undo日志版本链是指一行数据被多个失误依次修改过后,在在这个事务修改完后,MySQL会保留修改前的数据到undo回滚日志,并且用两个隐藏字段事务ID(trx_id)和回滚指针(roll_po原创 2021-05-28 01:02:32 · 409 阅读 · 1 评论 -
深入理解MySQL隔离级别与锁机制
MySQL隔离级别与锁机制概述事务并发事务处理带来的问题事务隔离级别锁详解锁分类表锁基本操作行锁总结行锁与事务隔离级别案例分析读未提交读已提交可重复读串行化间隙锁(Gap Lock)临键锁(Next-key Locks)无索引行锁会升级为表锁结论行锁分析查看系统库锁相关数据表死锁锁优化建议概述数据库一般都会并发执行多个事务,多个事务可能会并发对相同的一批数据进行CRUD操作,可能会出现读写、写写并发进行,需要进行同步,否则会出现更新丢失,脏读,不可重复读,幻读问题;本质就是多个事务并发问题,数据库为了原创 2021-05-26 22:46:55 · 1083 阅读 · 3 评论 -
MySQL索引优化实战
MySQL索引优化实战二分页查询优化limit分页查询分页场景优化技巧场景1:自增且主键排序缺点根据非主键字段排序的分页查询JOIN关联查询优化mysql的表关联常见有两种算法嵌套循环连接(Nested-Loop Join算法)算法sql的大致流程基于块的嵌套循环连接算法(Block Nested-Loop Join)sql的大致流程两种算法比较对于关联sql的优化对于小表的定义in和exsits优化count(*)查询优化常见优化方法阿里巴巴Mysql规范解读数值类型优化建议日期和时间优化建议字符串优化建原创 2021-05-25 21:59:47 · 203 阅读 · 0 评论 -
SQL语句的执行
SQL语句的执行MySQL的内部组件结构Server层Store层连接器长连接与短连接查询缓存大多数情况查询缓存就是个鸡肋,为什么呢?使用场景分析器词法分析器原理优化器执行器bin-log归档1. 配置my.cnf2. binlog命令3. 查看binlog内容4. 数据归档操作归档测试MySQL的内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函原创 2021-05-25 13:26:34 · 693 阅读 · 0 评论 -
MySQL- Explain工具详解
MySQL调优之ExplainExpalin介绍Explain分析实例三级目录Expalin介绍使用Explain关键字可以模拟优化器执行SQL语句,分析查询语句或者结构的性能瓶颈;用法:在Select语句前增加explain关键字,MySQL会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是这条SQLExplain分析实例官方文档:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html表1:CREATE TABLE原创 2021-05-20 14:41:53 · 186 阅读 · 0 评论 -
MySQL调优之Explain工具最佳实践(二)
索引最佳实践索引最佳实践1.全值匹配2.最左前缀法则3.不在索引列上做任何操作4.存储引擎不能使用索引中范围条件右边的列5.尽量不使用Select *尽量不使用不等于7.is null,is not null 一般情况下也无法使用索引8.like以通配符开头('$abc...')mysql索引失效会变成全表扫描操作9.字符串不加单引号索引失效索引最佳实践示例表: CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `na原创 2021-05-20 14:40:54 · 93 阅读 · 1 评论 -
MySQL索引底层数据结构与算法
MySQL索引索引二叉树红黑树B-TreeB+TreeB树与B+树的区别MySQL采用B+树作为索引数据结构的原因Hash表B+树与Hash表MyISAM索引实现InnoDB索引实现(聚集/聚簇)检索数据过程为什么建议InnoDB表必须建主键,并且推荐使用整型的自增主键?聚簇索引的好处:复合索引B+树索引结点的总量索引索引:是帮助MySQL高效获取数据的排好序的数据结构;理论上,可以用来作为索引数据结构的由:二叉树红黑树Hash表B-TreeB+Tree二叉树二叉树的样子:**特原创 2021-05-20 01:52:36 · 633 阅读 · 0 评论