mycat设置sql隔离级别的问题

问题

General log中出现大量SQL “SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ”。

该语句会引起两个问题,

1: "REPEATABLE READ"不是我们预期的事物隔离级别。

2: 大量无效的SQL影响性能。

注: MySql的可重复读会带来怎样的问题,可以参考该文章。https://www.jianshu.com/p/f7360d259878

在这里插入图片描述

排查

排查过程涉及到以下几个方面:

  1. Druid Datasource框架创建连接池

  2. Jdbc连接初始化过程

  3. MySql 版本间SQL语句差异

  4. MyCat工作原理

  5. Spring框架如何管理事物

Druid Datasource框架创建连接池

在这里插入图片描述

Jdbc连接初始化过程

在这里插入图片描述

MySql 版本间SQL语句差异

由上图可以见,对于具体发送哪一条SQL语句去向MySql服务端请求事物隔离级别由版本决定的。MySql的版本5.7.20是一个分界线。

对于小于5.7.20的MySql版本使用的是“select @@session.tx_isolation”。

对于大于5.7.20的MySql版本使用的是“select @@session.transaction_isolation”

MyCat工作原理

mycat 在server.xml中设置隔离级别为RC,mysql级别设置隔离级别为RC。

但是,连接mycat,通过 “select @@session.tx_isolation” 查出来的隔离级别是RR。

通过 “select @@session.transaction_isolation” 查出来的隔离级别是RC。

如下两图所示,

连接MyCat的情况:

在这里插入图片描述

直接连接MySql的情况:

在这里插入图片描述

Spring框架如何管理事物

注: Spring事物原理分析,可以参考该文章。 https://www.jianshu.com/p/ecf55d6f0118

修复

  1. 使用本地事物级别代替向服务端发送请求询问隔离级别(“&useLocalSessionState=true”,驱动程序是否应引用autocommit的内部值,以及由Connection.setAutoCommit()和Connection.setTransactionIsolation()设置的事务隔离)
  2. MyCat使用参数 “5.7.20” 向客户端返回正确的版本信息。用来消除版本之间SQL的细微差别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26582.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[STM32教程]01如何开始准备hal库的开发环境

文章目录 概述1、认识硬件环境1.1 ARM简介1.2 STM32简介 2. 软件开发环境准备2.1 Keil MDK安装2.2 安装STM32Cube MX2.3 安装STM32 HAL库2.4 St-Link V2使用 总结 概述 本文介绍如何准备stm32f103的hal库工程开发环境,包括cubemx安装、keil mdk安装、stm32 hal库安…

Linux下如何部署Nuxt项目(二)

Linux下如何部署Nuxt项目(一)_小鸟哗啦啦的博客-CSDN博客,书接上回,以实际场景开始。 请认真看完这篇文章,还不会部署Nuxt,我直接拿弹弓打你们家玻璃! 一、nuxt的配置检查 服务端渲染的应用,应该是先编译构…

【从零开始学习JAVA | 第二十九篇】Stream流

目录 前言: Stram流: 设计目标: 使用步骤: 1.先得到一条Stream流,并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项: 总结: 前言: 本文我们将学习Stream流…

vue3 前端编码规范

prettier 配置 1. vscode 安装prettier 的 插件 2. 新建 .prettierrc 文件 {"semi": false, // 不尾随分号"singleQuote": true, // 使用单引号"trailingComma": "none" // 多行逗号分隔的语法,最后一行不加逗号 }eslin…

《远见》阅读笔记

不同的环境,不同的职业,职业生涯的建议并没有什么不同 找到热爱的工作,建立热爱的生活 如何思考职业远景 如何分配时间 如何扩张人脉 职业生涯决策框架 三个部分 职场思维、框架、工具实用性建议和案例现实生活为基础,平衡职…

Animboat Application Framework

SpringBoot的服务将部署在云端 管理云端数据和处理分布式的业务请求 本地基础服务将作为云端和终端中间媒介, 与局域网内其它dcc 插件或者app运行实例进行通信, 同时本地基础服务将负责本地数据的管理。 每个AppInstance都会有自己的FlaskSvr用于与Loc…

Acrel-1000DP分布式光伏系统在重工企业的应用

安科瑞 崔丽洁 摘 要:分布式光伏发电特指在用户场地附近建设,运行方式以用户侧自发自用、余电上网,且在配电系统平衡调节为特征的光伏发电设施,是一种新型的、具有广阔发展前景的发电和能源综合利用方式,它倡导就近发电…

【云原生】Docker网络Overlay搭建Consul实现跨主机通信

目录 1.overlay网络是什么? 实现overlay环境 1.overlay网络是什么? 在Docker中,Overlay网络是一种容器网络驱动程序,它允许在多个Docker主机上创建一个虚拟网络,使得容器可以通过这个网络相互通信。 Overlay网络使用…

字符串函数及内存函数C语言

字符函数及内存函数 一.字符串函数函数1.strlen函数2.strcpy函数3.strcat函数4.strcmp函数5.strncpy函数6.strncat函数7.strncmp函数8.strstr函数9.strtok函数10.strerror函数 二.内存函数1.memcpy函数2.memmove函数3.memcpy函数4.memset函数 一.字符串函数函数 1.strlen函数 …

【程序员必须掌握哪些算法?】

一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~ 常见算法介绍 本文所介绍的排序算法均以升序为例。 文章目录 常见算法介绍一 …

P106-100组A卡(R5 240)指南

P106-100组A卡(R5 240)指南 不建议小白尝试 不建议小白尝试 不建议小白尝试文章目录 P106-100组A卡(R5 240)指南资料合集硬件软件基础卸载所有原驱动安装驱动修改注册表自动调用——只改一个注册表手动调用——改两个注册表 劝退…

Qt中QMainWindow的相关介绍

目录 菜单栏 工具栏 状态栏: 停靠窗口: QMainWindow 是标准基础窗口中结构最复杂的窗口,其组成如下: 提供了菜单栏 , 工具栏 , 状态栏 , 停靠窗口 菜单栏:只能有一个,位于窗口的最上方 工具栏:可以有多…