mysql 事务相关

mysql事务隔离

1. 查询事物隔离级别

select @@tx_isolation;

2. 设置事务隔离级别

set session transaction isolation level 隔离级别(如read uncommitted);

3. 数据库的四个级别:

1)read uncommitted : 读取尚未提交的数据 :哪个问题都不能解决
2)read committed:读取已经提交的数据 :可以解决脏读 ---- oracle默认的
3)repeatable read:重读读取:可以解决脏读 和 不可重复读 ---mysql默认的。开启MVCC能解决幻读问题
4)serializable:串行化:可以解决 脏读 不可重复读 和 虚读---相当于锁表,基本不推荐
MySQL事务是一个非常重要的数据库操作概念,它允许多条SQL语句作为一个整体执行,并保证数据的一致性和完整性。以下是关于MySQL事务的一些关键内容: ### 1. **事务的基本概念** - **原子性 (Atomicity)**:事务中的所有操作要么全部完成,要么完全不执行。如果其中一个步骤失败,则整个事务回滚到初始状态。 - **一致性 (Consistency)**:事务将数据库从一种一致状态转换为另一种一致状态。确保数据在事务前后的正确性和约束条件满足。 - **隔离性 (Isolation)**:多个并发事务之间相互独立运行,每个事务看不到其他事务未提交的数据更改。 - **持久性 (Durability)**:一旦事务成功提交,其对数据库的改变将是永久性的,即使系统发生故障。 ### 2. **事务的关键命令** - `START TRANSACTION` 或 `BEGIN`:开始一个新的事务。 - `COMMIT`:正式确认并保存当前事务的所有改动。 - `ROLLBACK`:撤销当前事务的操作并将数据库恢复到事务之前的状况。 ### 3. **事务的隔离级别** MySQL支持四种标准的事务隔离级别: - **READ UNCOMMITTED**(读未提交):允许脏读、不可重复读和幻读。 - **READ COMMITTED**(读已提交):不允许脏读,但仍然可能发生不可重复读和幻读。 - **REPEATABLE READ**(可重复读,默认值):防止了脏读和不可重复读,但可能出现幻读。 - **SERIALIZABLE**(序列化):最高级别的隔离,避免一切并发问题,但性能开销最大。 ### 4. **InnoDB存储引擎的支持** InnoDB是MySQL默认使用的存储引擎,也是唯一全面支持ACID特性的存储引擎。对于需要频繁使用事务的应用场景,建议选择InnoDB作为表的存储引擎。 ### 示例代码 ```sql -- 开始一个新事务 START TRANSACTION; -- 插入一条记录 INSERT INTO users(name, age) VALUES('Alice', 25); -- 更新某条记录 UPDATE orders SET status = 'shipped' WHERE id = 101; -- 提交事务 COMMIT; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值