Mysql数据库的隔离方式;数据库开启事务;悲观锁、乐观锁的使用
四种隔离模式: read-uncommitted 、read-committed、repeatable-read、serializerable ,四种模式在 脏读、不可重复读、幻读 上有不同的表现。
查看数据库的隔离级别: select @@global.tx_isolation;
修改数据库的隔离级别: set global transaction isolation level read committed;
或者在mysql的my.ini配置文件的 [mysqld] 下添加如下全局配置 :transaction-isolation = READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE ,任选一个即可。
改完均要重启数据库才能生效
事务:访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
在Django中开启事务的方式有两种:
from django.db import transaction # 先导入事务transaction, @transaction.atomic # 搞个装饰器 def post(self,request): sid = transaction.savepoint() # 开启事务 ....一系列的操作... transaction.savepoint_rollback(sid) # 回滚 transaction.savepoint_commit(sid) # 提交
from django.db import transaction # 导入事务transaction, with transaction.atomic(): # 事务的with语句用法 sid = transaction.savepoint() # 开启事务 try: transaction.savepoint_commit(sid) # 提交 except: transaction.savepoint_rollback(sid) # 回滚