MySQL默认的事务隔离级别是可重复读(REPEATABLE READ)。事务是一组一起执行或都不执行的数据库操作序列,它是一个不可分割的工作单位。事务具有原子性、一致性、隔离性和持久性(ACID特性)。
MySQL支持四种事务隔离级别:
事务在需要保证数据一致性和完整性的场景中非常有用,例如:
原因:在可重复读隔离级别下,同一个事务中多次读取同一范围的数据,可能会出现幻读现象,即读取到了其他事务插入的新数据。
解决方法:
SELECT ... FOR UPDATE语句。START TRANSACTION;
SELECT * FROM table_name WHERE id = 1 FOR UPDATE;
-- 执行其他操作
COMMIT;原因:事务执行时间过长,超过了数据库设置的超时时间。
解决方法:
innodb_lock_wait_timeout参数。SET GLOBAL innodb_lock_wait_timeout = 120; -- 设置为120秒希望这些信息对你有所帮助!