当前位置: 首页 > news >正文

如何做网站的书籍在什么网站上做精帖

如何做网站的书籍,在什么网站上做精帖,咨询手机网站建设平台,wordpress oa插件文章目录#x1f525;分布式事务处理_认识本地事务#x1f525;关系型数据库事务基础_并发事务带来的问题#x1f525;关系型数据库事务基础_MySQL事务隔离级别#x1f525;MySQL事务隔离级别_模拟异常发生之脏读#x1f525;MySQL事务隔离级别_模拟异常发生之不可重复读分布式事务处理_认识本地事务关系型数据库事务基础_并发事务带来的问题关系型数据库事务基础_MySQL事务隔离级别MySQL事务隔离级别_模拟异常发生之脏读MySQL事务隔离级别_模拟异常发生之不可重复读MySQL事务隔离级别_模拟异常发生之幻读分布式事务处理_认识本地事务 什么是事务 事务就是针对数据库的一组操作它可以由一条或多条SQL语句组成同一个事务的操作具备同步的特点事务中的语句要么都执行要么都不执行。 举个例子 你去小卖铺买东西一手交钱一手交货就是一个事务的例子交钱和交货必须全部成功事务才算成功任一个活动失败事务将撤销所有已成功的活动。 什么是本地事物 在计算机系统中更多的是通过关系型数据库来控制事务这是利用数据库本身的事务特性来实现的因此叫数据库事务由于应用主要靠关系数据库来控制事务而数据库通常和应用在同一个服务器所以基于关系型数据库的事务又被称为本地事务。 注 ⭐Business∶我们具体的业务代码 ⭐Storage∶ 库存业务代码;扣库存 ⭐Order∶订单业务代码;保存订单 ⭐Account∶账号业务代码;减账户余额 数据库事务的四大特性ACID 数据库事务在实现时会将一次事务涉及的所有操作全部纳入到一个不可分割的执行单元该执行单元中的所有操作要么都成功要么都失败只要其中任一操作执行失败都将导致整个事务的回滚。 关系型数据库事务基础_并发事务带来的问题 并发事务带来的问题 数据库一般会并发执行多个事务而多个事务可能会并发地对相同的数据进行增加、删除、修改和查询操作进而导致并发事务问题。 脏写 当两个或两个以上的事务选择数据库中的同一行数据并基于最初选定的值更新该行数据时因为每个事务之间都无法感知彼此的存在所以会出现最后的更新操作覆盖之前由其他事务完成的更新操作的情况。也就是说对于同一行数据一个事务对该行数据的更新操作覆盖了其他事务对该行数据的更新操作。 解决方案 让每个事物按照顺序串行的方式执行按照一定的顺序一次进行写操作。 脏读 一个事务正在对数据库中的一条记录进行修改操作在这个事务完成并提交之前当有另一个事务来读取正在修改的这条数据记录时如果没有对这两个事务进行控制则第二个事务就会读取到没有被提交的脏数据并根据这些脏数据做进一步的处理此时就会产生未提交的数据依赖关系。我们通常把这种现象称为脏读也就是一个事务读取了另一个事务未提交的数据。 解决方案 先写后读也就是写完之后再读。 不可重复读 一个事务读取了某些数据在一段时间后这个事务再次读取之前读过的数据此时发现读取的数据发生了变化或者其中的某些记录已经被删除这种现象就叫作不可重复读。 解决方案 先读后写也就是读完之后再写。 幻读 一个事务按照相同的查询条件重新读取之前读过的数据此时发现其他事务插入了满足当前事务查询条件的新数据这种现象叫作幻读。 解决方案 先读后写也就是读完之后再写。 关系型数据库事务基础_MySQL事务隔离级别 MySQL中的InnoDB储存引擎提供SQL标准所描述的4种事务隔离级别分别为读未提交 (Read Uncommitted)、读已提交(ReadCommitted)、可重复读(Repeatable Read)和串行化(Serializable)。 ⭐读未提交Read Uncommitted事务可以读取未提交的数据也称作脏读Dirty Read。一般很少使用。 ⭐读已提交Read Committed是大都是 DBMS 如Oracle, SQLServer默认事务隔离。执行两次同意的查询却有不同的结果也叫不可重复读。 ⭐可重复读Repeable Read是 MySQL 默认事务隔离级别。能确保同一事务多次读取同一数据的结果是一致的。可以解决脏读的问题但理论上无法解决幻读Phantom Read的问题。 ⭐可串行化Serializable是最高的隔离级别。强制事务串行执行会在读取的每一行数据上加锁这样虽然能避免幻读的问题但也可能导致大量的超时和锁争用的问题。很少会应用到这种级别只有在非常需要确保数据的一致性且可以接受没有并发的应用场景下才会考虑。 MySQL事务隔离级别_模拟异常发生之脏读 前置知识 # 查看 MySQL 版本 select version(); # 开启事务 start transaction; # 提交事务 commit; # 回滚事务 rollback;查看连接的客户端详情 每个 MySQL 命令行窗口就是一个 MySQL 客户端每个客户端都可以单独设置不同的事务隔离级别这也是演示 MySQL 并发事务的基础。 show processlist;新建数据库和测试数据 -- 创建数据库 drop database if exists testdb; create database testdb; use testdb; -- 创建表 create table userinfo(id int primary key auto_increment,name varchar(250) not null,balance decimal(10,2) not null default 0 ); -- 插入测试数据 insert into userinfo(id,name,balance) values(1,Java,100),(2,MySQL,200);查询事务的隔离级别 select global.transaction_isolation,transaction_is olation;设置客户端的事务隔离级别 通过以下 SQL 可以设置当前客户端的事务隔离级别 set session transaction isolation level 事务隔离 级别;事务隔离级别的值有 4 个 ⭐READ UNCOMMITTED读未提交 ⭐READ COMMITTED读已提交 ⭐REPEATABLE READ可重复读 ⭐SERIALIZABLE串行化 脏读 一个事务读到另外一个事务还没有提交的数据称之为脏读。脏读演示的执行流程如下 脏读演示步骤1 设置窗口 2 的事务隔离级别为读未提交设置命令如下 set session transaction isolation level read uncommitted;注意 事务隔离级别读未提交存在脏读的问题。 脏读演示步骤2 窗口2开启事务查询用户表如下图所示 start transaction; select * from userinfo;注意: 从上述结果可以看出在窗口 2 中读取到了窗口 1 中事务未提交的数据这就是脏读。 脏读演示步骤3 在窗口 1 中开启一个事务并给 Java 账户加 50 元但不提交事务执行的 SQL 如下 mysql start transaction; Query OK, 0 rows affected (0.00 sec) mysql update userinfo set balancebalance50 where namejava; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0脏读演示步骤4 在窗口 2 中再次查询用户列表执行结果如下 注意 从上述结果可以看出在窗口 2 中读取到了窗口 1 中事务未提交的数据这就是脏读。 MySQL事务隔离级别_模拟异常发生之不可重复读 不可重复读是指一个事务先后执行同一条 SQL但两次读取到的数据不同就是不可重复读。不可重复读演示的执行流程如下 不可重复读演示步骤1 设置窗口 2 的事务隔离级别为读已提交 set session transaction isolation level read committed;注意 读已提交可以解决脏读的问题但存在不可重复读的问题。 不可重复读演示步骤2 在窗口 2 中开启事务并查询用户表执行结果如下 不可重复读演示步骤3 在窗口 1 中开启事务并给 Java 用户添加 20 元但不提交事务再观察窗口 2 中有没有脏读的问题具体执行结果如下图所示 从上述结果可以看出当把窗口的事务隔离级别设置为读已提交已经不存在脏读问题了。接下来在窗口 1 中提交事务执行结果如下图所示 不可重复读演示步骤4 切换到窗口 2 中再次查询用户列表执行结果如下 不可重复读和脏读的区别: 脏读可以读到其他事务中未提交的数据而不可重复读是读取到了其他事务已经提交的数据但前后两次读取的结果不同。 MySQL事务隔离级别_模拟异常发生之幻读 幻读名如其文它就像发生了某种幻觉一样在一个事务中明明没有查到主键为 X 的数据但主键为 X 的数据就是插入不进去就像某种幻觉一样。幻读演示的执行流程如下 幻读演示步骤1 在窗口1和窗口2修改事务隔离级别为可重复读。 set session transaction isolation level repeatable read;幻读演示步骤2 设置窗口 2 为可重复读可重复有幻读的问题查询编号为 3 的用户具体执行 SQL 如下 start transaction; select * from userinfo where id3;注意 从上述结果可以看出查询的结果中 id3 的数据为空。 幻读演示步骤3 开启窗口 1 的事务插入用户编号为 3 的数据然后成功提交事务执行 SQL 如下 start transaction; insert into userinfo(id,name,balance) values(3,Spring,100); commit;幻读演示步骤4 在窗口 2 中插入用户编号为 3 的数据执行 SQL 如下 insert into userinfo(id,name,balance) values(3,Spring,100);注意 添加用户数据失败提示表中已经存在了编号为 3 的数据且此字段为主键不能添加多个。 幻读演示步骤5 在窗口 2 中重新执行查询 select * from userinfo where id3;注意 在此事务中查询明明没有编号为 3 的用户但插入的时候却却提示已经存在了这就是幻读。 不可重复读和幻读的区别 二者描述的则重点不同不可重复读描述的侧重点是修改操作而幻读描述的侧重点是添加和删除操作。
http://www.tj-hxxt.cn/news/133264.html

相关文章:

  • 美食网站开发的目标北京市住房与建设厅官方网站
  • 诸城公司做网站关于旅游网站建设的方案
  • 科技网站建设总结北京现在可以自由出入吗
  • 绿色学校网站模板直接修改网页源码并执行
  • 新乡电商网站建设国家电网公司人力资源招聘平台
  • 建设环境工程技术中心网站免费管理软件开发平台
  • 网站关键词更换了河北网站建设推广
  • 上海知名网站推广牛仔裤网站设计
  • 合肥城乡建设局官网qq排名优化网站
  • 秀山网站建设手机网站制作代理商
  • 制作闹钟网站wordpress做门户怎么样
  • asp.net网站恢复做淘客网站多少钱
  • 投票网站开发后盾网原创实战网站建设教程1-15
  • 定制开发网站建行信用卡网站
  • 怎么看别人网站是哪里做的个人网站可以做资讯吗?
  • 网站源码网址修改如何网站做外贸生意
  • 怎么做网站里的资讯产品设计师网站
  • 做网站的公司有哪些安徽省建设工程管理平台
  • jQuery网站建设中倒计时代码电力行业企业网站建设
  • 上海营销型企业网站html所有标签及其属性汇总
  • 烟台网站seo服务装潢设计学校有哪些
  • 网站建设这个职业是什么软件开发需求分析常用的工具
  • 建立网站平台需要多少钱生物制药公司网站模板
  • 室内设计公司理念seo推广 课程
  • o2o商超网站建设河北邯郸天气预报
  • 建设网站宝安区wordpress主题功能
  • 网站用ai做还是ps深圳做网站服务商
  • 济南哪个网站建设最好一个网站怎么做软件好用
  • 临沂网站域名在线做动漫图片视频在线观看网站
  • 唯品会 一家专门做特卖的网站抚顺seo