Mysql的性能优化方案
MySQL的性能优化主要分为以下四个方面
设计: 存储引擎、字段类型、范式与逆范式
功能: 索引、缓存、分库分表、数据库连接池
架构上: 读写分离、集群、均衡负载
合理的SQL: 测试、优化查询语句、Explain查询执行计划、慢日志
1.硬件层面的优化
从硬件层面上看,影响 mysql 的性能因素,包括 磁盘读写速度、网络带宽、内存大小
2.架构设计
MySQL 是一个磁盘IO访问,非常频繁的关系型数据库,在高并发和高性能的场景中,MySQL数据库必然会承受巨大的并发压力,在此时我们的优化的方式,主要可以分为几个部分:
搭建
MySQL主从集群,单个MySQL服务容易去导致单点故障,一旦服务宕机,将会导致依赖MySQL数据库的应用,全部无法响应,主从集群或者主主集群,都可以去保证服务的高可用性。读写分离设计,在读多写少的场景中,通过读写分离的方案,可以去避免读写冲突,导致的性能问题。
引入分库分表的机制,通过分库可以降低单个服务器一个
IO压力。通过分表的方式,降低单表数据量,从而去提升sql的查询效率。针对热点数据,可以引入更为高效的分布式数据库,如
Redis、MongoDB等,他们可以很好的减轻MySQL的访问压力,同时还能提升数据的检索性能
3. 表的设计
3.1 字段的选择
尽可能小(占用存储空间少)、尽可能定长(占用存储空间固定)、尽可能使用整数
3.2 范式与逆范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。
第一范式1NF,原子性,确保每列保持原子性,所有字段值都是不可分解的原子值
第二范式2NF,消除部分依赖,主键列与非主键列遵循完全函数依赖关系,确保表中的每列都和主键相关
第三范式3NF,消除传递依赖,非主键列之间没有传递函数依赖关系索引,确保每列都和主键列直接相关,而不是间接相关
逆范式是指打破范式,通过增加冗余或重复的数据来提高数据库的性能
3.3 拆表
垂直拆分

垂直拆分应该注意的点:
不经常使用的字段放在一张表上
经常组合查询的字段放在一张表上
text等大字段拆分出来,放在一张表里
水平拆分

水平拆分时需要注意的点:
一般使用取模的方法进行表的拆分。也可以根据年份、地区等实际业务逻辑拆分。
主键应该去掉
auto_increment的设置
3.配置优化
- MySQL 5.7版本默认的最大连接数是151个,这个值可以再my.cnf中去修改。
4.SQL的执行优化
慢SQL的定位和排查,我们可以通过慢查询日志和慢查询日志工具分析,得到有问题的SQL列表
执行计划分析,针对慢SQL我们可以使用关键字explain来去查看当前sql的执行计划,可重点关注type,key,rows,filterd等字段,从而去定位该SQL执行慢的根本原因,再去有的放矢的进行优化
使用show profile工具,这个工具是MySQL提供的可以用来分析当前会话中SQL语句资源消耗情况的工具,可以用于SQL调优的测量,在当前会话中,默认情况下,show profile是关闭状态,打开以后会保存,最近15次的运行结果,针对运行慢的SQL通过profile工具进行详细分析,可以得到SQL执行过程中所有资源的开销情况,比如io开销,cpu开销,内存开销
参考文献
https://blog.csdn.net/weixin_44161207/article/details/123438831
Mysql的性能优化方案的更多相关文章
- mysql 性能优化方案
网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
- mysql 性能优化方案1
网 上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
- mysql 性能优化方案 (转)
网 上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
- 老李分享:MySql的insert语句的性能优化方案
老李分享:MySql的insert语句的性能优化方案 性能优化一直是测试人员比较感兴趣的内容,poptest在培训学员的时候也加大了性能测试调优的方面的内容,而性能优化需要经验的积累,经验的积累依 ...
- Redmine性能优化方案
近来公司redmine服务器表现很糟糕,在16核,64GRAM的机器上,压测结果竟然只有每秒5~7个请求,部分页面一个都出不来. 以下是我对Redmine性能优化方案: redmine服务器性能问题排 ...
- DedeCMS数据负载性能优化方案简单几招让你提速N倍
前文介绍了DedeCMS栏目列表页实现完美分页的方法,避免了大部分重复栏目标题对搜索引擎的影响,对SEO更有利.今天,分享一下DedeCMS数据负载性能优化的方法. 接触织梦也有三年多时间了,对它可谓 ...
- 优秀后端架构师必会知识:史上最全MySQL大表优化方案总结
本文原作者“ manong”,原创发表于segmentfault,原文链接:segmentfault.com/a/1190000006158186 1.引言 MySQL作为开源技术的代表作之一,是 ...
- MySQL 大表优化方案(长文)
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型 ...
- 到底该不该使用存储过程 MySQL查询性能优化一则
到底该不该使用存储过程 看到<阿里巴巴java编码规范>有这样一条 关于这条规范,我说说我个人的看法 用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术牛逼,就视 ...
- DB-MySQL:MySQL 语句性能优化
ylbtech-DB-MySQL:MySQL 语句性能优化 1.返回顶部 1. MySQL概述1.数据库设计 3范式2.数据库分表分库---会员系统() 水平分割(分页如何查询)MyChar .垂直3 ...
随机推荐
- Excel操作技巧
命令 获取行号ROW(D2).COLOUM(D2) 快捷键 alt+=求和:alt+f1生成柱形图:alt+回车强制换行:alt+178输入平方:alt+179输入立方: shitf+大十字光标 换位 ...
- 接口自动化库-apist
前言 目前很多公司用jmeter或者RF框架来实现接口自动化,确实是可以实现,但不利于CI/CD. 为了方便后续的可拓展性.可维护性.可复用性,项目leader在技术选型的时候应当以趋势.主流的为主, ...
- JZOJ 3213. 【SDOI2013】直径
题目 思路 树的直径很好求,两遍 \(dfs\),记下两个端点 然后很显然所有直径经过的边必然在我们求出的这条直线上 那么我们只要判断一下一条直径上的边是不是答案 假设当前边为 \(i\) 那么把 \ ...
- CF1311F Moving Points
题目传送门 思路 给出一种不需要脑子的四颗树状数组解法. 这四颗树状数组分别为:一颗维护负数,一颗维护负数个数,一颗维护正数,一颗维护正数个数. 首先考虑没有速度该怎么求. 不妨先按 \(x_i\) ...
- 电子辅助的个体化严密控制策略比常规方法更有效地帮助早期RA实现全面控制病情[EULAR2015_THU0122]
电子辅助的个体化严密控制策略比常规方法更有效地帮助早期RA实现全面控制病情 THU0122 A TAILORED TELEMONITORING TIGHT CONTROL STRATEGY FOR P ...
- ubuntu 启动脚本变化
ubuntu-16.10 开始不再使用initd管理系统,改用systemd- 快速看了 systemd 的使用方法,发现改动有点大, 包括用 systemctl 命令来替换了 service 和 c ...
- .NET 中创建录音机和播放器应用
前言 在本博客中,你将了解如何在 .NET MAUI 中开发录音机和播放器.音频播放器将录制和播放音频文件.此应用程序可以在Android和iOS上部署和使用. 预览 以下是该录音机和播放录音的应用程 ...
- 基于线程的并行-Python 并行编程学习笔记(一)
前言 最近写一些模拟集群智能的算法,虽然机制简单,但是随着个体的增加,设计的计算量就比较大了,尤其是加上matplotlib进行动态展示,使得运算量骤增,看着画面也比较卡.之前想把算法转化成c++代码 ...
- C#中播放mp3格式的音乐代码
在上课的时候需要播放音乐,然后C#语言自带的是播放wav格式的音乐,在网上搜了一下,有大佬写成了类封装好了,直接拿过来用就行了 using System; using System.Collectio ...
- Java虚拟机中 -XX:+PrintFlagsFinal与XX:+PrintCommandLineFlags 中MaxHeapSize的值不同的原因
size_t CollectorPolicy::compute_heap_alignment() { // The card marking array and the offset arrays f ...