当前位置:   article > 正文

MySQL数据库优化看这一篇就够了(最全干货篇)_mysql 优化

mysql 优化

当面试官让你聊聊MySQL数据库性能优化,你还是只能回答优化sql,建索引吗?让我们看看还可以从哪些方面聊聊吧。其实你还可以从网速、数据量、数据库日志、内存等问题、硬件配置,当前占用资源、硬盘碎片或索引碎片等等诸多方面分析聊聊。

一、MySQL 主备切换以及读写分离

首先你要知道MySQL 主备切换以及读写分离是大方向上的数据库性能优化的重要手段。是架构层面的优化垂直拆分、水平拆分。

顺便提一下数据表设计的规范程度称之为范式。三大范式

  • 1NF:列不能再拆分
  • 2NF:所有的属性都依赖于主键
  • 3NF:所有的属性都直接依赖于主键(消除传递依赖)

更多内容可参看:MySQL 主备切换以及读写分离详解

思考问题:
“分表分库”(用什么策略分表分库?)
“主从分离”(用什么中间件?)

二、SQL优化

这里提及的SQL优化内容包括sql语句的优化、慢查询日志、EXPLAIN 执行计划分析等。

1、如何定位低效率的SQL语句-慢查询日志?EXPLAIN 执行计划怎么分析?

传送门:MySQL慢查询是怎么回事

2、sql语句优化常用的方法有哪些?

传送门:sql优化常用的方法

3、如何优化索引?优化CRUD操作?优化分页?

传送门:MySQL索引及索引优化、索引失效

通过慢日志查询可以知道哪些SQL语句执行效率低下,通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态。

4、通过show profiles和show profile for query查看执行状态

MySQL从5.0.37开始支持剖面系统来帮助用户了解SQL执行性能的细节,一般用于会话级,用于收集SQL语句的资源使用情况。

1)可以通过下面的方式来查看MySQL是否支持和开启了剖面系统:

select @@have_profiling;--YES支持
select @@profiling;--1开启
  • 1
  • 2



2)如果没有开启剖面系统,可以通过下面的SQL来打开它。

set profiling=1;
  • 1

3)接下来就可以通过剖面系统来了解SQL的执行性能,例如:

select count(*) from test;--执行SQL语句
show profiles;--通过show profiles查看开启了profiling后的所有sql语句的id和消耗的时间
show profile for query 1;-- 注:此处的1为上一步查询结果显示的query_id值。
show profile cpu,source for query 1;--查看SQL语句的CPU及资源情况
  • 1
  • 2
  • 3
  • 4


三、配置优化

1、show variables查看MySQL服务器配置参数
2、show status查看MySQL服务器运行状态值
具体可以查看和调整那些参数配置呢?传送门:数据库优化之常用的show variables、show status配置优化

设置要根据自己的实际情况来设置,如果设置的值不在合理的范围内,并不是设置越大越好,可能设置的数值太大体现不出优化效果,反而造成系统的swap空间被占用,导致操作系统变慢,降低sql查询性能。

MySQL5.7及以后版本,改参数是动态的,修改后,无需重启MySQL,但是低版本,静态的,修改后,需要重启MySQL。

四、碎片整理优化

传送门:数据库优化之常用的show table status及ALTER TABLE 重建表

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/421303
推荐阅读
相关标签
  

闽ICP备14008679号