1.普通事务
公司主营业务:成都网站设计、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出盐湖免费做网站回馈大家。
以 begin / start transaction 开始,commit / rollback 结束的事务。或者是带有保存点 savepoint 的事务。
2. 链式事务
一个事务在提交的时候自动将上下文传给下一个事务,也就是说一个事务的提交和下一个事务的开始是原子性的,下一个事务可以看到上一个事务的处理结果。MySQL 的链式事务靠参数 completion_type 控制,并且回滚和提交的语句后面加上 work 关键词。
3. 嵌套事务
有多个 begin / commit / rollback 这样的事务块的事务,并且有父子关系。子事务的提交完成后不会真的提交,而是等到父事务提交才真正的提交。
4. 自治事务
内部事务的提交不随外部事务的影响,一般用作记录内部事务的异常情况。MySQL 不支持自治事务,但是某些场景可以用 MySQL 的插件式引擎来变相实现。
默认情况下, MySQL启用自动提交模式(变量autocommit为ON)
如果是全局级别,则需要加global,如果是会话级别,则需要加session,如果都没加,默认是session。
全局变量作用域:服务器每次启动将为所有的全局变量赋初始值,修改全局变量针对于所有的会话(连接)有效,但不能跨重启(重启服务器全局变量恢复为默认值)。
会话变量作用域:仅仅针对于当前会话(连接)有效
查询会话事务提交模式:
show session variables like 'autocommit';
查询全局事务提交模式:
show global variables like 'autocommit';
Value的值为ON,表示autocommit开启。OFF表示autocommit关闭。
set global autocommit=0;
set SESSION autocommit=0;
禁止自动提交
SET AUTOCOMMIT=0
开启自动提交:
SET AUTOCOMMIT=1
查询 正在执行的事务:
SELECT * FROM information_schema.INNODB_TRX
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
结束正在执行的事务:
使用mysql命令杀掉线程:kill 线程id (trx_mysql_thread_id)
手动提交模式:
BEGIN;
SQL;
COMMIT;
方法/步骤
启动xampp中的mysql
登陆mysql
查看当前的autocommit属性值
命令:
show variables like 'autocommit'\G
更改autocommit
命令:
set autocommit=off;
查看更改后的autocommit值:
命令:
show variables like 'autocommit';
另一种设置autocommit值的途径
命令:
select @@autocommit;
set autocommit=0;
MySQLautocommit(自提交)默认启其mysql性能定影响举例说插入1000条数据mysqlcommit1000我autocommit关闭掉通程序控制要commit
1,我通set设置autocommit
查看复制打印?
mysql set global init_connect="set autocommit=0"; //提示用权限更高财户设置
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
mysql set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql select @@autocommit; //查看autocommit设置
+--------------+
| @@autocommit |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)
2,我修改mysql配置文件my.cnf关闭autocommit
查看复制打印?
[mysqld]
init_connect='SET autocommit=0' //mysqld面加些内容
用第二种关点要注意连接mysql用户权限能于启mysql用户权限init_connect='SET autocommit=0'根本启作用报任何错误汗先看实例
查看复制打印?
zhangy@ubuntu:~$ mysql -umysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.2-m2-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql select @@autocommit; //mysql启用户关闭autocommit功
+--------------+
| @@autocommit |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)
mysql Ctrl-C -- exit!
Aborted
zhangy@ubuntu:~$ mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.2-m2-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql select @@autocommit; //用root财户启功
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
mysqlbug呢我网找找面问题真部内容:
If a user has SUPER privilege, init_connect will not execute
(otherwise if init_connect will a wrong query no one can connect to server).
Note, if init_connect is a wrong query, the connection is closing without any errors
and next command will clause 'lost connection' error.
面点说清楚If a user has SUPER privilege, init_connect will not execute用户更高级权限init_connect根本执行
Internal HDD 内置硬盘驱动器