mysql-事务

事务是SQL操作的集合,具有原子性、一致性、隔离性和持久性。MySQL有redo日志、undo日志等确保数据安全。默认每条SQL自动提交,也可手动管理。事务隔离级别包括读未提交、已提交、重复读和序列化。可以通过`SETSESSIONTRANSACTIONISOLATIONLEVEL`修改。数据备份则涉及`mysqldump`工具。
摘要由CSDN通过智能技术生成

1-事务机制(Transaction)

  • 事务:是一个或者多个sql语句组成的整体,要么全部执行成功,要么全部执行失败
  • 事务机制:就是避免写入直接操作文件,利用日志空间来写实现间接写入
  • mysql总共有5种日志:redo日志和undo日志与事务有关
  • 对数据库进行操作---拷贝数据--->undo日志----记录修改------>redo日志-------->同步数据到数据库

2-管理事

  • 默认情况下,mysql执行每条sql语句都会自动开启和提交事务
  • 多条sql就需要我们手动管理事务
  • 手动事务整个过程:
          1. 开启事务:start transaction
          2. sql语句(一条或者多条)
          3. 提交事务commit | 回滚事务rollback

3-事务的特性

  • 原子性:一个事务中要么所有的操作全部成功,要不全部失败,不可能停留在某一个状态。(原子不可分割)
  • 一致性:事务的结果都必须保持一致,不管在任何的给定时间、并发多少事务。(要求并发的时候,并发就是比如大家同时在对数据库进行操作,不会出现歧义,比如大家都在各种转账,A转给B,B转给C,C转给A,无论怎么操作,银行(数据库)的钱的总和不会变多,或者变少)
  • 隔离性:要求事务不受其他并发事务的影响。(比如我对数据库的操作,其他人也在操作,但是就好像就我一个人在操作,别人是看不到我在操作的)
  • 持久性:事务一旦提交,结果是永久的。(如果有突然电脑关机,我们的可以依靠查看日志来完成数据的持久化)

4-事务的四个隔离级别

  • 读取未提交的数据:read uncommitted
  • 读取已提交的数据:read committed
  • 重复读取(mysql默认):repeatable read
  • 序列化:serializable

5-修改事务的级别

  • session:会话,比如你打开一个浏览器的页面就是一个会话
  • 读取其他事务未提交的数据:set session tranction isolation level read uncommitted;

(适合在购票系统,如果你和其他人同时抢购一张票,你看到的时候还有票,但是进行购买的时候,却提醒你没有票了,这样的情况就令人很烦,这时候就可以改变事务的级别,改变后就可以看到其他事务(用户)对将要进行购买,只是停留在支付的阶段,这时你就可以看到票没有了,你就不会去购买了)

  • 读取其他事务提交的数据:set session tranction isolation level read commited;

(比如你在某平台购买了一个东西,价格99,但是你还没有支付,但是再刷新页面,商家把价格改成了110,但是没关系,如果将事务修改为这个,你读取的数据就是商家以前提交的99,不会是现在的)

  • 事务在执行中反复读取数据,得到的结果是一致的,不会受其他事务影响(mysql默认):set session tranction isolation level repeatable read;
  • 序列化,就是让事务逐一执行,只有一个事务结束后,下一个事务才能开始:set session tranction isolation serilalizable;

6-数据导出与备份

  • 数据导出:就是单纯的数据(包含sql文件,文本文件)
  • 数据备份:就是包含了数据文件,日志文件,索引文件...
  • 导出sql文件命令:mysqldump -uroot -p 你的库名 > 你要保存到文件的地方

(mysqldump -uroot -p demo > D:/data/demo.sql)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值