1、事务
- 事务指逻辑上的一组操作,组成这组操作的单元要么全部成功,要么全部失败。
- 作用:保证全部成功或者全部失败
例如转账:A和B都有1000块钱,现在A给B转100元
- 操作成功:A有900,B有1100;
- 操作失败:A有1000,B有1000;
- 不可能发生:A有900,B有1000;
1.1、MYSQL进行事务管理
1.1.1、自动事务(mysql默认)
一条SQl语句就是一条事务;
1.1.2、手动开启一个事务
方式一: 手动开启事务的方式
- start transaction;开启事务
- commit;提交
- rollback;回滚
- 方式二: 设置MYSQL中的自动提交的参数
查看MYSQL中事务是否自动提交
设置自动提交的参数为OFFshow variables like '%commit%';
set autocommit = 0;-- 0:OFF 1:ON
1.1.3 、事务回滚点
在某些成功的操作完成之后,后续的操作有可能成功有可能失败,但是不管成功还是失败,前面操作都已经成功,可以在当前成功的位置设置一个回滚点。可以供后续失败操作返回到该位置,而不是返回所有操作,这个点称之为回滚点。
1.2、事务特性和隔离级别
1.2.1、事务的特性
- 原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
eg: 张三 1000; 李四 1000; 张三 给 李四转100 要么都发生张三 900; 李四 1100; 要么都不发生张三 1000; 李四 1000;
- 一致性(Consistency):事务前后数据的完整性必须保持一致.
eg: zs 1000; ls 1000; 一共2000 zs 给 ls转100 要么都发生zs 900; ls 1100; 一共2000 要么都不发生zs 1000; ls 1000; 一共2000
- 持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
eg: zs 1000 给小红 转520, 张三 提交了
- 隔离性(Isolation):事务的隔离性是指多个用户并发操作数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。 简单来说: 事务之间互不干扰。
1.2.1、事务的隔离级别
如果不考虑隔离性,会引发下面的问题:
事务在操作时的理想状态: 所有的事务之间保持隔离,互不影响。因为并发操作,多个用户同时访问同一个数据。可能引发并发访问的问题
事务的隔离级别:
级别 | 名字 | 隔离级别 | 脏读 | 不可重复读 | 幻读 | 数据库默认隔离级别 |
---|---|---|---|---|---|---|
1 | 读未提交 | read uncommitted | 是 | 是 | 是 | |
2 | 读已提交 | read committed | 否 | 是 | 是 | Oracle |
3 | 可重复读 | repeatable read | 否 | 否 | 是 | MySQL |
4 | 串行化 | serializable | 否 | 否 | 否 |
隔离级别越高,性能(效率)越差,安全性越高。
设置事务隔离级别
- 设置事务隔离级别
set session transaction isolation level 隔离级别;
2.查看数据库的隔离级别
select @@tx_isolation;
2、数据的备份和还原
在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。
2.1命令行方式
- 备份格式
mysqldump -u用户名 -p密码 数据库 > 文件的路径
- 还原格式
SOURCE 导入文件的路径;
注意:还原的时候需要先登录MySQL,并选中对应的数据库