青云博客 记录、分享

Mysql是如何回滚事务的

MySQL使用了Undo Log(回滚日志)来实现事务的回滚操作。当一个事务需要回滚时,MySQL会根据事务的Undo Log来撤销对数据库的修改操作,将数据恢复到事务开始之前的状态。 具体的回滚过程如下: 事务回滚触发:当事务发生异常、被显式回滚或者被外部终止时,MySQL会触发事务的回滚操作。

詹学伟 Published on 2024-04-24

MySQL 索引底层结构为什么使用 B+树

MySQL索引底层结构使用B+树的主要原因有以下几点: 能够支持快速的查找:B+树是一种平衡多路查找树,树的高度相对较低,能够快速定位到目标数据。在具有大量数据的情况下,B+树的查找效率更高。 有序性:B+树的特点是节点上的键值是有序排列的,这使得在范围查询、排序和分组等操作中效率更高。对于MySQ

詹学伟 Published on 2024-04-24

Mysql是如何回滚事务的

MySQL使用了Undo Log(回滚日志)来实现事务的回滚操作。当一个事务需要回滚时,MySQL会根据事务的Undo Log来撤销对数据库的修改操作,将数据恢复到事务开始之前的状态。 具体的回滚过程如下: 事务回滚触发:当事务发生异常、被显式回滚或者被外部终止时,MySQL会触发事务的回滚操作。

詹学伟 Published on 2024-04-24

MVCC 底层原理

MVCC(Multi-Version Concurrency Control),即多版本并发控制,是一种数据库的并发控制机制。它的目标是在保证数据一致性和隔离性的同时,提供更好的并发性能。 MVCC的底层原理如下: 每一行数据都有多个版本:在MVCC中,每个数据行都会维护多个版本。每当对一行数据进行

詹学伟 Published on 2024-04-24

LRU 实现原理

LRU(Least Recently Used)是一种常见的缓存淘汰策略,它的基本思想是根据数据的访问时间来淘汰最近最少使用的数据。当缓存满了的时候,会将最近最少访问的数据从缓存中删除,以腾出空间给新的数据。 在实现上,可以通过维护一个数据结构来记录数据的访问顺序,常用的数据结构是双向链表(Doub

詹学伟 Published on 2024-04-24

MySQL 为什么 InnoDB 是默认引擎

MySQL中的InnoDB引擎是默认引擎,主要基于以下几个原因: 事务支持:InnoDB是MySQL唯一一个提供事务支持的引擎。事务是一组操作的集合,要么全部成功,要么全部失败,确保数据的一致性和可靠性。对于具有高并发读写需求的应用,如电子商务、银行等,事务的支持是非常重要的。 锁机制:InnoDB

詹学伟 Published on 2024-04-24

缓存穿透、缓存击穿和缓存雪崩

缓存穿透、缓存击穿和缓存雪崩是在使用缓存时常见的性能问题。 缓存穿透指的是恶意查询一个不存在的数据,导致该请求每次都会穿透缓存,直接访问数据库。这种情况下,大量请求会直接访问数据库,给数据库造成压力,降低了系统性能。 解决办法: 使用布隆过滤器:将所有可能存在的数据放入布隆过滤器中,对请求进行过滤,

詹学伟 Published on 2024-04-24

Mysql的可重复读解决了哪些问题

MySQL的可重复读隔离级别解决了以下几个问题: 脏读(Dirty Read):在可重复读隔离级别下,一个事务读取的数据只能是已经提交的数据,避免了脏读问题。其他未提交的事务对于当前事务是不可见的,保证读取到的数据是一致的和可靠的。 不可重复读(Non-repeatable Read):在可重复读隔

詹学伟 Published on 2024-04-24

SQL 慢查询优化

1、分析语句,是否加载了不必要的字段/数据。 2、分析 SQL 执行计划(explain extended),思考可能的优化点,是否命中索引等。 3、查看 SQL 涉及的表结构和索引信息。 4、如果 SQL 很复杂,优化 SQL 结构。 5、按照可能的优化点执行表结构变更、增加索引、SQL

詹学伟 Published on 2024-04-24

G1垃圾收集器

G1是一种面向服务器端应用的垃圾收集器,是JDK 7版本引入的一项重要特性。G1垃圾收集器以实现<

詹学伟 Published on 2024-04-24
Previous Next