1.在事务中使用查询遇上并发的情况
(1)线程1事务开启,线程2查询数据
原始数据:tea_name=’bbb’;
线程1:START TRANSACTION;
线程1:SELECT * from t_a_tea where tea_id=1;
线程2:SELECT * from t_a_tea where tea_id=1;
结果:bbb(tea_id=1时tea_name的数据)
结论:查询不会触发Mysql共享锁(读锁)
(2)线程1事务已开启,线程1查询数据,线程2修改数据,线程1读取数据
原始数据:tea_name=’bbb’;
线程1:START TRANSACTION;
线程1:SELECT * from t_a_tea where tea_id=1;
线程2:UPDATE t_a_tea set tea_name=‘ccc’ where tea_id=1;
线程1:SELECT * from t_a_tea where tea_id=1;
结果:bbb(tea_id=1时tea_name的数据)
结论:查询不会触发Mysql排他锁(写锁),但是事务的隔离性会导致查询到错误的数据
(3)线程1事务已开启,线程2修改数据,线程1读取数据
原始数据:tea_name=’bbb’;
线程1:START TRANSACTI
Mysql(5.5.53)事务与并发测试
本文通过实例探讨了Mysql事务在并发环境下的行为,包括查询、更新、插入和删除操作。测试结果显示,更新和删除操作会触发排他锁,而查询操作则不会。此外,事务中插入操作会影响主键自增,即使回滚也会占用主键ID。并发场景下,事务隔离性可能导致数据一致性问题,需要合理设计事务以确保稳定性。
摘要由CSDN通过智能技术生成