当前位置:首页 > 运维 > 正文内容

支付系统下MySQL超时问题

MuWinds2年前 (2023-03-11)运维193

现在跑的支付系统在处理客户问题查询订单的时候经常查询超时锁表,导致需要刷新网页。

支付系统的在数据库的特性是高更新频率,当我在排查问题的时候看到了query cache,去google了一下:

MySQL查询缓存是MySQL中比较独特的一个缓存区域,用来缓存特定Query的整个结果集信息,且共享给所有客户端。为了提高完全相同的Query语句的响应速度,MySQL Server会对查询语句进行Hash计算后,把得到的hash值与Query查询的结果集对应存放在Query Cache中。当MySQL Server打开Query Cache之后,MySQL Server会对接收到的每一个SELECT 语句通过特定的Hash算法计算该Query的Hash值,然后通过该hashi值到Query Cache中去匹配。

如果没有匹配,将这个hash值存放在一个hash链表中,并将Query的结果集存放到cache中,存放hashi值链表的每个hash节点存放了相应Quey结果集在cache中的地址,以及该query所涉及到一些table相关信息;

如果通过hash值匹配到了一样的Query,则直接将cache中相应的Query结果集返回给客户端

目前MySQL Query Cache只会cache select语句,其他类似show ,use的语句不会被cache MySQL 的每个Query Cache都是以SQL文本作为key来存储的,在应用Query Cache之前,SQL文本不会做任何处理。也就是说,两个SQL语句,只要相差哪怕一个字符(例如大小写不一样,多一个空格,多注释),那么这两个SQL将使用不同的Cache地址。如: 下面三条SQL将会被存储在三个不同的缓存里,虽然他们的结果都是一样的

select * FROM people where name='surfchen'; 
select * FROM people where /*hey~*/ name='surfchen'; SELECT * FROM people where name='surfchen';

MySQL缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的SQL,服务器直接从缓存中取到结果,而不需要再去解析和执行SQL。如果表更改了,那么使用这个表的所有缓存查询将不再有效,查询缓存中值相关条目被清空。这里的更改指的是表中任何数据或是结构发生改变,包括INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表使用MERGE表的查询。显然,这对于频繁更新的表,查询缓存是不适合的,而对于一些不常改变数据且有大量相同SQL查询的表,查询缓存会节约很大的性能。


“支付系统下MySQL超时问题” 的相关文章

OpenWrt无法保存配置无法生效的解决方法

原因:意外断电导致硬盘卡在只读状态进入openwrt后台按回车输入下面命令,重新挂载即可:mount -o remount rw /2024.07.10更新:换了官方固件后因为要拆下来换机箱散热器又是一次意外断电,卡在了只读状态,但是这次重新挂载无用了。现在这...

yarn构建提示Error: error:0308010C:digital envelope routines::unsupported的解决方法

这个是SSL套件的问题,输入下面的指令切换一下就好了:$env:NODE_OPTIONS = "--openssl-legacy-provider"...

node-saas问题

构建vue项目的时候报错:很简单,nodejs版本太新了,直接换到dart-sassyarn remove node-sass yarn add sass...

在自己的家里建立属于自己的防火长城

终于明白了伟大的江泽民、胡锦涛与习近平元帅同志为啥要设立防火长城这个违背宪法中通信自由的东西了,我妈天天刷抖音快手,有的时候我一起来听到各种营销号对我耳朵的轰炸我又直接昏睡过去。以下说一下方法,我个人用的x86的openwrt,仅供参考:在百度、谷歌轮番搜索,搜到一个openwrt的过滤插件:FRO...

OpenWrt旁路由/独臂路由配置

在介绍旁路由配置之前,先说一下旁路由原理:你可以很清楚的看出:旁路由的网络接入与其他终端设备无异,你可以把他理解为一个普通的设备,这个设备负责数据交换的处理。大多数人装openwrt是为了翻墙,广告过滤,实际上这玩意儿行为管理的能力也不太行……那么,当我们把网关指向旁路由,我们的数据处理流程就是:客...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。