数据库事务
来源:互联网 发布:零一数据分析 编辑:程序博客网 时间:2024/05/19 22:47
1、事务的四大特性:
(1)原子性(Atomicity):事务是一个不可分割的工作单位,事物中的事物要么都发生,要么都不发生。
(2)一致性(Consistency):事务前后数据的完整性必须保持一致。(转账前后钱的总数保持不变)
(3)隔离性(Isolation):多个用户并发访问数据库时,一个用户的事务不被其他用户的事物所干扰,多个并发事物之间相互隔离。
(4)持久性(Durability):事务一旦提交,他数据库中的数据改变就是持久性的,接下来即使数据库发生故障也不应该对其有任何影响。(只要提交commit,就必须执行事物)
2、不考虑隔离性的问题:
(1)脏读:一个事务读取另一个事务未提交的事物。(别的事务读到数据后,修改数据的事务回滚)
(2)不可重复读:在一个事务中读取数据,读到了别的事务更新的数据,读取的数据不一致。(未提交事物时(一个事务未结束),数据被别的事务修改,在次读取数据)
(3)虚读(幻读):一个事务内读取到别的事物插入的数据。(未提交事务时(一个事物未结束),表被别的事务插入新的数据,此事务再次获取表中的数据)
3、事务的隔离级别:
Serializable:可避免脏读,不可重复读,虚读情况的发生。
Repeatable read:可避免脏读,不可重复读情况的发生。
Read committed:可避免脏读情况的发生。Mysql默认情况
Read uncommitted:所有情况均无法保证。
4、对事务的操作
(1)命令行中事物操作:
开启事务:start transaction回滚事务:Rollback提交事务:Commit
(2)程序中事务操作:
开启事务:Connection.setAutoCommit(flase);关闭默认提交,即开启事物回滚事务:Connection.rollback():提交事务:COnnection.commit():提交事物
(3)设置事务回滚点:
SavePoint sp = Connection.setSavePoint();Connection.rollback(sp);放在catch中,手动回滚后一定要记得提交事务
(4)命令行设置事务隔离级别:
set transaction isolation level 级别查看隔离级别:select @@tx_isolation
(5)程序中设置事务隔离级别:
//隔离级别是设置给Connection的conn.setTransactionIsolation(Connection.级别)
阅读全文
0 0
- 【事务一】数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- 数据库事务
- A+B for Input-Output Practice (III)
- 常用vim操作快捷键
- recyclerView的item行高不能随布局变化
- computed和watch的使用场景
- css基础-网页的布局思想、行内元素转换为块元素、内容溢出的处理、div盒子的定位
- 数据库事务
- MR 运行原理
- jQuery知识点(2)-页面初始化函数
- java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadProxy@12d7a3
- centos7安装mysql5.7脚本并配置开机启动
- centos7.2安装mysql5.6.38
- 欢迎使用CSDN-markdown编辑器
- 文章标题
- C# 请假小时数的计算