成都高端网站建设哪家好,哪里教做网站的,wordpress paypal收款,创意网红蛋糕文章目录 CURD加控制什么是事物为什么会出现事务事务的版本支持事务的提交方式 CURD加控制
模拟一个买票系统的场景如下所示#xff1a; MySQL注定会被多个客户端进行访问的#xff0c;这个是肯定的#xff0c;存储的都是数据#xff0c;数据在上层可能有一个线程在用 MySQL注定会被多个客户端进行访问的这个是肯定的存储的都是数据数据在上层可能有一个线程在用另一个线程也想从数据库中获取还有其他的客户端也想获取数据数据被所有人共享所以mysqld服务会有多个请求过来让我们进行数据的CURD操作MySQL内部是采用多线程的方式实现数据的存储的相关操作所以会有对数据的并发访问的场景。所以关系型数据库提供了事务MySQL一般设置的更完善一些。
实际场景 在一个卖票系统中包含了票的idname,以及数量nums,客户端A检查还有一张票时把票卖掉还没执行更新数据库时客户端B检查了票数发现大于0于是又卖了一次票然后A将票数更新会数据库这是同一张票被卖了两次,这是不符合正常的业务逻辑的。 CURD需要满足以下属性解决上面所出现的问题 买票的过程得是原子的、买票应该不能互相影响、买完票应该要永久有效、买前与买后都要是确定的状态 什么是事物
事务就是一组DML语句组成这些语句在逻辑上存在相关性这一组DML语句要么全部成功要么全部失败是一个整体。MySQL提供一种机制保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的
事务就是要做的或所做的事情主要用于处理操作量大复杂度高的数据。比如当你毕业了对于教务系统后台 MySQL 中就不需要你的数据了那么要删除你的基本信息(如姓名电话籍贯等等这些)的同时也会删除和你有关的其他信息比如各科的成绩在校表现甚至你在论坛发过的文章等。这样就需要多条 MySQL 语句构成那么所有这些操作合起来就构成了一个事务。
对于一个MuSQL数据库可不止一个事务在运行同一时刻甚至会有大量的请求被包装成事务在向MySQL服务器发起事务处理请求时而每条事务至少有一条SQL最后很多条SQL这样如果大家都访问同样的表数据不加保护的情况下就会出现问题。甚至可能因为事务由多条SQL构成那么也会存在执行到一半出错或者不想在执行的情况所以已经执行的应该这样做
一个完整的事务绝对不是简单的SQL集合还要满足如下四个属性 原子性一个事务中的苏我又操作要么全部完成要么全部不完成不会结束在中间某个环节。事务在执行过程中发生错误会被回滚Rollback到事务开始 前的状态就像这个事务从来没有执行过一样。 一致性在事务开始之前和结束之后数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 隔离性数据库允许多个并发事务同时对数据进行读写和修改的能力隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别包括读未提交Read uncommitted,读提交、可重复度repeatable read和串行化Serializable 持久性事务处理结束后对数据的修改就是永久的即便系统故障也不会丢失。 上面四个属性可以简称为 ACID 。 原子性Atomicity或称不可分割性 一致性Consistency 隔离性Isolation又称独立性 持久性Durability。
为什么会出现事务 事务被MySQL编写者设计出来本质是为了当应用程序访问数据库的时候事务能够简化我们的编程模型不需要我们去考虑各种各样的潜在错误和并发问题当我们使用事务时要么提交要么回滚我们不会再去考虑网络异常、服务器宕机了同时更改一个数据。 所以事务本质上是为了应用层服务的而不是伴随着数据库系统天生就有的。 我们后面把MySQL中的一行信息称为一行记录。
事务的版本支持
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务 MyISAM 不支持
我们来查看一下查看命令如下
show engines \G可以清楚地看到MyISAM是不支持事务的。
事务的提交方式
事务的提交方式常见的有两种自动提交、手动提交
查看事务提交方式:
show variables like autocommit;用 SET 来改变 MySQL 的自动提交模式:
-- 关闭自动提交
set autocommit0;-- 打开自动提交
set autocommit1;mysql就是服务端进程本质是网络服务底层采用tcp协议默认端口是3306 对于端口号可以把mysql的端口号改一下不要特别常见的端口号可以前往/etc/my.cnf文件中进行修改。