标签 MySQL 下的文章

意向锁是什么知道吗?意向锁是一种表级锁,与插入意向锁不要混淆。意向锁的引入是为了支持InnoDB的多粒度锁,并解决表级锁和行级锁共存的问题。当需要给表加表级锁时,我们需要判断表中是否有数据行被锁定,以确定是否能成功加锁。

- 阅读剩余部分 -

说说 InnoDB 里的行锁实现?InnoDB的行级锁实现主要包括以下三种类型:记录锁(Record Lock):直接锁定单行记录。当使用唯一性索引(包括唯一索引和聚簇索引)进行精确匹配的等值查询时,会直接锁定该行记录。例如,执行select * from t where id = 6 for update;会锁定id=6的记录。

- 阅读剩余部分 -

MySQL 中有哪几种锁,列举一下?根据锁粒度划分,存在以下三种锁类型:表锁:开销较小,加锁速度快;锁定范围广,可能导致较高的锁冲突率,并发度较低;不会出现死锁。行锁:开销较大,加锁速度较慢;可能会出现死锁;锁定粒度细,降低了锁冲突的概率,提高了并发度。

- 阅读剩余部分 -

什么是索引下推优化?索引条件下推优化(Index Condition Pushdown,ICP)是MySQL 5.6 引入的一项用于优化数据查询的功能。在不使用索引条件下推优化时,存储引擎通过索引检索到数据,然后将数据返回给 MySQL 服务器,然后 MySQL 服务器再对返回的数据进行过滤条件的判断。

- 阅读剩余部分 -

覆盖索引了解吗?对于辅助索引,无论是单列索引还是联合索引,如果查询所需的数据列完全包含在辅助索引中,而无需额外查找主键索引,这种索引称为覆盖索引。覆盖索引的存在避免了回表操作,因为所需的数据可以直接从辅助索引中获取,提高了查询效率。

- 阅读剩余部分 -

回表了解吗?在 InnoDB 存储引擎中,当使用辅助索引进行查询时,首先通过辅助索引找到主键索引的键值,然后再通过这些主键值在主键索引中查找相应的数据。这个过程被称为回表。回表操作需要额外扫描一棵索引树,相比于基于主键索引的查询,它多了一次索引查找的过程。

- 阅读剩余部分 -