iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >DB为什么会大量出现select @@session.tx_read_only
  • 876
分享到

DB为什么会大量出现select @@session.tx_read_only

2024-04-02 19:04:59 876人浏览 安东尼
摘要

小编给大家分享一下DB为什么会大量出现select @@session.tx_read_only,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!发现问题在一次捞取Top sql中,发现DB大

小编给大家分享一下DB为什么会大量出现select @@session.tx_read_only,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

发现问题

在一次捞取Top sql中,发现DB大量执行 select @@session.tx_read_only ,几乎每一条DML语句前,都会有这么一个sql。但是应用层并没有做特殊处理,那么这个SQL语句有什么作用?是谁执行了它?

详细介绍

此sql的作用主要是判断事务是否为只读事务。Mysql自身会对只读事务做优化,这是 mysql5.6.5 版本 以后才出现的。 Http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_tx_read_only

定位到MySQL的驱动包

ConnectionImpl.java :

DB为什么会大量出现select @@session.tx_read_only

可以看到,在if条件中,对MySQL的 版本 做了判断,同时也有  !getUseLocalSessionState()  这么一个条件,对应 JDBC参数useLocalSessionState ,当这个值为false时,会发出select @@session.tx_read_only; 这条sql。

默认情况下,我们的连接串信息没有包含useLocalSessionState参数的设置,这个值默认为false。

这个值的作用是驱动程序是否使用autocommit,read_only和transaction isolation的内部值(jdbc端的本地值)。

如果设置为false,则需要这个判断这三个参数的场景,都需要发语句到远端请求,比如更新语句前,

需要发语句select @@session.tx_read_only确认会话是否只读。

如果设置为true,则只需要取本地值即可。这可以解释为什么有的实例 select @@session.tx_read_only语句很多。

一般情况下,驱动可以保证本地值与远程服务器值保持一致。当应用调用setAutoCommit, setTransactionIsolation 和 setReadOnly这三个接口设置参数值时,会与远程服务器同步。

具体而言,

当useLocalSessionState为true时,若值与本地值不一致,则发往远程更新;

当useLocalSessionState为false时,无论设置值与本地值是否一致,每次都发往远程更新。这可以解释为什么有些实例set autocommit语句比较多。

但是,若用户设置参数时不通过JDBC接口(比如setAutoCommit),而是执行语句'set autocommit=xxx'设置, 那么就会存在本地值与远程不一致的情况,进而可能导致修改参数useLocalSessionState后,业务逻辑发生变化。

相关设置的SQL语句:

set autocommit=0          对应的JDBC接口:  setAutoCommit(false)
set tx_isolation='read-committed'     对应的JDBC接口:setTransactionIsolation('read-committed') 
set tx_read_only=0;              对应的JDBC接口:setReadOnly(false)

设置useLocalSessionState默认值为ture,可能导致业务逻辑含义发生变化。触发的条件是,用户通过SQL语句直接设置自动提交参数,隔离级别参数或只读事务参数。

看完了这篇文章,相信你对“DB为什么会大量出现select @@session.tx_read_only”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网数据库频道,感谢各位的阅读!

您可能感兴趣的文档:

--结束END--

本文标题: DB为什么会大量出现select @@session.tx_read_only

本文链接: https://www.lsjlt.com/news/57683.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • DB为什么会大量出现select @@session.tx_read_only
    小编给大家分享一下DB为什么会大量出现select @@session.tx_read_only,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!发现问题在一次捞取Top SQL中,发现DB大...
    99+
    2024-04-02
  • 香港服务器为什么会出现异常大流量
    香港服务器会出现异常大流量的原因:1、香港服务器网站规模较大,用户访问量需求大导致;2、香港服务器的网站页面设计不合理,导致网站页面太大;3、香港服务器中的网站内容被盗链或提供数据下载导致;4、香港服务器正在遭受恶意流量攻击。具体内容如下:...
    99+
    2024-04-02
  • redis为什么会出现异常
    这篇文章主要介绍了redis为什么会出现异常,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Exception in th...
    99+
    2024-04-02
  • 为什么会出现 ClassCastException 异常
    ClassCastException 异常是指在一个对象向下转型时发生的异常。出现该异常的原因可能有以下几种:1. 对象的类型与转型...
    99+
    2023-08-18
    异常
  • 香港服务器为什么会出现流量超标
    香港服务器出现流量超标的原因有:1、香港服务器部署网站的资源被过度抓取导致;2、香港服务器被注入大量垃圾信息导致;3、网站规模变大,访客量逐渐增加导致;4、香港服务器遭受大规模的恶意流量攻击导致。具体内容如下:网站资源被过度抓取当网站中的图...
    99+
    2024-04-02
  • 为什么TypeScript的Enum会出现问题
    目录发生了什么呢?什么时候用控制枚举的数字Bit值控制索引非数字枚举结论TypeScript引入了很多静态编译语言的特性,比如class(现在是JavaScript的一部分了),in...
    99+
    2024-04-02
  • linux栈为什么会溢出
    这篇文章主要介绍了linux栈为什么会溢出的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux栈为什么会溢出文章都会有所收获,下面我们一起来看看吧。在linux中,栈溢出的原因是系统栈是由高地址往低地址增长...
    99+
    2023-06-30
  • 轻量香港云服务器为什么会出现CPU占用100%
    轻量香港云服务器出现CPU占用100%的原因有:1、硬件配置太低,无法承受网站的访问量,造成资源占用大;2、网站被黑客植入挖矿病毒或恶意脚本 ,导致CPU占用100%;3、某些版本出现BUG或兼容性问题,资源占用大,导致CPU占用100%。...
    99+
    2024-04-02
  • MySQL为什么会出现Waiting for table metadata lock
    小编给大家分享一下MySQL为什么会出现Waiting for table metadata lock,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我...
    99+
    2024-04-02
  • php为什么会出现乱码?怎么解决?
    PHP是一种非常流行的编程语言,但有时它可能会出现乱码显示的问题。在这篇文章中,我们将探讨php乱码的原因以及如何解决这个问题。第一部分:为什么会出现乱码PHP文件编码问题当PHP文件的编码格式与网页的编码格式不一致时,就会导致乱码的问题。...
    99+
    2023-05-14
    php
  • 为什么idea输出会乱码
    这篇文章主要介绍“为什么idea输出会乱码”,在日常操作中,相信很多人在为什么idea输出会乱码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什么idea输出会乱码”的疑惑...
    99+
    2024-04-02
  • Java中为什么会出现Exception结构异常
    这期内容当中小编将会给大家带来有关Java中为什么会出现Exception结构异常,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. Java异常Exception的结构分析我们通常所说的Exceptio...
    99+
    2023-05-31
    java exception 中为
  • 香港服务器为什么会出现丢包
    香港服务器会出现丢包的原因有:1、香港服务器机房出现网络故障,影响整体服务器的网络运行而导致丢包;2、香港服务器出现本地网络故障;3、中转网络故障,从而导致出现丢包问题。具体内容如下:机房网络故障用户在选择机房时,通常会比较注重机房的硬件设...
    99+
    2024-04-02
  • 美国服务器为什么会出现丢包
    美国服务器会出现丢包的原因有:1、美国服务器网站崩溃导致丢包;2、美国服务器正在遭受DDoS攻击导致丢包;3、美国服务器本地网络出现故障导致丢包。具体内容如下:网站崩溃网站是海外资源的重要途径。如果美国高防服务器被特洛伊木马毒害,数据包将无...
    99+
    2024-04-02
  • 为什么用云服务器会出现卡顿现象
    云服务器出现卡顿现象的解决方法:1.测试路由器,重启路由器;2.测试运营商线路,通过PING命令检测DNS服务器延;3.测试运营商DNS,暂时使用公共DNS服务器;具体分析如下:测试路由器可在路由器底部铭牌查看路由器网关地址,通过PING命...
    99+
    2024-04-02
  • 美国服务器为什么会出现不稳定
    美国服务器会出现不稳定的原因:1、美国服务器所处的机房出现故障问题导致;2、美国服务器的线路质量和和网络出现波动导致;3、美国服务器硬件配置不足、资源占用率过高导致;4、美国服务器操作系统的不同,带来的影响性也不一样,而安装Linux操作系...
    99+
    2024-04-02
  • 国外拨号vps为什么会出现691错误
    国外拨号vps出现691错误的原因有:1、用户名或密码错误,修改正确的用户名或密码即可;2、线路时间到期导致账户欠费,进行线路续费或重新开通即可;3、短时间内频繁换线或异常断开连接导致,可以联系客服断开连接,等待几十秒后尝试连接;4、驱动未...
    99+
    2024-04-02
  • 为什么会出现无权限访问phpmyadmin的问题
    小编给大家分享一下为什么会出现无权限访问phpmyadmin的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!由于我安装wam...
    99+
    2024-04-02
  • 云服务器vps为什么会出现CPU占用100%
    云服务器vps出现CPU占用100%的原因有:1、硬件配置太低,稳定性不好,导致CPU占用100%;2,网站被黑客植入挖矿病毒或恶意脚本 ,导致CPU占用100%;3、CMS后台相对比较成熟导致服务器资源的占用越来越大,从而使vps云服务器...
    99+
    2024-04-02
  • 香港服务器为什么会出现网络故障
    香港服务器会出现网络故障的原因有:1、电信网出入口出现异常导致;2、香港服务器硬件配置出现故障问题导致;3、香港服务器的电源开关出现故障问题导致;4、香港服务器中机器设备出现故障导致;5、香港服务器正在被大规模网络攻击导致。具体内容如下:电...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作