
MySQL
文章平均质量分 87
MySQL常见面试题
终生成长者
Golang、Gin、Gorm、Grpc、MySQL、Redis、MongoDB、Etcd、Es、计算机网络、操作系统、数据结构。
展开
-
MySQL—缓存
InnoDB会把存储的数据划分为若干个页,以页作为磁盘和内存交互的基本单位,一个页默认大小为16KB,MySQL启动时,InnoDB会为buffer pool申请一篇连续的内存空间,然后按照默认的16KB的大小划分出一个个的页,buffer pool中的页就叫做缓存页。有了 Free 链表后,每当需要从磁盘中加载一个页到 Buffer Pool 中时,就从 Free链表中取一个空闲的缓存页,并且把该缓存页对应的控制块的信息填上,然后把该缓存页对应的控制块从 Free 链表中移除。原创 2023-08-10 20:20:54 · 1315 阅读 · 1 评论 -
MySQL—事务
多版本并发控制(Multi-Version Concurrency Control,简称 MVCC)是一种用于实现事务隔离的技术。在 MySQL 中,InnoDB 存储引擎使用 MVCC 来实现事务的隔离性,提高数据库并发性能。MVCC 的基本思想是为每个事务操作提供一个数据版本的快照,这样事务就可以在它自己的数据快照上独立运行,而不会受到其他并发事务的影响。通过这种方式,MVCC 可以在不使用加锁的情况下实现高效的事务隔离,从而提高系统的并发性能。原创 2023-08-09 17:01:21 · 366 阅读 · 0 评论 -
MySQL—锁篇
两阶段锁协议(Two-Phase Locking Protocol,简称 2PL)是一种用于控制并发事务的锁定协议,以确保事务的一致性和隔离性。两阶段锁协议可以防止脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻读(Phantom Read)等问题,从而实现事务的隔离级别。两阶段锁协议的基本思想是将事务的执行过程分为两个阶段:加锁阶段(Locking Phase)和解锁阶段(Unlocking Phase)。加锁阶段(Locking Phase)原创 2023-08-09 16:59:55 · 984 阅读 · 0 评论 -
MySQL—索引
聚簇索引(Clustered Index)和非聚簇索引(Non-Clustered Index)是两种不同类型的数据库索引,它们在数据存储和查询性能方面有一些区别。聚簇索引并不是一种独立的索引类型,而是指数据行与索引行在存储上的排列方式。在聚簇索引中,表中的数据行按照索引键的顺序存储在磁盘上。换句话说,聚簇索引定义了表中数据的物理存储顺序。由于聚簇索引决定了数据的物理顺序,因此每个表只能有一个聚簇索引。在具有聚簇索引的表中,数据行的查找非常快,因为索引键值可以直接指向数据行的存储位置。原创 2023-08-09 16:57:32 · 792 阅读 · 0 评论 -
MySQL—日志
redo log 是物理日志,记录了某个数据页做了什么修改,比如对 XXX 表空间中的 YYY 数据页 ZZZ 偏移量的地方做了AAA 更新,每当执行一个事务就会产生这样的一条或者多条物理日志。在 MySQL 中,redo log(重做日志)是一种事务日志,用于记录已经执行的事务对数据库的修改操作。它用于确保事务的持久性和数据的一致性。当一个事务对数据库进行修改操作时,MySQL 首先会将这些修改操作记录到 redo log 中,然后再将修改操作应用到内存中的数据页。原创 2023-08-09 16:47:47 · 485 阅读 · 0 评论 -
MySQL执行一条select语句,执行过程怎么样
优化器主要负责将 SQL 查询语句的执行方案确定下来,基于查询成本的考虑, 选择查询成本最小的执行计划。根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;原创 2023-07-31 08:50:29 · 382 阅读 · 0 评论