网站建设咨询中心,池州专业网站建设,破解wordpress主题教程,移动端4060相当于桌面端什么显卡个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 目录
前言#xff1a;
是什么#xff1f;
为什么?
怎么做#xff1f; 前言#xff1a;
本篇文章将会说明什么是事务#xff0c;为什么会出现事务#xff1f;事务是怎么做的#xff1f;
是什么#xff1f;
我…个人主页Lei宝啊
愿所有美好如期而遇 目录
前言
是什么
为什么?
怎么做 前言
本篇文章将会说明什么是事务为什么会出现事务事务是怎么做的
是什么
我们以买火车票为例
首先我们可以肯定的是买票这个动作不止一个人在做也就是说是许多人并行的不是串行的。
那么假设我们对买火车票数据库的CURD不加控制
那么假设就剩一张票有两个客户同时买票客户端A买的时候发现还有一张客户端B也发现还有一张那么当他们买完之后数据传回数据库就会发现一张票被卖了两次。
问题数据库的CURD要满足什么属性才能解决上述问题
买票互相之间不能影响买的票不重复且有效买前买后状态确定要么没买上要么就买上了 接下来解释什么是事务 事务就是一组SQL语句这一组语句要么全部执行成功要么全部失败他们是一个整体而且MySQL保证了我们能够达到这样的效果。
并且事务规定不同客户端看到的数据不同 因为数据库不止一个事务在访问而有可能多人同时访问一个表数据我要改他要查她要删对表数据不加保护的话就一定会出问题。
共享表单几十人同时填写一个表单一个人在填写自己的那一列时别人是无法填写的但是他又可以实时看到别人填写的东西最重要的是当你填写后别人可以删改你填写的共享表单的数据谁也可以修改那最后一定会出问题。
所以买火车票的数据库他一定有保护措施并不会互相影响被互相看到互相删改。
那么他一定满足以下四个属性
原子性
一个事务要么就全部完成要么就全部不完成在事务执行过程中出现错误时会回滚到事务开始前的状态就像没执行过一样。
隔离性
数据库允许多个并发事务同时对数据修改和读写隔离性可以防止多个事务并发执行时由于交叉执行而导致的数据不一致。
事务隔离分为四个级别
读未提交 read uncommitted读提交 read committed可重复读repeatable串行化
持久性
事务处理结束后对数据的修改就是永久的即使系统故障也不会丢失。
一致性
由前三个属性保证要求在事务前后数据库的完整性不能受到破坏即所有插入的数据都符合我们预设的条件。
为什么?
事务被MySQL编写者设计出来是为了简化我们编程即不需要我们去考虑各种各样潜在的错误和并发问题即要么我们操作成功要么回滚不用去考虑网络异常等问题就很方便因此事务不是天生就有的本质是为了上层应用而诞生的。
另外MySQL中只有innodb引擎支持事务myisam是不支持的。transaction表示事务 怎么做
手动提交自动提交 查看事务提交方式 show variables lile autocommit 用set来改变MySQL的自动提交方式 set autocommit 0; set autocommit 1; 下节我们将使用一个简单银行用户表来进行事务的手动操作对比自动和手动操作对比不同隔离级别。