《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,一经查实,立即删除!

相关文章

sql 算出下级销售总和_找出总和字符串

sql 算出下级销售总和Description: 描述: This is a standard interview problem to check that the given string is a sum string or not using backtracking. 这是一个标准的面试问题,用于检查给定的字符串是否为总和字符串或不使用回溯。 Problem…

Request 分别获取具有相同 name 属性表单元素值

html 中是允许多个具有相同name属性的元素的&#xff0c;例如 <div> <input name"txtName" id"txtFirstName" type"text" /> <input name"txtName" id"txtMiddleName" type"text" /> <input…

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

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

BBIAB的完整形式是什么?

BBIAB&#xff1a;再回来一点 (BBIAB: Be Back In A Bit) BBIAB is an abbreviation of "Be Back In A Bit". BBIAB是“ Be Back in A Bit”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites lik…

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

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

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…

代码管理工具

http://blogs.msdn.com/b/visualstudio/archive/2012/06/11/world-of-samples-at-your-fingertips.aspx转载于:https://www.cnblogs.com/hebeiDGL/archive/2012/09/25/2700961.html

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 右键--安全 替换掉所有者 然后给自己…

《MySQL——主备切换流程与主备延迟》

目录主备切换主备延迟的原因可靠性优先策略的主备切换流程可用性优先策略的主备切换流程主备切换 主备切换分为主动运维与被动操作。 软件升级、主库所在机器按计划下线为主动运维。 主库所在机器掉电为被动操作。 同步延迟 1、主库A执行完一个事务&#xff0c;写入binlog…

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)这一数据结构综合了以上两种数据结构的优点。…

scala部分应用函数_Scala中的部分函数

scala部分应用函数Scala部分功能 (Scala partial functions) A partial function is a function that returns values only for a specific set of values i.e. this function is not able to return values for some input values. This function is defined so that only som…

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

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

人脸是门大生意

我们正处在一个新时代的入口。人有70%的能量是被大脑消耗&#xff0c;大脑90%的能量用来处理视觉信息&#xff0c;人脸则承载了绝大部分的视觉信息。我们要讨论的是一个比Google Glass更酷的世界。文/程苓峰-云科技网易邮箱的用户已经可以用人脸而不是密码来验证登陆。安卓4.0实…

【SQL】sql版Split函数。用于拆分字符串为单列表格

【SQL】sql版Split函数。用于拆分字符串为单列表格 功能与.net版string.Split函数类似&#xff0c;只不过.net返回的是数组&#xff0c;这个返回的是一个单列表格&#xff0c;每个拆分出来的子串占一行。可选是否移除空格子串和重复项。市面上类似的函数不算少&#xff0c;但大…

线描算法

线描算法 (Line drawing algorithms) The equation for a straight line is ymxb 直线方程为y mx b In this m represent a slope of a line which can be calculated by the my2-y1/x2-x1 where (x1, y1) are the starting position of the points and (x2, y2) are the end…

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

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