![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 91
攻城狮百里
学无止境
展开
-
MySQL 锁、面试题总结
行级锁的粒度更小,仅对相关的记录上锁即可(对一行或者多行记录加锁),所以对于并发写入操作来说, InnoDB 的性能更高。表级锁: MySQL 中锁定粒度最大的一种锁,是针对非索引字段加的锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。行级锁: MySQL 中锁定粒度最小的一种锁,是针对索引字段加的锁,只针对当前操作的记录进行加锁。意向锁和共享锁和排它锁互斥(这里指的是表级别的共享锁和排他锁,意向锁不会与行级的共享锁和排他锁互斥)。转载 2023-02-10 17:10:46 · 170 阅读 · 0 评论 -
MySQL中的锁
比如一个事务想要对表加排他锁,如果没有意向锁的话,那么该事务在加锁前需要判断当前表的每一行是否已经加了锁,如果表很大,遍历每行进行判断需要耗费大量的时间。悲观锁是总以最坏的情况假设,比如操作一条数据,总认为也有其他线程要拿这条数据,那就给这条数据上排他锁,让其他事务或者线程阻塞,类似于Java中 synchronized 和 ReentrantLock 等独占锁的思想。元数据锁可以用来保证读写的正确性。行级锁是锁住行,粒度小,性能较高,但是行级锁只在存储引擎层实现,行级锁分为3种,记录锁、间隙锁和临键锁。原创 2023-02-09 14:17:05 · 363 阅读 · 0 评论 -
MySQL中的日志
针对开发人员而言,这几种日志中最有可能使用到的是慢查询日志。转载 2023-02-07 14:49:41 · 100 阅读 · 0 评论 -
MySQL InnoDB 幻读
Mysql的事务隔离级别这四种隔离级别,当存在多个事务并发冲突的时候,可能会出现脏读,不可重复读,幻读的一些问题,而innoDB在可重复读隔离级别模式下解决了幻读的一个问题,什么是幻读幻读是指在同一个事务中,前后两次查询相同范围的时候得到的结果不一致如图,第一个事务里面,我们执行一个范围查询,这个时候满足条件的数据只有一条,而在第二个事务里面,它插入一行数据并且进行了提交,接着第一个事务再去查询的时候,得到的结果比第一次查询的结果多出来一条数据,注意第一个事务的第一次和第二次查询,都在同一个事物原创 2022-04-22 22:13:44 · 861 阅读 · 3 评论 -
MySQL创建索引的几大原则与慢查询优化步骤
C/C++Linux服务器开发/后台架构师视频学习https://ke.qq.com/course/417774?flowToken=1031343MySQL InnoDB 索引与事务:https://www.bilibili.com/video/BV1XU4y1L7b7一、创建索引的几大原则1.1 最左前缀匹配原则(非常重要的原则)mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配。比如a = 1 and b = 2 and c > 3 and原创 2021-06-29 16:45:42 · 281 阅读 · 0 评论 -
深入理解MySQL之高性能索引
索引介绍90分钟搞懂MySQL索引及其优化MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构。简而言之,索引是数据结构几种树的结构B+树单来说就是一种为磁盘或者其他存储设备而设计的一种平衡二叉树,在B+tree中所有记录都按照key的大小存放在叶子结点上,各叶子结点直接用指针连接二叉树二叉树的规则是父节点大于左孩子节点,小于右孩子节点平衡二叉树首先是一个二叉树,但是要求任意一个节点的左右孩子节点的高度差不大于1B树首先是一个平衡二叉树,但是又要求每个叶子节点到根节原创 2021-01-11 17:00:42 · 225 阅读 · 1 评论