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

移动互联网站建设黄石网站建设黄石

移动互联网站建设,黄石网站建设黄石,微信小程序开发技术,wordpress logo 太小MySQL-事务 1.什么是事务 举例#xff1a;想象炒菜的过程。 洗菜切菜炒菜装盘 我相信缺少任何任何一个步骤#xff0c;都不完美#xff01;#xff01;#xff01;可以将炒菜的过程理解为一个事务#xff0c;是一组操作的集合#xff0c;而MySQL中的事务也是如此。但…MySQL-事务 1.什么是事务 举例想象炒菜的过程。 洗菜切菜炒菜装盘 我相信缺少任何任何一个步骤都不完美可以将炒菜的过程理解为一个事务是一组操作的集合而MySQL中的事务也是如此。但在MySQL中定义了事务的一些特性。只有符合这些特征才能称之为MySQL事务它们保证了数据库在并发环境下的正确性和可靠性。 2.事务的特性 1.1原子性 在MySQL中事务像原子一样不可分割的要么都执成功要么都执行失败。事务中的SQL语句执行错误已经执行的SQL语句必须撤销回滚到事务执行之前的状态。 1.2一致性 指的是事务开始和结束前后数据库的完整性没有被破坏。例如转账前后双方的金额和是不会发生变化的保持一致 1.3持久性 事务一旦提交其执行的结果将持久化到数据库即使系统宕机也能恢复。 1.4.隔离性 表示多个事务可以同时执行互相隔离。 3.事务的分类 保存点保存点Savepoint是事务过程中的一个中间状态它可以在事务执行过程中被创建和命名。保存点允许事务回滚到某一状态。 3.1扁平事务 使用最频繁的事务存在一个隐式的保存点有且仅有这一个隐式保存点在开始事务时隐式创建的保存点。当然我们也可以在事务中自定义保存点。 -- 创建一个保存点 SAVEPOINT save_point_name; -- 删除某个一保存点 release savepoint point_name; -- 回滚到某一个保存点 ROLLBACK TO save_point_name;例如对商品表进行第一次修改设置保存点进行第二次修改回滚到设置的保存点然后提交。 -- 商品表如下 ------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------- | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(32) | NO | | NULL | | | count | int(10) unsigned | YES | | NULL | | -------------------------------------------------------------begin; update product set count 2500 where id 1; savepoint p1; -- 该条数据被回滚修改不生效 update product set count 2000 where id 1; rollback to p1; commit;扁平事务保存点的易失性带有保存点的扁平事务发生系统崩溃故障时保存点会消失一旦保存消失只能恢复到事务最开始的状态。 注意rollback不指定回滚的保存点将默认回滚到隐式保存点。 3.2链事务 链事务的本质是开启多个事务它们是独立提交的且处于同一层级提交一个事务时释放不需要的数据对象。在提交事务和开始下一个事务操作会合并成一个原子操作下一个事务可以看见上一个事务的执行结果。 commit和commit work的区别 complection_type设 set completion_type1; complection_type0commit和commit work是一样的效果提交事务。complection_type1执行commit work/commit后会自动开启一个相同隔离级别的事务。complection_type2commit work/commit等同于commit and release事务提交后断开与服务器的连接并重新开启一个会话。 3.3嵌套事务 嵌套事务本质上也是多个事务嵌套执行由最外层的事务控制内层事务。内层事务也可以嵌套其他事务。可以看做它们是树形的具有父子关系。子事务可以提交也可以回滚回滚不会影响父事务只会影响当前事务但是提交操作不会立即生效需要最后和父事务同时提交。 4.事务的实现 1.redo 主要功能实现事务的持久性。 记录物理级别上的页修改当事务提交时必须先将事务的所有日志写入到redo日志文件进行持久化。 数据库存储数据的位置位于磁盘想要知道磁盘的内容我们需要将其加载到内存在内存中读取和操作数据。数据库对数据进行更改时需要将数据页加载到buffer pool缓存池在buffer pool中更改数据当buffer pool中的数据还没有同步到磁盘就会暂时和磁盘页的内容不一致这些未同步的数据页通常称之为脏页dirty page。如果出现数据库崩溃或者是宕机这些脏页的数据丢失从而失去了持久性。因此数据库需要一种机制来记录对数据的修改。即使数据发生故障也能进行恢复。 redo实现日志持久化的原理事务将这些修改操作写入redo log buffer准备提交事务时。系统会将redo log buffer中的修改操作写入redo log file。 2.undo undo日志通过记录数据的历史版本和撤销操作信息方便数据进行回滚。 undo是逻辑日志当发生回滚时所有的修改都被逻辑取消了。InnoDB存储引擎回滚时它实际上做的是与之前相反的工作例如插入操作Innodb存储引擎会完成一个delete删除操作InnoDB存储引擎会执行一个insert操作update操作Innodb存储引擎会执行一个相反的update操作。 5.事务管理器 InnoDB的事务管理器是InnoDB数据库引擎的核心组件之一它负责协调和管理数据库事务的处理。 在MySQL中事务中对数据的锁定都是由事务管理器来管理的。当一个事务获取了对某一行的锁时该锁将一直保持有效直到事务结束提交或回滚才会被释放。 在事务执行期间如果其他事务尝试获取同一行的锁它将被阻塞直到当前事务释放对该行的锁为止。这样可以确保在一个事务执行期间其他事务无法修改该行从而保持了数据的一致性。 在事务提交或回滚时事务管理器将释放所有该事务所获取的锁。这样其他事务就可以获取这些锁并对数据进行修改。如果事务被回滚那么它对数据的修改将被撤销同时对数据的锁定也将被释放。
http://www.w-s-a.com/news/437402/

相关文章:

  • 在门户网站做产品seo怎么样做网站管理员
  • 动画做视频在线观看网站字体安装+wordpress
  • vs2015网站开发做珠宝建个网站推广怎么样
  • 大桥外语官方网站星做宝贝佛山微信网站开发
  • 河南建设网站公司哪家好怎样做一家网站
  • 安阳市哪里做网站建设网站流量怎么赚钱
  • 网站开发与优化课程总结软件班级网站建设
  • py网站开发wordpress 公司网站 模板 下载
  • 长春城乡建设部网站首页英文网站推广服务
  • wordpress实训上海整站seo
  • 福建自己建设网站义乌市企推网络科技有限公司
  • 宁波优化网站哪家好织梦网站地图怎么做
  • 怎么在自己的网站加关键词烟台企业网站建设
  • 中山网站建设界面设计职业技能等级证书
  • 做网站首页多少钱免费版企业邮箱注册
  • ppp模式在网站建设的南昌专业做网站公司哪家好
  • 泰安网站建设制作电话号码百度sem竞价托管公司
  • 苏网站建设网页设计和网页美工
  • 跨境电商平台网站广州地铁站路线图
  • 吉林省交通建设集团有限公司网站企业网站推广的策略有哪些
  • 网站内链怎么做更好郑州网站建设哪家便宜
  • 建设大型购物网站运城哪里做网站
  • php企业网站通讯录管理系统做网站在线支付系统多少钱?
  • 怎么区分用vs和dw做的网站贝贝网网站开发背景
  • 无锡网站建设制作建设信息网查询
  • 彩票系统网站开发建设人力资源网官网
  • 有专门下载地图做方案的网站吗网站建设平台计划书
  • 网站闭站保护10个著名摄影网站
  • 安徽省建设工程信息网官网首页网站关键词排名优化工具
  • 深圳网站建设 百业网站专题教程