MySQL杂谈
发布日期:2025-04-17 23:50:37
浏览次数:17
分类:精选文章
本文共 1108 字,大约阅读时间需要 3 分钟。
ACID 与数据库事务
ACID(原子性、一致性、隔离性、持久性)是数据库事务管理的四个基本原则,确保数据库在高并发环境下可靠运行。这些原则尤其在InnoDB存储引擎中得到了充分体现。
ACID 分解
原子性 (Atomicity)
事务是数据库操作的最小单位,所有操作要么全部成功提交,要么全部失败回滚。InnoDB通过双写缓冲机制确保事务提交时数据持久化。一致性 (Consistency)
数据库在每次提交或回滚后都保持一致性。多个表的更新操作不会导致查询看到部分更新的数据。隔离性 (Isolation)
正在执行的事务之间隔离,互不影响。 isolation level 可以根据需求调整,平衡性能与数据一致性。持久性 (Durability)
提交成功后,数据在系统故障或崩溃时依然保持不变。InnoDB通过双写缓冲和存储到磁盘实现持久性。读现象(脏读、不可重复读、幻读)
读现象是由于事务并发操作带来的数据不一致问题,主要表现为:
脏读 (Dirty Read)
读到未提交的事务修改数据。只在 READ UNCOMMITTED 隔离级别下可能发生。不可重复读 (Non-Repeatable Read)
同一个事务内,两次查询看到不同的数据。常见于 READ COMMITTED、READ UNCOMMITTED 隔离级别。幻读 (Phantom Read)
查询结果中出现新的数据条目或失去已有数据条目。仅在 REPEATABLE READ 及以上隔离级别下可能发生。隔离级别
InnoDB 支持四种隔离级别:
READ UNCOMMITTED
最低隔离级别,允许脏读,仅适用于只读事务。READ COMMITTED
不允许脏读,但可以看到已提交的事务数据。适合需要高并发的应用。REPEATABLE READ
默认隔离级别,防止不可重复读,确保同一事务内查询结果一致。SERIALIZABLE
最高隔离级别,防止所有形式的读现象,通过严格的锁机制实现。索引与B+树
索引是加快查询速度的关键因素,InnoDB 使用 B+树实现索引。树的高度直接影响存储效率:
单行记录大小:约279字节,B+树每页存储16384字节。
指针大小:InnoDB 使用 6字节或 14字节(针对大INT)存储索引指针。
树的高度:高度增加提升存储能力,但降低查询速度。
- 高度为2:存储约 95,000 条记录。
- 高度为3:存储约 155,616 条记录。
- 高度为4:存储约 254,899,712 条记录。
参考资料
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2026年06月02日 04时02分25秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP操作csv文件导入+导出
2023-03-01
php操作mysql用select_php如何操作mysql获取select 结果
2023-03-01
PHP操作符与控制结构
2023-03-01
PHP支付宝SDK使用,电脑网页支付
2023-03-01
php支付宝手机网页支付类实例
2023-03-01
PHP改变数组key值的方法
2023-03-01
php教程之php空白页的原因及解决方法
2023-03-01
PHP数据库操作
2023-03-01
PHP数据文件过大,导致PHP加速器eaccelerator在PHP5.2版本下崩溃
2023-03-01
RabbitMQ - 死信、TTL原理、延迟队列安装和配置
2023-03-01
PHP数据访问的多重查询(租房子查询)
2023-03-01
RabbitMQ - 如保证消息的可靠性?(消息确认、消息持久化、失败重试机制)
2023-03-01
RabbitMQ - 基于 SpringAMQP 带你实现五种消息队列模型
2023-03-01
php数组函数分析--array_column
2023-03-01
php数组去重复数据的小例子
2023-03-01
php数组实现:哈希 +双向链表
2023-03-01
PHP数组排序函数array_multisort()函数详解(二)
2023-03-01
php数组的几个函数和超全局变量
2023-03-01
PHP文件上传详解
2023-03-01
PHP文件锁
2023-03-01