MySQL 事务有原子性、隔离性、一致性和持久性四大特性,为什么偏偏给隔离性设置了级别?

说白了,在事务的四个特性中,之所以将隔离放在不同的级别,其实很简单。
主要是在多个用户同时访问数据库时找到并发性和一致性之间的平衡。
我们先来说说最重要的事情。
不同级别的隔离可以减少或避免读一致性问题,例如脏读、不可重复读和幽灵读。
我们去年跑的项目大概有3 000次数据操作,但是因为隔离级别设置错误,差点出大问题。

还有一点是MySQL事务默认是自动提交的,这意味着每条SQL语句在执行时都会自动提交。
起初我以为这样很方便,但后来我发现这是错误的。
对于复杂的业务运营,这可能会导致数据不一致。
等等,还有一件事,MySQL 提供了四种隔离级别:未提交读、已提交读、可重复读和序列化读。
每个级别都有自己的适用场景。

事实上,序列化隔离级别提供了最强的一致性保证,但并发性能最差;而未提交读隔离级别允许更高的并发性,但一致性要求最低。
在可重复读隔离级别以下,InnoDB存储引擎通过MVCC机制保证良好的并发性和数据一致性。

很多人都没有注意到这一点。
开发人员应根据业务需求选择合适的隔离级别。
我认为值得一试。
您可以根据实际情况调整隔离级别,看看哪一种最适合您的应用场景。
最终,找到适当的平衡可以使您的数据库安全高效。

一文带你搞懂大事务的前因后果

大型事务需要超过 5 分钟才能完成,并且连接池陷入恐慌。

操作数据超过1 0万条,锁竞争激烈。

将事务拆分最多 1 00 次以提高并发性。

异步操作必须配置为 3 00 秒后重试。

监控Innodb_trx,将阈值设置为3 0分钟。

首先阻止争用程度高的资源,然后再阻止争用程度低的资源。

将影院账号划分为2 00个条目,锁冲突次数减半。

监控日志以尽早检测大型事务。

业务测试阶段,打开General_log文件。

探究MySQLXA事务的高效性能mysqlxa事务性能

截至 2 02 3 年,我朋友的公司正在使用 MySQL 的 XA 事务。
他表示,虽然这相当复杂,但可以保证数据的一致性。

上周他说要发起 XA 交易,您需要使用 XASTART 并提供一个 ID,如 XASTART 'xa_id';
然后您需要执行一系列SQL语句,例如插入和更新数据。

接下来,您需要使用 XAEND 结束事务,使用 XAPREPARE 准备事务,使用 XAROLLBACK 回滚,或使用 XACOMMIT 提交。

但是需要注意的是,XA事务的ID必须是字符串,并且所有操作都必须在连接内完成。

在性能方面,他们提到了减少锁的使用、减少事务范围、提交过程优化和日志记录。

他还有另一个想法,即流式日志记录非常有用,可以提高性能。

但他表示这项工作消耗资源,必须仔细计划。
忘了它。
你自己照顾好它。