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

沈阳网站开发简维江西建设网官方网站

沈阳网站开发简维,江西建设网官方网站,山西互联网公司ui设计师招聘网,一流的扬中网站建设目录 1.事务简介 2.事务的操作 2.1 实验需要用到的数据 2.2 完成转账操作 修改事务执行方式 手动开启事务的方式 3.事务的四大特性 4.并发事务问题 5.事务隔离级别 5.1 事务隔离级别分类 5.2 查看事务隔离级别 5.3 设置事务隔离级别 1.事务简介 事务是一组操作的集合…目录 1.事务简介 2.事务的操作 2.1 实验需要用到的数据 2.2 完成转账操作 修改事务执行方式 手动开启事务的方式 3.事务的四大特性 4.并发事务问题 5.事务隔离级别 5.1 事务隔离级别分类 5.2 查看事务隔离级别 5.3 设置事务隔离级别 1.事务简介 事务是一组操作的集合它是一个不可分割的工作单位事务会把所有的操作作为一个整体一起向系统提交或者撤销操作请求即这些操作要么同时成功要么同时失败。其主要作用就是为了保证数据的统一性和完整性。 最典型的案例当处理银行账户的转账操作时可以使用事务来确保数据的一致性和完整性。假设有两个账户账户A和账户B我们想要从账户A向账户B转移一定金额。这时候的增加B账户的金额和减少A账户的金额就必须要同时成功否则就会出现意外情况。 总结当我们需要同时执行好几个sql语句并且必须要确保所有的sql语句都运行成功这时候才会修改数据库中的数据否则当初临时修改的数据会执行回滚操作将修改的数据恢复回原来的数据。 2.事务的操作 2.1 实验需要用到的数据 创建一个账户表并且插入需要用到的数据 create table account(id int auto_increment primary key ,name varchar(10),money int ) comment 账户表;insert into account (id, name, money) values (null,zs,2000),(null,ls,2000); 2.2 完成转账操作 转账执行流程 查询被转账的账户余额-----被转账用户余额减少------收入用户余额增加 没有采用事务时的执行基本执行流程 # 查询用户余额 select * from account where name zs; # 将 zs 的余额减少1000 update account set money money - 1000 where name zs; # 将 ls 的余额增加1000 update account set money money 1000 where name ls; 执行结果 现在这个执行结果是正确的 现在假设出现了异常情况 # 查询用户余额 select * from account where name zs; # 将 zs 的余额减少1000 update account set money money - 1000 where name zs; 出现错误 #语法错误 # 将 ls 的余额增加1000 update account set money money 1000 where name ls;这三句sql出现了明显的语法错误第三句sql是无法执行的因为前面已经出现了报错 这时候执行结果就会出现钱不见的问题此时就需要结合事务来完成这个转账功能。 修改事务执行方式 mysql语句中每一句sql语句都是一个独立的事务且它们都是自动执行的 此时我们可以手动的关闭事务自动提交改为手动提交 select autocommit; # 查询提交方式0为手动1为自动 set autocommit 0; # 修改提交方式为手动这时候修改了事务提交的方式此时在执行对应的sql语句就需要手动提交才可以修改数据 可以看到在我们执行完上面的三句sql后数据并没有修改 手动提交事务 commit; 执行完这条手动提交之后数据库的数据就发生了变化 假如事务出现了异常就再手动回滚数据 rollback; 手动开启事务的方式 # 开启事务 start transaction ; 其实现方式和修改事务的执行方式是一致的 执行完sql后数据不会发生改变需要手动的提交事务或者出现异常回滚事务 执行语句也是一样 commit; # 提交事务rollback; # 回滚事务注意这里的提交以及回滚在开启的一个事务中只有一个能执行假如已经提交了事务代表此事务已经结束了就不能在执行回滚事务了但上面的修改事务的执行方式是可以多次执行的。 3.事务的四大特性 原子性Atomicity事务是原子的意味着它要么完全执行要么完全回滚。如果事务中的任何一部分操作失败整个事务都将被回滚不会留下部分更改。 一致性Consistency事务开始前数据库必须处于一致状态事务结束后数据库也必须保持一致状态。这意味着事务应该满足预定义的约束如唯一性约束、外键关系等。 隔离性Isolation多个事务可以同时执行但它们应该被隔离以防止互相干扰。数据库系统通常提供了不同的隔离级别例如读未提交、读已提交、可重复读和串行化以控制事务之间的可见性和互动。 持久性Durability一旦事务提交对数据库的更改应该永久保存即使发生系统崩溃或故障。 4.并发事务问题 脏读在某些隔离级别下一个事务可能会读取到另一个事务尚未提交的未确认数据这被称为脏读。如果读取的数据最终被回滚读取的数据就会变得无效。 不可重复读在某些隔离级别下一个事务可能会在同一个事务中的两次读取之间看到不同的数据这被称为不可重复读。这可能是由于其他事务的修改导致的。 幻读在某些隔离级别下一个事务可能会在同一个事务中的两次查询之间看到不同数量的行这被称为幻读。这是由于其他事务插入或删除行导致的。 5.事务隔离级别 5.1 事务隔离级别分类 读未提交Read Uncommitted最低级别允许一个事务读取其他事务尚未提交的数据。这可能导致脏读、不可重复读和幻读等问题。 读已提交Read Committed这是大多数数据库系统的默认隔离级别。在这个级别下一个事务只能读取已经提交的数据解决了脏读。但仍然可能发生不可重复读和幻读。 可重复读Repeatable Read 默认在这个隔离级别下一个事务在开始时会创建一个一致性的快照然后在整个事务期间使用这个快照。这可以防止不可重复读和脏读但仍然可能发生幻读。MySQL的InnoDB存储引擎默认使用这个隔离级别。 串行化Serializable最高级别确保了最高程度的数据一致性。在这个级别下事务之间彻底隔离不会发生脏读、不可重复读或幻读。但是它通常会导致性能下降因为它需要更多的锁定和资源。 5.2 查看事务隔离级别 select transaction_isolation; 当前是默认的 5.3 设置事务隔离级别 set session transaction isolation level 隔离级别;
http://www.zqtcl.cn/news/394793/

相关文章:

  • 郑州 手机网站制作广州网站优化地址
  • 国外效果图网站2022百度seo优化工具
  • 品牌网站建设 磐石网络官方网站网络科技公司 网站建设
  • 厦门启明星网站建设学校网站模板 中文
  • 高端手机网站平台深圳网上申请个人营业执照
  • 沈阳怎么做网站西亚网站建设科技
  • 做外贸免费的网站有哪些专业简历制作
  • 园林景观设计网站推荐国内wordpress主题
  • 一流的免费网站建设摄影网站源码
  • 深圳高端网站设计公司怎样开发手机网站建设
  • 做网站需要用c语言吗新闻热点
  • 做网站需要交维护费么网站建设详细合同范本
  • 网站运营需要做什么静态网站作品
  • 如何做旅游休闲网站苍南做网站
  • wordpress jp theme关键词排名优化公司成都
  • Soho外贸常用网站wordpress下不了插件吗
  • 企业网站建设小技巧有哪些WordPress网站小程序
  • 公司招聘网站续费申请seo编辑是干什么的
  • 58同城泉州网站建设人工投票平台app
  • dede 网站地图 插件网站引导页flash
  • 聊城做网站的公司渠道网站总体结构
  • 北京比较大的网站建设公司wap网站引导页特效
  • 做关于植物的网站即墨网站设计
  • 怎么提升网站收录商品网页制作
  • 做网站建设的平台wordpress5.0发布
  • 站长工具a级查网站域名
  • 免费做网站电话手机开发者模式打开有什么影响
  • 上海免费网站建站模板毕节做网站优化
  • 影响网站建设的关键点手机网站制作app
  • 商务网站建设的流程深圳模板网站建设案例