MySQL数据库—事物(Transaction)
事物是一组SQL语句,要么全部执行成功,要么全部执行失败。通常一个事物对应一个完整的业务(比如银行账户转账业务,该业务就是一个最小的工作单元)。
事物的操作:
(1)事物的开启:start transaction
(2)事物的提交:commit
(3)事物的回滚:rollback
(4)事物的关闭:close
默认情况下一条DML(增删改)语句就是一个事物。数据库会自动commit
@事物提交的两种方式:
- 自动提交:(1)mysql就是自动提交的
- 手动提交:(1)需要先开启事物,再提交
*修改事物的默认提交方式:
(1)查看事物的默认提交方式:select @@autocommit; --1代表自动提交 0 代表手动提交
(2)修改默认提交方式:set @@autocommit=0;
(3)查询事物的隔离级别:select @@tx_isolation;
(4)修改事物的隔离级别:set @@tx_isolation=‘read-committed’
存在的问题
–张三给李四转账500元
张三账户-500
update account set balance = balance-500 where name=‘zhangsan’;
李四账户+500
出错了…
update account set balance = balance+500 where name=‘lisi’;
在数据库中查看:select * from account;
zhangsan 500
lisi 1000
解决问题(开启事物管理)
张三给李四转账500元(被事物管理)
开启事物(start transaction)
1.张三账户 金额-500
出现异常(rollback)
2.李四账户 金额+500
提交事物(commit)
事物的四大特征(ACID特性)
(1)事物的原子性:
事物是最小的单元,不可再分,要么全部执行成功,要么全部执行失败
(2)事物的一致性:
事物操作前后,数据总量不变
不一致包含三点(脏读,不可重复读,幻读)
(3)事物的隔离性
隔离性是指多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事物,不能被其他事物所干扰,多个并发事物之间要相互隔离。
(4)事物的持久性
当事物提交或回滚后,数据库会持久化的保存事物。
事物的四个隔离级别
事物的不一致性包括:
**(1)脏读:**一个事物处理过程中读取了另一个未提交的事物中的数据。
有一定的弊端,举个例子:
张三给李四借钱,李四查看自己的账户已到账500块钱并给张三打了欠条,张三rollback。李四再查看自己的账户傻眼了。
**(2)不可重复读:**在同一个事物中,两次读取到的数据不一样。
存在的弊端,举个例子:
张三做一个报表的系统,在自己的本机上操作了一下,今年的增长点是百分之三十五点四,过了五分钟,张三把自己的数据拿去给零领导看,并说今年的增长点是百分之三十五点四。领导一看是百分之三十,怀疑张三的工作能力。(这就需要设置事物的隔离级别:repeatable read)
**(3)幻读:**在一个事物中读取到了别的事物插入的数据,导致前后不一
致
插入链接与图片
脏读:
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
Single backticks |
| ‘Isn’t this fun?’ |
Quotes |
| “Isn’t this fun?” |
Dashes |
| – is en-dash, — is em-dash |
创建一个自定义列表
HTML
Authors
John
Luke
如何创建一个注脚
一个具有注脚的文本。1
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式
Gamma公式展示
你可以找到更多关于的信息 LaTeX 数学表达式.
新的甘特图功能,丰富你的文章
Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
UML 图表
可以使用UML图表进行渲染。例如下面产生的一个序列图:
张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五
这将产生一个流程图。:
FLowchart流程图
我们依旧会支持flowchart的流程图:
Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
- 注脚的解释 ↩︎