史上最全的MySQL高性能优化实战总结!

史上最全的MySQL高性能优化实战总结!
1.1 前言

MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。

今天给大家体验MySQL的优化实战,助你高薪之路顺畅。
史上最全的MySQL高性能优化实战总结!
图 - MySQL查询过程

1.2 优化的哲学

优化有风险,涉足需谨慎

1.2.1 优化可能带来的问题
史上最全的MySQL高性能优化实战总结!

1.2.2 优化的需求
史上最全的MySQL高性能优化实战总结!
1.2.3 优化由谁参与

在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员、应用程序开发人员、硬件及系统管理员、存储管理员等,业务相关人员共同参与。

1.3 优化思路

1.3.1 优化什么

在数据库优化上有两个主要方面:即安全与性能。
史上最全的MySQL高性能优化实战总结!
1.3.2 优化的范围有哪些

存储、主机和操作系统方面:
史上最全的MySQL高性能优化实战总结!
应用程序方面:

史上最全的MySQL高性能优化实战总结!

数据库优化方面:
史上最全的MySQL高性能优化实战总结!
说明:不管是在,设计系统,定位问题还是优化,都可以按照这个顺序执行。

1.3.3 优化维度

数据库优化维度有四个:

硬件、系统配置、数据库表结构、SQL及索引
史上最全的MySQL高性能优化实战总结!
优化选择

史上最全的MySQL高性能优化实战总结!
1.4 优化工具有啥?

1.4.1 数据库层面

检查问题常用工具
史上最全的MySQL高性能优化实战总结!
不常用但好用的工具
史上最全的MySQL高性能优化实战总结!
1.4.2 数据库层面问题解决思路

一般应急调优的思路:

针对突然的业务办理卡顿,无法进行正常的业务处理!需要立马解决的场景!
史上最全的MySQL高性能优化实战总结!
常规调优思路:

针对业务周期性的卡顿,例如在每天10-11点业务特别慢,但是还能够使用,过了这段时间就好了。
史上最全的MySQL高性能优化实战总结!
1.4.3 系统层面

cpu方面

vmstat、sar top、htop、nmon、mpstat

内存

free、ps -aux 、

IO设备(磁盘、网络)

iostat、 ss 、 netstat 、 iptraf、iftop、lsof、

vmstat 命令说明:
史上最全的MySQL高性能优化实战总结!
iostat命令说明

实例命令: iostat -dk 1 5

iostat -d -k -x 5 (查看设备使用率(%util)和响应时间(await))

史上最全的MySQL高性能优化实战总结!
1.4.4 系统层面问题解决办法

你认为到底负载高好,还是低好呢?

在实际的生产中,一般认为 cpu只要不超过90%都没什么问题 。

当然不排除下面这些特殊情况:

问题一:cpu负载高,IO负载低
史上最全的MySQL高性能优化实战总结!
问题二:IO负载高,cpu负载低
史上最全的MySQL高性能优化实战总结!
问题三:IO和cpu负载都很高

硬件不够了或sql存在问题

1.5 基础优化

1.5.1 优化思路

定位问题点:

硬件 --> 系统 --> 应用 --> 数据库 --> 架构(高可用、读写分离、分库分表)

处理方向

明确优化目标、性能和安全的折中、防患未然

1.5.2 硬件优化

主机方面:

史上最全的MySQL高性能优化实战总结!
cpu的选择:
史上最全的MySQL高性能优化实战总结!
内存的选择:
史上最全的MySQL高性能优化实战总结!
存储方面:
史上最全的MySQL高性能优化实战总结!
raid卡:主机raid卡选择:
史上最全的MySQL高性能优化实战总结!
网络设备方面:

使用流量支持更高的网络设备(交换机、路由器、网线、网卡、HBA卡)

注意:以上这些规划应该在初始设计系统时就应该考虑好。

1.5.3 服务器硬件优化
史上最全的MySQL高性能优化实战总结!
1.5.4 系统优化

Cpu:

基本不需要调整,在硬件选择方面下功夫即可。

内存:

基本不需要调整,在硬件选择方面下功夫即可。

SWAP:

MySQL尽量避免使用swap。阿里云的服务器中默认swap为0

IO :
史上最全的MySQL高性能优化实战总结!
史上最全的MySQL高性能优化实战总结!
这个参数决定了Linux是倾向于使用swap,还是倾向于释放文件系统cache。在内存紧张的情况下,数值越低越倾向于释放文件系统cache。当然,这个参数只能减少使用swap的概率,并不能避免Linux使用swap。

修改MySQL的配置参数innodb_flush_method,开启O_DIRECT模式。这种情况下,InnoDB的buffer pool会直接绕过文件系统cache来访问磁盘,但是redo log依旧会使用文件系统cache。值得注意的是,Redo log是覆写模式的,即使使用了文件系统的cache,也不会占用太多

IO调度策略
史上最全的MySQL高性能优化实战总结!
1.5.5 系统参数调整

Linux系统内核参数优化
史上最全的MySQL高性能优化实战总结!
1.5.6 应用优化

业务应用和数据库应用独立,防火墙:iptables、selinux等其他无用服务(关闭):

史上最全的MySQL高性能优化实战总结!
安装图形界面的服务器不要启动图形界面 runlevel 3,另外,思考将来我们的业务是否真的需要MySQL,还是使用其他种类的数据库。用数据库的最高境界就是不用数据库。

1.6 数据库优化

SQL优化方向:

执行计划、索引、SQL改写

架构优化方向:

高可用架构、高性能架构、分库分表

1.6.1 数据库参数优化

调整:

实例整体(高级优化,扩展)

史上最全的MySQL高性能优化实战总结!
连接层(基础优化)

设置合理的连接客户和连接方式
史上最全的MySQL高性能优化实战总结!

SQL层(基础优化)

query_cache_size: 查询缓存

OLAP类型数据库,需要重点加大此内存缓存.

但是一般不会超过GB.

对于经常被修改的数据,缓存会立马失效。

我们可以实用内存数据库(redis、memecache),替代他的功能。

1.6.2 存储引擎层(innodb基础优化参数)
史上最全的MySQL高性能优化实战总结!

欢迎工作一到五年的Java工程师朋友们加入Java爬坑之路:860113481

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

转载于:https://blog.51cto.com/13732225/2176642

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

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

相关文章

低功耗设计——基于UPF进行设计

UPF, 统一电源格式UPF(Unified Power Format)是新思(Synopsys)公司通用的电源格式,是一组标准的类Tcl 语言的集合,用来描述芯片设计中的低功耗意图(Low-Power Design Intent)。 使用UPF 的语言,可以描述供电…

用公众号获取 任意公众号文章列表 软件还是免费

用公众号获取 任意公众号文章列表 软件还是免费还不快点下载 下载 地址 https://pan.baidu.com/s/1jI44Wjs转载于:https://www.cnblogs.com/wx85437898/p/7488590.html

CentOS7时间设置问题

本地安装一个VMWare player虚拟机客户端,并安装了Linux CentOS7 Basic Web Server系统,时区在安装时已经选择了Asia/Shanghai,但是安装完成后,时间和当前外部的时间不一致,如下图 图一 图二 图三 后经搜索发现,由于未开…

关于Nand ECC 错误

Nand flash ECC数据错误怎么办? 我编译过kernel 当时选了ECC校验 启动以后报错 去掉了,就不报错了 所以我会先考虑是不是这个问题 一般来说,硬件ECC校验出错可能性比较小吧? 我啥也不懂 -----摘自网络经典文章:“LINU…

低功耗设计——功耗估算

根据在功耗分析的过程中是否有输入向量的提供,功耗估算方法可以分为仿真的方法(Simulative)和非仿真的方法(Non-simulative): 仿真的方法是根据用户所提供的大量输入向量来对电路进行模拟,利用…

uboot 与系统内核中 MTD分区的关系

分类: Nand 驱动 2011-11-06 23:48 705人阅读 评论(2) 收藏 举报 uboot 与系统内核中 MTD分区的关系: 分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,等等。 1:在内核…

Deep Learning(深度学习)学习笔记整理系列三

Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。 2)本文仅供学术交流&…

辗转相除法 求最大公约数和最小公倍数

# include<stdio.h> int main() { int a,b,c,x,y; printf("请输入两个正整数&#xff0c;用逗号间隔&#xff1a;"); scanf("%d,%d",&a,&b); xa; yb; if (a<b) { ca; ab;      //要保证 a>b bc; } while (b!0) { ca; ab; bc%b; …

Conformal ECO 流程介绍

之前听说过一句话&#xff0c;没有修过ECO的人生是不完整的。最近就给我整得再次完整了。。。。。。 最近赶项目&#xff0c;RTL freeze之后&#xff0c;后仿发现出了bug&#xff08;还好拦下来了&#xff0c;不然头更大&#xff09;&#xff0c;于是做了一次function ECO&…

最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件

最新天猫面试题&#xff08;含总结&#xff09;&#xff1a;线程池并发编程分布式设计中间件https://my.oschina.net/u/3892...

关于NAND flash的MTD分区与uboot中分区的理解 .

今天做内核移植&#xff0c;准备添加NAND flash的驱动&#xff0c;做到MTD分区时&#xff0c;想起在一本书上看到的一句话&#xff0c;说的是分区时每个区之间没有间隙&#xff0c;前一个区的结束地址是后一个区的起始地址。可是当我看我的开发板的教程时&#xff0c;分区如下&…

Zabbix discoverer processes more than 75% busy

原文发表于cu&#xff1a;2016-06-22 Zabbix discoverer processes more than 75% busy原因及处理。 一&#xff0e;现象 配置了discovery任务后&#xff0c;zabbix dashboard 告警如下&#xff1a; Zabbix discoverer processes more than 75% busy 二&#xff0e;原因 1. 配置…

Begin()

好&#xff0c;要开始在新的博客里写东西了&#xff0c;上一个博客的账号和密码都忘了... 我开通博客的申请里写&#xff0c;我博文的内容会以机器学习和控制算法的学习笔记为主。 那我写的估计是假的申请。 好吧&#xff0c;既然是这样写申请的一定程度上也是要兑现承诺的&…

图像紫边消除(depurple)

图像紫边广泛存在于目前的手机摄像头、数码相机、监控摄像头等数字成像系统所得图像中,当我们使用这些设备在逆光、大光圈等条件下拍摄时,所得图像的局部区域,特别是高反差区域(亮暗对比反差很大的图像区域,比如天空、灯管与物体相接的边缘)会比较容易观察到紫边,解决图…

Swift 性能相关

起初的疑问源自于「在 Swift 中的, Struct:Protocol 比 抽象类 好在哪里&#xff1f;」。但是找来找去都是 Swift 性能相关的东西。整理了点笔记&#xff0c;供大家可以参考一下。 一些疑问 在正题开始之前&#xff0c;不知道你是否有如下的疑问&#xff1a; 为什么说 Swift 相…

linux_NandFlash_driver_超详细分析 .

分类&#xff1a; Linux 驱动 Nand 驱动 2011-11-06 23:16 474人阅读 评论(0) 收藏 举报 今天学习了NandFlash的驱动&#xff0c;硬件操作非常简单&#xff0c;就是这个linux下的驱动比较复杂&#xff0c;主要还是MTD层的问题&#xff0c;用了一下午时间整理出来一份详细的分析…

HTTPS 路径配置

1: 首先安装 fiddlercertmaker.exe 文件2:Tools -> HTTPS 3: Connections 勾中Allow remote computer to connect转载于:https://www.cnblogs.com/eason-d/p/7492177.html

CMOS图像传感器——相位对焦

之前介绍了许多自动对焦的方案 自动对焦方法学习_沧海一升的博客-CSDN博客自动对焦的各类方法学习介绍https://blog.csdn.net/qq_21842097/article/details/121373263 在里面提到了遮蔽像素相位检测法,原理上算是相位检测法(Phase Detection Auto Focus,PDAF)的一种。…

51nod 1343 行列式的根

这题分块搞一搞&#xff0c;算到最后发现结果就是算矩阵J的行列式&#xff0c;要取模m&#xff0c;那个sign消掉了。 参考文献在这&#xff0c;欧几里德算法的应用&#xff0c;金斌 代码还是比较好写的&#xff0c;python代码 n,mmap(int,raw_input().split()) a[] for i in ra…

Spring Cloud Config 和Spring Cloud Bus实现配置中心

2019独角兽企业重金招聘Python工程师标准>>> Spring Cloud是很多组件的集合&#xff0c;Spring将常用的技术框架进行包装和整合&#xff0c;如mybatis zookeeper rabbitmq redis等等&#xff0c;还有一些科技公司贡献出来的一些经过生产环境验证的组件如奈飞公司贡献…