【mysql学习笔记】-事务处理
来源:互联网 发布:万网中文域名 编辑:程序博客网 时间:2024/06/03 23:41
1.基本概念
1)事务:指一组SQL语句,是在一次逻辑中对数据库执行的一系列操作
2)回退:指撤销指定SQL语句的过程
3)提交:指将未存储的SQL语句结果写入数据库表
4)保留点:指事务处理中设置的临时占位符,可以对它发布回退
5)事务处理:事务处理可以用来维护数据库的完整性,它保证成批的mysql操作要么完全执行,要么完全不执行
2.事务的性质
1)原子性:事务中定义的一系列操作,要么完全执行,要么完全不执行
2)一致性:必须使所有的数据都保持一致的状态。比如:A账户和B账户各有1000块钱,不论它们之间怎么相互转账,都应该保持账户总额为2000元。
3)持久性:事务成功提交的数据应该永远保存在数据库。
4)隔离性:如果有多个事务操作同一条数据,应该保证事务之间不会相互影响。
3.数据库事务执行会出现的问题
事务出现的问题就是多线程操作,即多个线程操作同一条数据。主要会出现的问题如下:
1)第一类更新问题:事务之间会覆盖掉其他已提交事务
例子如下:
最后账户的余额应该是1000元,中间的问题很明显,事务A覆盖了事务B的部分操作,结果就导致银行客户损失了100元。
2)脏读问题:读了还未提交的数据。
例子如下:
事务过程如上,问题很明显,读了不该读的数据,结果导致银行损失了1000元。
3)幻读:前后读取结果的记录数不一样。
例子如下:
4)不可重复读:前后读取的结果的值不一样
例子如下:
4.MySql数据事务处理语句
1)标示事务处理开始:start transaction
2)回退:rollback。注意:rollback只能在一个事务处理内使用,在执行一条start transaction命令之后;事务处理用来管理insert、update和delete语句,不能回退select语句。例子如下:
select * from ordertotals;
start transaction;
delete from ordertotals;
select * from ordertotals;
rollback;
select * from ordertotals;
3)提交:commit。一般的mysql语句都是隐含提交,即提交操作是自动进行的。但是,在事务处理块中,提交不会隐含地进行,要使用commit语句。
4)使用保留点:为了支持回退部分事务处理,必须能在事务处理块中合适的位置放置占位符。这样,如果要回退,就可以回退到某个占位符,这些占位符就称为保留点。如:
savepoint delete1;
rollback to delete1;
- 【mysql学习笔记】-事务处理
- 《MySQL必知必会学习笔记》:事务处理
- 49.笔记 MySQL学习——事务处理
- MySql笔记-事务处理
- MySQL事务处理学习记
- mysql学习之事务处理
- sql学习笔记(24)----------MySQL的事务处理详解
- 《MySQL必知必会》学习笔记十六(事务处理)------掌握部分
- MYSQL学习笔记(二十二)管理事务处理
- 50.笔记 MySQL学习——利用事务处理保证语句
- oracle学习笔记之事务处理
- php学习笔记之事务处理
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
- Mysql必知必会(笔记)【管理事务处理】
- JDBC基础学习笔记_04_jdbc事务处理
- mysql事务处理
- mysql事务处理
- Swift - 搜索条(UISearchBar)的用法
- java集合类深入分析之Queue篇
- Linux SD卡驱动开发(四) —— SD 控制器之真正的硬件操作
- 上传jar包到私服(仅限于翼支付公司工作流程使用)和涉及的技术总结
- namespace命名空间
- 【mysql学习笔记】-事务处理
- C++之模板
- 13、RedHat6 集群文件系统GFS
- Linux SD卡驱动开发(五) —— SD 卡驱动分析Core补充篇
- Swift - 移除页面视图上的所有元素
- spring boot 页面之间相互传值二
- Vmware下Mysql5.6.30主从配置
- html状态码
- CString的MakeLower 特殊情况(乱码)下,转化会出错