《MySQL—— 业务高峰期的性能问题的紧急处理的手段 》

catalog

    • 短连接风暴
      • 先处理占着连接但是不工作地线程
      • 减少连接过程的消耗
    • 慢查询性能问题
      • 索引没有设计好
      • 语句没写好
      • 选错索引
    • QPS突增问题

短连接风暴

正常的短连接:
执行很少sql语句就断开,下次需要的时候再重连。MySQL建立连接的过程成本很高,包含:网络连接三次握手、登录权限判断、获得连接的数据读写权限。
短连接模型存在风险:一旦数据库处理得慢一些,连接数就会暴涨。
有两个方法能够有损地解决短链接风暴问题

先处理占着连接但是不工作地线程

如果连接数,可以优先断开事务外空闲太久地连接。如果这样还不够,再考虑断开事务内空闲太久的连接。
当一个客户端处于sleep状态,它的连接被服务端主动断开后,客户端并不会立即知道。而是在客户端发起下一个请求的时候,才会收到报错:

ERROR 2013 (HY000): Lost connection to MySQL server during query

有的应用端收到这个错误时不会重新连接,而是用这个句柄重试查询,这回导致从应用端看MySQL一直没恢复。

减少连接过程的消耗

让数据库跳过权限验证阶段。

方法:重启数据库,并使用-skip-grant-tables参数启动。这样MySQL就会跳过所有的权限验证阶段,包括连接过程和语句执行过程在内。

这个风险极高。在MySQL8.0版本里,如果启用-skip-grant-tables参数,MySQL会默认把--skip-networking参数打开,表示这时候数据库只能被本地客户端连接。

慢查询性能问题

索引没有设计好

通过紧急创建索引来解决。

直接执行alter table语句。

假设现在服务是一主一备,主库A、备库B,这个方案的大致流程是这样的:

1、在备库B上执行set sql_log_bin = off,不写binlog,然后执行alter table,加上索引

2、执行主备切换

3、主库是B,备库是A。在A上执行set sql_log_bin = off,然后执行alter table,加上索引。

语句没写好

在之前的文章中,提到过,有时候一些错误会导致语句没有使用上索引。

此时通过改写sql语句来处理,query_rewrite功能,可以把输入的一种语句改写成另外一种模式。

如果我们一开始写的是:

select * from t where id + 1 = 10000;

可以通过下面代码增加一个语句改写规则。

insert into query_rewrite.rewrite_rules(pattern,replacement,pattern_databas) values ("select * from t where id + 1 = ?","db1");
call query_rewrite.flush_rewrite_rules();

call query_rewrite.flush_rewrite_rules()是让插入的新规则生效。
在这里插入图片描述

选错索引

应急方案:给语句加上force index;

QPS突增问题

QPS每秒查询率(Query Per Second) 有时会由于业务高峰或者应用程序bug出现突增。

最好的办法是让业务把这个功能下掉,服务自然就会恢复。

下掉一个功能的方法如下:

1、如果是全新业务的bug,如果去欸的那个业务方会下掉这个功能,那么可以从数据库端直接把白名单去掉

2、如果这个功能使用的是单独的数据库用户,可以用管理员账号把这个用户删掉,然后断开现有连接。

3、如果这个功能和主体功能是部署在一起的,那么我们只能通过处理语句来限制。可以使用查询重写功能,把压力最大的sql语句直接重写为"select 1"返回。

下掉一个功能所带来的副作用如下:

1、如果别的功能里面也用到了这个sql语句模板,会有误伤

2、很多业务并不是靠着一个语句就能完成完整逻辑,所以单独把一个语句以select 1的结果返回的话,可能会导致后面的业务逻辑一起失败。

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

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

相关文章

《MySQL——redo log 与 binlog 写入机制》

目录binlog写入机制redo log写入机制组提交机制实现大量的TPS理解WAL机制如何提升IO性能瓶颈WAL机制告诉我们:只要redo log与binlog保证持久化到磁盘里,就能确保MySQL异常重启后,数据可以恢复。 下面主要记录一下MySQL写入binlog和redo log的…

字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组

涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机 KMP算法 Extend-KMP 后缀树 后缀数组 trie树 trie图及其应用。当然这些都是比较高级的数据结构和算法,而这里面最常用和最熟悉的大概是kmp,即使如此还是有相当一部分人也…

WPF CanExecuteChanged

继承ICommand ,RelayCommand命令 1 public class RelayCommand : ICommand2 {3 private readonly Action _execute;4 private readonly Func<bool> _canExecute;5 public event EventHandler CanExecuteChanged;6 public RelayComma…

《MySQL——主备一致性六问六答》

目录备库为什么要设置为只读模式&#xff1f;备库设置为只读&#xff0c;如何与主库保持同步更新&#xff1f;A到B的内部流程如何&#xff1f;binlog内容是什么&#xff1f;row格式对于恢复数据有何好处M-M结构的循环复制问题以及解决方案备库为什么要设置为只读模式&#xff1…

fyi 在邮件里是什么意思_FYI的完整形式是什么?

fyi 在邮件里是什么意思仅供参考&#xff1a;供您参考 (FYI: For Your Information) FYI is an acronym of "For Your Information". It is a widespread internet slang used these days in text messaging, instant messaging, and chatting on Facebook, WhatsApp…

Hyper-V 替换 vmwp

要激活 Hyper-V 下的虚机 最简单的方法是用带证书的vmwp替换掉原来的 带证书的vmwp参见&#xff1a;http://bbs.pcbeta.com/viewthread-1408240-1-1.html 下载后腰替换 先把 Hyper-V 的俩服务停止掉 然后找到 C:\Windows\System32\vmwp.exe 右键--安全 替换掉所有者 然后给自己…

ejb模式_EJB的完整形式是什么?

ejb模式EJB&#xff1a;企业Java Bean (EJB: Enterprise Java Bean) EJB is an abbreviation of Enterprise Java Bean. EJB is one of many Java application programming interfaces (API) for flexible and manageable structuring of Java Platform, Enterprise Edition (J…

Android之PreferenceActivity

http://www.cnblogs.com/wservices/archive/2010/07/08/1773449.html 看到很多书中都没有对PreferenceActivity做介绍&#xff0c;而我正好又在项目中用到&#xff0c;所以就把自己的使用的在这总结一下&#xff0c;也方便日后查找。 PerferenceActivity是什么&#xff0c;看下…

浅谈算法和数据结构: 七 二叉查找树

前文介绍了符号表的两种实现&#xff0c;无序链表和有序数组&#xff0c;无序链表在插入的时候具有较高的灵活性&#xff0c;而有序数组在查找时具有较高的效率&#xff0c;本文介绍的二叉查找树(Binary Search Tree&#xff0c;BST)这一数据结构综合了以上两种数据结构的优点。…

《MySQL——备库多线程复制策略。》

目录备库并行复制能力MySQL5.6版本 并行复制策略MariaDB 并行复制策略MySQL5.7版本 并行复制策略MySQL5.7.22版本 并行复制策略总结备库并行复制能力 主要涉及两个方面的并行度&#xff1a; 1、客户端写入主库的能力 2、备库上sql_thread执行中转日志relay log 1的并行能力…

为移动端网页构造快速响应按钮

背景 在谷歌&#xff0c;我们不断地推测手机网页应用的可能性。像HTML5这样的技术使我们网页版的应用以及运行在手机设备上的原生应用。而这些技术的成就之一就是我们开发了一种新的创建按钮的方法&#xff0c;使按钮的响应时间远远快于一般的HTML按钮。在此之前的按钮或者其他…

Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解+使用教程

Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解使用教程 Red Gate系列文章&#xff1a; Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解使用教程 Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制…

《MySQL——基于位点orGTID的主备切换协议》

一主多从的设置&#xff0c;用于读写分离&#xff0c;主库负责所有的写入和一部分读&#xff0c;其他读请求则由从库分担。 一主多从架构下&#xff0c;主库故障后的主备切换问题。相比于一主一备&#xff0c;多了从库指向新主库的过程。 基于位点的主备切换同步 把节点B设…

数据科学和统计学_数据科学中的统计

数据科学和统计学统计 (Statistics) Statistics are utilized to process complex issues in reality with the goal that Data Scientists and Analysts can search for important patterns and changes in Data. In straightforward words, Statistics can be utilized to ge…

《MySQL——如何解决一主多从的读写分离的过期读问题》

目录两种架构两种架构特点强制走主库方案Sleep方案判断主备无延迟方案配合semi-sync等主库位点方案GTID方案两种架构 基于一主多从的读写分离&#xff0c;如何处理主备延迟导致的读写分离问题。 读写分离的主要目标&#xff1a;分摊主库压力。 有两种架构&#xff1a; 1、客…

《MySQL——外部检测与内部统计 判断 主库是否出现问题》

目录select1判断查表判断更新判断外部检测弊端内部统计一主一备的双M架构里&#xff0c;主备切换只需要把客户端流量切换到备库。 在一主多从的架构里&#xff0c;主备切换要把客户端流量切换到备库&#xff0c;也需要把从库接到新主库上。 切换有两种场景&#xff1a;1、主动…

[Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)...

点击下载 ConvertJson.rar 本类实现了 C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json|等功能大家先预览一下 请看代码 /// <summary> /// 类说明&#xff1a;Assistant /// 编 码 人&#xff1a;苏飞 /// 联系方式&#xff1a;361983679 …

《MySQL——恢复数据-误删行、表、库》

目录误删行事前预防误删行数据方法误删表/库延迟复制备库事前预防误删库/表方法传统的架构不能预防误删数据&#xff0c;因为主库的一个drop table命令&#xff0c;会通过binlog传给所有从库和级联从库&#xff0c;进而导致整个集群的实例都会执行这个命令。 MySQL相关的误删除…

python图例位置_Python | 图例位置

python图例位置Legends are one of the key components of data visualization and plotting. Matplotlib can automatically define a position for a legend in addition to this, it allows us to locate it in our required positions. Following is the list of locations…

工作总结:文件对话框的分类(C++)

原文地址&#xff1a;http://www.jizhuomi.com/software/173.html 文件对话框分为打开文件对话框和保存文件对话框&#xff0c;相信大家在Windows系统中经常见到这两种文件对话框。例如&#xff0c;很多编辑软件像记事本等都有“打开”选项&#xff0c;选择“打开”后会弹出一个…