1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

MySQL系列之-“事务”与“锁”

MySQL系列之-“事务”与“锁”

我是本际云服务器推荐网的小编小本本,今天给大家分享MySQL中的事务和锁相关的知识。

MySQL系列之-“事务”与“锁”

事务的四大特性

事务是指一组数据库操作,它们被视为单个工作单元并顺序执行。MySQL事务具有四个特性:

  • 原子性 (Atomicity):事务中包含的所有操作只能全部成功或全部失败。
  • 一致性 (Consistency):事务执行前后,数据库必须保持一致状态。
  • 隔离性 (Isolation):事务在进行中,不会被其他并发事务影响。
  • 持久性 (Durability):事务提交后,修改的数据将永久保存在数据库中。

并发引发的数据库问题

在并发执行事务时,可能会引发以下问题:

  • 数据丢失更新(updatelost):多个事务同时修改同一行数据,后一个事务的修改覆盖了前一个事务的修改。
  • 脏读(dirtyreads):一个事务正在修改数据,另一个事务读取了未提交的结果。
  • 不可重复读(NonRepeatableReads):一个事务多次读取同一数据,但是数据内容不一致。
  • 幻读(PhantomReads):一个事务多次查询相同数据,但每次查询结果有所不同。

通过事务隔离级别解决事务并发

MySQL提供了四种事务隔离级别,分别是:未提交读(READ-UNCOMMITTED)、读已提交(READ-COMMITTED)、可重复读(REPEATABLEREAD)和串行化(SERIALIZABLE)。

通过锁解决并发事务数据一致性问题

MySQL中的锁分为乐观锁和悲观锁。

  • 乐观锁:假设多个事务并发执行不会相互影响,所以不会加锁,只有在提交修改时才会检查数据是否被其他事务修改过。
  • 悲观锁:一种保守策略,在数据操作前加锁,这样其他事务无法修改此数据。加锁过多会降低并发性。

此外,MySQL中还有MyISAM引擎和InnoDB引擎两种锁的机制。

在实际应用中,需要根据业务需求来选择合适的隔离级别和锁机制。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6135.html