mysql参数之autocommit的详解

autocommit是一个改变事务提交方式参数,设置为1时,所有改变变的立即生效,也就是说为1时,语句执行完后,事务自动提交。如果设置为0时,需要通过commit或者rollback进行提交或者回滚事务。 纠正一种说法就是,set autocommit = 0时,会自动开启一个事务,准确来说是set autocommit = 0时下一个语句会自动开启一个事务。 set autocommit = 0与start transaction的区别: 前者下改变事务提交方式,是自动提交还是非自动提交,设置时不会导致前面的事务隐性提交; 后者是立即开启一个事务,并隐性提交前面的事务

set autocommit = 1 与 commit 的区别 两者都可以提交前面的事务,但在5.0、5.1的版本中会不一样,具体可以看下bug#54462

另外比较重要的点需要注意: python使用MySQLdb连接mysql数据库时,autocommit默认会设置成OFF的,每个sql进来后,都需要主动commit来提交事务。代码中设置成ON,如果需要开一个事务,通过start transaction方式来开启。

举个例子:

张三给李四转账500元。那么在数据库中应该是以下操作:

1,先查询张三的账户余额是否足够
2,张三的账户上减去500元
3,李四的账户上加上500元

以上三个步骤就可以放在一个事务中执行提交,要么全部执行要么全部不执行,如果一切都OK就commit提交永久性更改数据;如果出错则rollback回滚到更改前的状态。利用事务处理就不会出现张三的钱少了李四的账户却没有增加500元或者张三的钱没有减去李四的账户却加了500元。

MySQL默认的存储引擎是MyISAM,MyISAM存储引擎不支持事务处理,所以改变autocommit没有什么作用。但不会报错,所以要使用事务处理的童鞋一定要确定你所操作的表示支持事务处理的,如InnoDB。如果不知道表的存储引擎可以通过查看建表语句查看建表的时候有没有指定事务类型的存储引擎,如果没有指定存储引擎默认则是MyISAM不支持事务的存储引擎。
当然,事务处理是为了保障表数据原子性、一致性、隔离性、持久性。这些都是要消耗系统资源的,要谨慎选择。

时间: 2024-10-30 10:01:39

mysql参数之autocommit的详解的相关文章

MySQL binlog 远程备份方法详解_Mysql

以前备份binlog时,都是先在本地进行备份压缩,然后发送到远程服务器中.但是这其中还是有一定风险的,因为日志的备份都是周期性的,如果在某个周期中,服务器宕机了,硬盘损坏了,就可能导致这段时间的binlog就丢失了. 而且,以前用脚本对远程服务器进行备份的方式,有个缺点:无法对MySQL服务器当前正在写的二进制日志文件进行备份.所以,只能等到MySQL服务器全部写完才能进行备份.而写完一个binlog的时间并不固定,这就导致备份周期的不确定. 从MySQL5.6开始,mysqlbinlog支持将

mysql 清除relay-log文件方法详解

mysql 清除relay-log文件方法详解 今天在本机的mysql数据目录下发现了许多类似hostname-relay-bin.0000*的文件,该文件一般是在mysql slave实例上存在.主要用途是记录主从同步的信息,正常情况下会自动删除的. 本机未配置过master.slave,对于其来源还真不太清楚.既然是用在slave上的,那就可以放心的删除.删除master实例上的日志文件用reset master,对于slave实例就使用命令:  代码如下 复制代码 reset slave

jQuery中通过ajax调用webservice传递数组参数的问题实例详解_jquery

下面通过实例给大家说明比较直观些,更方便大家了解. 本人的项目中通过jquery.ajax调用webservice. 客户端代码如下: $.ajax({ url: "test/xxx.asmx", type: 'POST', dataType: 'xml', timeout: , data: { name: "zhangsan", tags: ["aa", "bb", "cc"] }, error: fun

js 传入参数:window & undefined详解

js 传入参数:window & undefined详解 最常见的闭包 (Closure) 范式大家都很熟悉了: (function() { // ... })(); 很简单,大家都在用.但是,我们需要了解更多. 首先,闭包是一个匿名函数 (Anonymous function), 即是 (function() {}) 这部分.之所以要给 function 添加括弧是为了让它形成一个表达式 (expression), 有了表达式,并且确定它的类型是个函数 (Function 实例), 就可以直接

PHP和MYSQL实现分页导航思路详解

预期效果 思路 通过SQL语句 SELECT * FROM table LIMIT start end 来从MySql数据库 步骤 传入页码p: 根据页码获取数据php->mysql 显示数据+分页条 源码 github 链接 注意点 table,input,button等控件的样式不会继承body,需要重新定义如下 input,label, select,option,textarea,button,fieldset,legend,table{ font-size:18px; FONT-FAM

MySQL配置文件my.cnf参数优化和中文详解_Mysql

Mysql参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的观察以及调试,才有可能得到最佳效果. 复制代码 代码如下: [client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedir = /usr/local/mysqldatadi

MySQL配置文件my.cnf参数优化和中文详解

Mysql参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的观察以及调试,才有可能得到最佳效果. [client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedir = /usr/local/mysqldatadir = /data/m

php-fpm 启动参数及重要配置详解

  约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini 一,php-fpm的启动参数 #测试php-fpm配置 /usr/local/php/sbin/php-fpm -t /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

MySQL cp xtrabackup mysqldump备份过程详解

大纲 一.MySQL备份类型 二.MySQL备份都备份什么? 三.MySQL备份工具 四.MySQL备份策略 五.备份准备工作 六.备份策略具体演示 注:系统版本 CentOS6.4 X86_64,MySQL版本 MySQL 5.5.32,相关软件下载 http://yunpan.cn/QnymShsCMzGg9 一.MySQL备份类型 1.热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 2.物理备份与逻辑备