设为首页 收藏本站
查看: 958|回复: 0

[经验分享] Mysql 事务的基本使用与基本原理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-14 11:11:23 | 显示全部楼层 |阅读模式
事务(transaction):

    一组SQL的集合,要不集体都执行成功,要不集体都失败,指的是,应该将生成的影响退回到该级sql执行之前!

    往往一个业务逻辑,是由多条语句组合完成!


语法:
    开启事务:start transaction 可以简写成 begin

              记录下来之后所执行的sql !(操作与结果)


    提交:commit

          如果所有的sql都执行成功,则提交。将sql的执行结果持久化到数据表内


    回滚:rollback

          如果存在失败的sql,则需要回滚。将sql的执行结果,退回到事务开始之前


    无论回滚还是提交,都会关闭该事务!(需要再次开启,才能使用)

    事务,只针对当前的连接生效!


测试:
    使用一个链接A,开启事务后,执行一条update语句:

    结果成功,数据已经变成修改之后!


wKioL1ZqXZeS7557AAB0MTu8YHA204.jpg

此时,没有提交,通过其他的连接B,查看数据,是没有被更改的:

wKiom1ZqXqShdy82AAA7snQ4SgE895.jpg

如果此时选择链接A提交:commit

wKiom1ZqX4bDMhLOAAASujc8hJ4828.jpg


在其他的链接B,查看时,数据也发生了变化:

wKiom1ZqX7qRrYxaAACK2yapTa8925.jpg

回滚:一旦回滚,则事务内的所有的sql影响都会被撤销

wKiom1ZqYLji6zz7AAB7-nA9c0I469.jpg
rollback;

wKiom1ZqYInyWH4WAABc3za_ze8048.jpg

事务的基本原理:
   

    提交,就会将结果持久化,不提交则不会持久化!

    如果不开启事务,执行一条sql,马上会持久化数据!

    可见,普通的执行,是立即提交!

    因为,默认的mysql对sql语句的执行是自动提交的。

    开启事务其实就是关闭了自动提交的功能!改成了commit 执行手动提交


    因此,可以通过简单的对是否自动提交加以设置,可以完成开启事务的目的!

    自动提交的特征是保存在服务的一个叫做 autocommit 的变量内!

    使用 set 变量名=变量值 的形式就可以完成修改:set autocommit=0;


注意:事务类似于外键约束,只对innodb引擎支持!


事务的特点:ACID

wKioL1ZqZc7whPygAABUmodAjO8755.jpg


   


原子性:事务是不可分割的。

一致性:保证数据在事务的执行周期内是一致的
隔离性:多个事务之间的干扰关系!隔离级别!
持久性:事务一旦被提交就不可能再被回滚


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-150955-1-1.html 上篇帖子: mysql性能参数查询 下篇帖子: MariaDB基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表