Mysql 事务处理

来源:互联网 发布:软件代理商名录 编辑:程序博客网 时间:2024/06/07 18:30

1.存储引擎

            mysql 功能可以分为两个部分,外部主要完成与客户端的连接以及对SQL进行事前检查,而内部就是所谓的存储引擎部分,他负责接收外层的数据操作指示,完成实际的数据输入输出以及文件操作工作。工作模式如图所示

       


MySQL提供的引擎种类如下:


其中我们常用的也就是前两种:在这里对各种引擎不赘述,自行百度各种的不同值得注意的是查看引起以及修改引擎的语句:

查看引擎:show create table xxx   可以查看正在使用的引擎

修改引擎:alter table xxx ENGINE = "Innodb/myisam"

2。事务

      事务,我理解的就是两种状态,全部成功和全部失败两种状态。使用事物的时候设计到三个重要的命令,BEGIN,COMMIT ,ROLLBACK

      下面先总结一个简单的例子。来说明事物的作用。

       


     自动提交(这个做了半天实验,如果有不对的地方,请大家多多指正)

    前提为:数据库引擎为INNODB

    自动提交有两种状态,一种是ON 一种是OFF ,

   可以使用语句:select  @@autocommit 来查看当前使用的自动提交模式

    当set_autocommit 处于OFF状态的时候,则用户操作一直处于事务的状态之中,只有遇到commit 的时候才能写入。这个过程可以不加begin ,但是此时rollback 为最初的状态,加上begin的时候rollback 到begin的状态。如果操作之后不执行commit命令,所有的更新内容将不反应的数据库中。

    而当commit处于ON的时候,使用事务必须添加BEGIN 。当rollback 的时候会到事物开始的地方。

 3部分回滚

   部分回滚的示例图如下所示:

   


举个简单的例子来说明:


结果如下:

   

4事务处理的利用范围

一下几条SQL命令,执行后被自动提交,实在事务处理,可以利用的范围之外的。(不支持事务的)

     A drop database  B  drop table  C drop  D alter table 





参考资料:

《mysql 高效编程》 -- 人民邮电出版社

PS:个人认为 这本书写的不太好。需要着重讲的点没有讲或一带而过,不推荐阅读。个人建议仅供参考。





            

0 0
原创粉丝点击