mysql 事务自动手动提交模式

mysql 事务自动手动提交模式,第1张

默认情况下, 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

1。通过线程的互斥来同步 *** 作数据库

2。数据库采用事务处理表中的数据

3。采用共享方式打开数据库,不是以独占方式打开数据库

建立一个mysql连接表加上一个临界区,表结点是这样的(mysqlcon,bool),根据实际情况定大小。我用的是10个连接。

当要进行mysql *** 作时,就从表中取出一个闲置的mysql连接,并把bool量改为true,使用完后改成false,临界区的做用是保障一个mysql连接一次只能被一个线程使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8613719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存