青云博客 记录、分享

自增主键会遇到什么问题?(深入)

自增主键的特点是当表中每新增一条记录时,主键值会根据自增步长自动叠加,通常会将自增步长设置1,也就是说自增主键值是连续的。那么MySQL自增主键值一定会连续吗?今天这篇文章就来说说这个问题,看看什么情况下自增主键会出现不连续? 1.数据准备 drop TABLE increnment_test; -

詹学伟 Published on 2024-04-22

自增主键会遇到什么问题

使用数据库的自增主键,虽然在很多情况下都很方便,但也可能遇到一些问题: 插入性能问题:对于非常高并发的插入操作,自增主键可能会成为性能瓶颈。因为每次插入新记录时,都需要获取一个新的自增ID,这个操作是串行的,无法并发执行。 主键耗尽:

詹学伟 Published on 2024-04-22

Undo log是如何回滚事务的

在数据库中,Undo Log通常用于实现事务的回滚操作。当事务执行更新操作时,数据库会将相应的旧数据记录在Undo Log中,用于回滚事务时还原到事务开始前的状态。以下是Undo Log回滚事务的一般步骤: 首先,获取事务的回滚指针或Undo Log的起始位置。 从Undo Log的末尾开始逆向扫描

詹学伟 Published on 2024-04-22

深度解析:掌握MVCC机制的核心原理

这一讲我们来深入分析一下MySQL是如何通过MVCC机制来实现隔离性。 上一讲和大家聊到,隔离性本质上是因为同时存在多个并发事务可能会导致脏读、幻读等情况。 要解决并发问题只有一种方案就是加锁。当然,锁不可避免的会导致性能下降,但是,锁也有乐观和悲观之分,上一讲我们聊到的,隔离级别中的串行化就是一种

詹学伟 Published on 2024-04-22

讲讲主从复制原理与延迟

MySQL 的主从复制原理如下: 首先,主库将变更写入 binlog 日志。 从库连接到主库后,有一个 IO 线程负责将主库的 binlog 日志复制到自己本地,并写入到中继日志中。 然后,从库中有一个 S

詹学伟 Published on 2024-04-22

讲讲你对MVCC的理解

MVCC是一种并发控制策略,它在多个事务同时执行时,确保数据库的一致性和隔离性。MVCC通过为每个事务创建数据的不同版本,避免了锁竞争问题。 它的工作原理如下: 每条数据行都有一个隐藏的版本号或时间戳,记录该行的创建或最后修改时间。 当事务开始,它会获取一个唯一的事务ID,作为其开始时间戳。

詹学伟 Published on 2024-04-22

事务的隔离级别有哪些?(深入)

1.事务 MySQL事务是指一组数据库操作,这些操作要么全部执行成功,要么全部不执行。 如果其中任何一个操作失败,整个事务都会被回滚,即所有操作都会被撤销,数据库回到事务开始之前的状态。这样可以保证数据的一致性和完整性,避免了数据丢失或者不一致的情况。 2.事务特性 事务4大特性(ACID):原子性

詹学伟 Published on 2024-04-22

说下你对数据库事务的理解

数据库事务是指一系列数据库操作的逻辑单元,这些操作要么全部成功执行,要么全部回滚。它的目的是确保数据的一致性和完整性。事务具备4大特性,即原子性、一致性、隔离性和持久性: 原子性:事务

詹学伟 Published on 2024-04-22

事务的隔离级别有哪些

MySQL支持以下四个事务隔离级别: 读未提交:最低的隔离级别。事务可以读取到其他事务尚未提交的数据,可能会出现脏读、不可重复读和幻读问题。 读已提交:事务只能读取到已经提交的数据。但在同一事务中,多次读取同一行的数据结果可能会不一致,可能会出现不可重复读和幻读问题。 可重复读

詹学伟 Published on 2024-04-22

慢SQL你是怎么优化的?(深入)

1. SQL语句优化 1.1. 准备工作: 1.1.1. 创建student表: DROP TABLE IF EXISTS student; CREATE TABLE student ( id int(10) NOT NULL AUTO_INCREMENT COMMENT '序号', stu

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