mysql 技术点汇总

  1. MYSQL存储引擎介绍
MyISAM和InnoDB的区别

MYISAM是5.5之前默认的存储引擎,支持全文索引,压缩,空间函数,但是不支持事务和行级锁,最大却显示崩溃后无法安全恢复。

对比:

1.是否支持行级锁:MyISAM只有表级锁,InnoDB支持表级锁和行级锁,默认是行级锁

2.是否支持事务和崩溃后的安全恢复:MyISAM强调性能,每次查询具有原子性,执行速度更快,但是不提供事务支持,InnoDB支持外键和事务等高级数据库功能,支持回滚,崩溃后的修复,和事务

3.是否支持外键:MyISAM就不支持,InnoDB支持

4.是否支持MVCC:仅InnoDB支持,MVCC用于高并发事务,比加锁更加高效,MVCC只在READ COMMITTED 和 REEPEATABLE READ两个隔离级别下工作,内部使用乐观锁和悲观锁来实现

https://www.cnblogs.com/songwp/p/14338422.html

(在InnoDB使用聚簇索引或者访问数据放入内存的应用中,执行效率比MyISAM更快)
————————————————
版权声明:本文为CSDN博主「盖世英雄来了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40513633/article/details/111146180

  1. 索引
mysql索引使用的数据结构主要有BTree索引和哈希索引,哈希索引底层数据结构是哈希表,对于单条记录查询的时候可以选择哈希索引,查询性能最快,其余场景,更适合使用B-Tree索引

mysq中使用的是B+Tree索引,但是对于MyISAM和InnoDB实现的方式不同
![image.png](https://upload-images.jianshu.io/upload_images/7289196-b725f00daed95ee6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

为什么要使用B+树呢?

首先我们知道在数据库中索引可以使用hash算法,查询效率很高,但是不支持范围查询,因此我们考虑使用平衡二叉树,但是我们知道二叉树每个节点只有一个数据,如果数据变多的话,树就会越来越高,查询的成本也会增高,我们考虑使用B树,它可以在一个节点存储多个数据,B+树的优化是非叶子节点的数据会冗余一份在叶子节点,并且叶子节点之间使用指针相连,因此增高查询效率,而且支持范围查询,B+树里的元素也是有序的
————————————————
版权声明:本文为CSDN博主「盖世英雄来了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40513633/article/details/111146180


https://www.cnblogs.com/songwp/p/14338422.html

  1. mysql 执行过程
 连接器:建立连接、验证账号密码、检查权限
 缓存(8.0失效)
分析器:词和语法的检查
优化器:选择最佳索引、生产执行计划
执行器: 通过API ,调用引起
![image.png](https://upload-images.jianshu.io/upload_images/7289196-91c81dcfcc27f0d4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

https://www.cnblogs.com/wyq178/p/11576065.html
  1. mysql 语句解析过程
from 
join on
where
group by
having
select 
distinct
order by
limit
![image.png](https://upload-images.jianshu.io/upload_images/7289196-8a34c573ebe9c71a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

https://www.cnblogs.com/williamjie/p/11081592.html

你可能感兴趣的:(mysql 技术点汇总)