MySQL支持的四种事务隔离级别

READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE

查看全局事务隔离级别和会话事务隔离级别

SHOW GLOBAL VARIABLES LIKE 'tx_isolation';
SHOW SESSION VARIABLES LIKE 'tx_isolation';
SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;

修改事务隔离级别参数

SET GLOBAL tx_isolation='REPEATABLE-READ'; 
SET GLOBAL transaction_isolation='REPEATABLE-READ';
SET SESSION tx_isolation='SERIALIZABLE';
SET GLOBAL transaction_isolation='REPEATABLE-READ'; tx_isolation和transaction_isolation两者等价相同,修改任意一个即可。

修改已开启事务的隔离级别

在事务中修改事务隔离级别,需要使用使用SET TRANSACTION ISOLATION LEVEL 命令来修改事务隔离级别。

语法格式为:

SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

主要修改时必须使用SESSION或GLOBAL进行修饰,SET TRANSACTION without GLOBAL or SESSION is not permitted while there is an active transaction,否者会报“ERROR 1568 (25001): Transaction characteristics can't be changed while a transaction is in progress”

修改Demo

START TRANSACTION;
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;

查看事务锁持有的锁

SELECT
r.trx_id waiting_trx_id ,
r.trx_query waiting_query ,
b.trx_id blocking_trx_id ,
b.trx_query blocking_query ,
b.trx_mysql_thread_id blocking_thread ,
b.trx_started ,
b.trx_wait_started
FROM information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b
ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r
ON r.trx_id = w.requesting_trx_id

查看当前事务使用的事务隔离级别

SELECT
p.ID,
P.USER,
P.HOST,
p.DB,
P.TIME,
T.trx_started,
T.trx_isolation_level,
T.trx_tables_locked,
T.trx_rows_locked,
t.trx_state,
p.COMMAND AS process_state
FROM `information_schema`.`INNODB_TRX` t
INNER JOIN `information_schema`.`PROCESSLIST` p
ON t.trx_mysql_thread_id=p.id;

查看未提交事务

## 查看未提交的事务 ##
SELECT
p.ID,
P.USER,
P.HOST,
p.DB,
P.TIME,
T.trx_started,
T.trx_isolation_level,
T.trx_tables_locked,
T.trx_rows_locked,
t.trx_state,
p.COMMAND AS process_state
FROM `information_schema`.`INNODB_TRX` t
INNER JOIN `information_schema`.`PROCESSLIST` p
ON t.trx_mysql_thread_id=p.id
WHERE t.trx_state='RUNNING'
AND p.COMMAND='Sleep'
ORDER BY T.trx_started ASC \G

查看阻塞事务

##查看阻塞事务##
SELECT
P2.`ID` BlockProcessID,
p2.`HOST` Blockedhost,
p2.`USER` BlockedUser,
r.trx_id BlockedTrxId,
r.trx_mysql_thread_id BlockedThreadId,
TIMESTAMPDIFF(
SECOND,
r.trx_wait_started,
CURRENT_TIMESTAMP
) WaitTime,
r.trx_query BlockedQuery,
l.lock_table BlockedTable,
m.`lock_mode` BlockedLockMode,
m.`lock_type` BlockedLockType,
m.`lock_index` BlockedLockIndex,
m.`lock_space` BlockedLockSpace,
m.lock_page BlockedLockPage,
m.lock_rec BlockedLockRec,
m.lock_data BlockedLockData,
p.`ID` BlockingProcessID,
p.`HOST` blocking_host,
p.`USER` blocking_user,
b.trx_id BlockingTrxid,
b.trx_mysql_thread_id BlockingThreadId,
b.trx_query BlockingQuery,
l.`lock_mode` BlockingLockMode,
l.`lock_type` BlockingLockType,
l.`lock_index` BlockingLockIndex,
l.`lock_space` BlockingLockSpace,
l.lock_page BlockingLockPage,
l.lock_rec BlockingLockRec,
l.lock_data BlockingLockData,
IF (p.COMMAND = 'Sleep', CONCAT(p.TIME,' seconds'), 0) idel_in_trx
FROM information_schema.INNODB_LOCK_WAITS w
INNER JOIN information_schema.INNODB_TRX b
ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.INNODB_TRX r
ON r.trx_id = w.requesting_trx_id
INNER JOIN information_schema.INNODB_LOCKS l
ON w.blocking_lock_id = l.lock_id
AND l.`lock_trx_id`=b.`trx_id`
INNER JOIN information_schema.INNODB_LOCKS m
ON m.`lock_id`=w.`requested_lock_id`
AND m.`lock_trx_id`=r.`trx_id`
INNER JOIN information_schema.PROCESSLIST p
ON p.ID = b.trx_mysql_thread_id
INNER JOIN information_schema.PROCESSLIST p2
ON p2.ID = r.trx_mysql_thread_id
ORDER BY WaitTime DESC ;

MySQL Transaction--事务相关查询的更多相关文章

  1. mysql transaction 事务

    1.事务简介 一个"最小的"不可再分的"工作单元". 一个事务通常对应了一个完整的业务.如:银行的转账功能,a转账给b,a扣钱,b加钱. 一个事务包含一条或多条 ...

  2. mysql insert 事务相关(草稿)

    当 insert 多条语句时初步试了一下是自带事务机制的,如在一个这样的表中: 执行语句 INSERT INTO `t_mytest`(`id`) VALUES (1),(2),(3),(4),(5) ...

  3. 关于mysql的null相关查询的一些坑

    我们先看一下效果,然后在解释,示例如下: mysql> create table test5 (a int not null,b int,c varchar(10)); Query OK, 0 ...

  4. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  5. MySQL数据库事务隔离级别(Transaction Isolation Level)

    转自: http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html  数据库隔离级别有四种,应用<高性能mysql>一书中的 ...

  6. day15(mysql 的多表查询,事务)

    mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b ...

  7. mysql事务之一:MySQL数据库事务隔离级别(Transaction Isolation Level)及锁的实现原理

    一.数据库隔离级别 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数 ...

  8. Mysql 事务相关

    MySQL介绍 什么是MySQL? ​ MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它 ...

  9. mysql 个人博客应用的建表和相关查询

    一.建表 用户表tb_user create table if not exists tb_user( user_id int auto_increment, ) not null, user_pas ...

随机推荐

  1. javascript进阶笔记(1)

    学习js已经有一段时间了,大大小小还是能够做出一些东西来.不过觉得可惜的是,还是对js本身这门语言不是很熟悉,总有一点雾里看花的感觉,看得见,但是看不清楚.最近发现有一本关于js的叫做<忍者秘籍 ...

  2. 关于iOS构建版本

    1.Build Active Architecture Only 设置 Build Active Architecture Only 设置为NO的时候,会编译支持的所有的版本 设置为YES的时候,是为 ...

  3. ubuntu查看占用某端口的程序

    查看端口使用情况,使用netstat命令. 查看已经连接的服务端口(ESTABLISHED netstat -a 查看所有的服务端口(LISTEN,ESTABLISHED) netstat -ap 查 ...

  4. Tsi721信号及处理(转)

    reference: https://blog.csdn.net/shanghaiqianlun/article/details/50545581 1.      PCIe信号 名称 类型 描述 PC ...

  5. LINQ(数据库操作增、删、改及并发管理)

    本文将演示如何通过 Entity Framework 数据模型创建.修改.删除数据库记录. Customer cust = new Customer() { CustomerID = "LA ...

  6. 基于spec互评Alpha版本

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2323] 队名:二次元梦之队 组长:刘莹莹 组员:周昊 潘世维  王玉潘 赵美增 ...

  7. php优秀框架codeigniter学习系列——CodeIgniter.php概览

    CodeIgniter.php是CI框架的核心文件.它在前端控制器index.php之后运行,加载各类基础组件,执行请求.文件执行完成后,这次请求也就结束了.所以,该文只能对CodeIgniter.p ...

  8. 【转】Principles of training multi-layer neural network using backpropagation

    Principles of training multi-layer neural network using backpropagation http://galaxy.agh.edu.pl/~vl ...

  9. ogg-./ggsci ./ggsci: error while loading shared libraries: libnnz11.so:

    测试环境,安装linux 0gg,解压介质后./ggsci无法使用,提示目录不存在 原来是环境变量导致的问题: 1.报错现象 [ogg@enmo ogg]$ ./ggsci ./ggsci: erro ...

  10. Oracle查询行对应block_id,file_id

    select id,rowid, dbms_rowid.rowid_object(rowid) object#, dbms_rowid.rowid_relative_fno(rowid) file#, ...