本文共 1108 字,大约阅读时间需要 3 分钟。
ACID(原子性、一致性、隔离性、持久性)是数据库事务管理的四个基本原则,确保数据库在高并发环境下可靠运行。这些原则尤其在InnoDB存储引擎中得到了充分体现。
原子性 (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
最高隔离级别,防止所有形式的读现象,通过严格的锁机制实现。索引是加快查询速度的关键因素,InnoDB 使用 B+树实现索引。树的高度直接影响存储效率:
单行记录大小:约279字节,B+树每页存储16384字节。
指针大小:InnoDB 使用 6字节或 14字节(针对大INT)存储索引指针。
树的高度:高度增加提升存储能力,但降低查询速度。
转载地址:http://rndfk.baihongyu.com/