一、MySQL数据库的优化目标、基本原则:

1、优化目标:

MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,无论是索引优化、还是表结构优化,参数优化,最后都可以归纳到这这两个分类中:

(1)减少 I/O 次数:

I/O是数据库最容易瓶颈的地方,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是效果最明显的优化手段。

(2)降低 CPU 计算:

除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by,group by,distinct … 都是消耗 CPU 的大户(这些操作基本上都是 CPU 处理内存中的数据比较运算)。当我们的 IO 优化做到一定阶段之后,降低 CPU 计算也就成为了我们 SQL 优化的重要目标。

2、基本原则:

(1)优先优化高并发的 SQL,而不是执行频率低某些“大”SQL:

对于破坏性来说,高并发的 SQL 总是会比低频率的 SQL 来得大,因为高并发的 SQL 一旦出现问题,甚至不会给我们任何喘息的机会就会将系统压跨。而对于一些虽然需要消耗大量 IO 而且响应很慢的 SQL,由于频率低,即使遇到,最多就是让整个系统响应慢一点,但至少可能撑一会儿,让我们有缓冲的机会。

(2)从全局出发优化,而不是片面调整:

SQL 优化不能是单独针对某一个进行,而应充分考虑系统中所有的 SQL,尤其是在通过调整索引优化 SQL 的执行计划的时候,千万不能顾此失彼,因小失大。

(3)尽可能对每一条运行在数据库中的SQL进行 explain:

优化 SQL,需要做到心中有数,知道 SQL 的执行计划才能判断是否有优化余地,才能判断是否存在执行计划问题。在对数据库中运行的 SQL 进行了一段时间的优化之后,很明显的问题 SQL 可能已经很少了,大多都需要去发掘,这时候就需要进行大量的 explain 操作收集执行计划,并判断是否需要进行优化。

二、定位分析SQL语句的性能瓶颈:

1、通过show status 命令了解各种SQL的执行效率:

show [session | global] status;

可以根据需要加上参数来显示session级(当前连接,默认)和global级(自数据库上次启动至今)的统计结果。

show status like 'Com_%';  ---显示当前连接所有统计参数的值。

Com_xxx表示每个xxx语句执行的次数,通常需要注意的是下面几个参数:Com_select/Com_insert/Com_update/Com_delete。

2、定位执行效率较低的SQL语句:

(1)通过show processlist命令实时查看当前SQL的执行情况;

(2)通过慢查询日志定位出现的问题:《慢查询日志分析》:https://blog.csdn.net/a745233700/article/details/84350662

3、通过explain分析慢SQL的执行计划:《explain查看执行计划》:https://blog.csdn.net/a745233700/article/details/84335453

4、通过show profile 分析SQL的具体耗时瓶颈:《使用show profile分析SQL的资源消耗》:https://blog.csdn.net/a745233700/article/details/84345344

通过secect @have_profiling命令能够看到当前MySQL是否支持profile;

通过show profiles我们能够更清楚了解SQL执行的过程;

通过show profile for query我们能看到执行过程中线程的每个状态和消耗的时间。

5、更多查看数据库性能的命令可以阅读这篇文章:https://blog.csdn.net/a745233700/article/details/84708157

三、数据库的优化方法:

该部分主要总结所有数据库优化的方法,每种方法的详情可以进入对应的文章进行阅读

1、设计符合范式的数据库:https://blog.csdn.net/a745233700/article/details/80933854

2、选择合适的存储引擎:https://blog.csdn.net/a745233700/article/details/80793894

3、SQL表结构、字段优化:https://blog.csdn.net/a745233700/article/details/84405087

4、SQL语句优化与索引优化:https://blog.csdn.net/a745233700/article/details/84455241

5、读写分离:主数据库负责写操作,从数据库负责读操作。https://blog.csdn.net/a745233700/article/details/85263543

6、分库分表:垂直切分与水平切分。https://blog.csdn.net/a745233700/article/details/85244436

7、分区:将表的数据按照特定的规则放在不同的分区,提高磁盘的IO效率,提高数据库的性能。https://blog.csdn.net/a745233700/article/details/85250173

8、数据库参数优化:IO参数、CPU参数:https://blog.csdn.net/a745233700/article/details/114506553

9、硬件配置升级

10、数据库集群

MySQL数据库的性能优化总结相关推荐

  1. MySQL数据库访问性能优化

    MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...

  2. mysql获取查询策略语句_MySQL数据库查询性能优化策略

    优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 通过对查询语句的分析,可以了解查询语句的执行 ...

  3. MySQL数据库的性能的影响分析及优化

    MySQL数据库的性能的影响 一. 服务器的硬件的限制 二. 服务器所使用的操作系统 三. 服务器的所配置的参数设置不同 四. 数据库存储引擎的选择 五. 数据库的参数配置的不同 六. (重点)数据库 ...

  4. 高并发大流量专题---10、MySQL数据库层的优化

    高并发大流量专题---10.MySQL数据库层的优化 一.总结 一句话总结: mysql先考虑做分布式缓存,过了缓存后就做mysql数据库层面的优化 1.mysql数据库层的优化的前面一层是什么? 数 ...

  5. MySQL数据库SQL层级优化

    MySQL数据库SQL层级优化 本篇主涉及MySQL SQL Statements层面的优化. 首先,推荐一个链接为万物之始:http://dev.mysql.com/doc/refman/5.0/e ...

  6. MySQL模糊查询性能优化

    一.背景 我们经常在数据库中使用 LIKE 操作符来完成对数据的模糊搜索,LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式. 如果需要查找客户表中所有姓氏是"孙"的数据 ...

  7. 高性能Mysql之查询性能优化

    高性能Mysql之查询性能优化 为什么查询速度会慢 慢查询基础:优化数据访问 重构查询的方式 MySQL查询优化器的局限性 优化特定类型的查询 即使我们设计了一个最优的库表结构,建好了最好的索引,如果 ...

  8. MySQL数据库与SQL优化

    一.MySQL 数据库与 SQL 优化 1.结构图 二.MySQL 数据库引擎简介 1.ISAM(IndexedSequentialAccessMethod)     ISAM 是一个定义明确且历经时 ...

  9. 面向程序员的数据库访问性能优化法则

    面向程序员的数据库访问性能优化法则 特别说明: 1.   本文只是面对数据库应用开发的程序员,不适合专业 DBA , DBA 在数据库性能优化方面需要了解更多的知识: 2.   本文许多示例及概念是基 ...

最新文章

  1. uva 610(割边)
  2. FedML联邦机器学习框架正式开源,助力算法开发和性能比较
  3. Laravel 配置
  4. Linux系统解决SSH登录慢的详细步骤
  5. 《JAVA与模式》之解释器模式
  6. 使用GDB进行调试 -- 1 应用场景
  7. python3.7保存不了_Python3.7 traceback捕获打印和保存异常
  8. kafka传递文件_是否可以使用Kafka传输文件?
  9. Ubuntu下PHP开发环境LAMP搭建
  10. 时代变迁,台湾的这个优势产业即将被中国大陆取代
  11. Html5 postmessage 子父窗口传值
  12. CANoe软件使用(一)——软件界面介绍
  13. 情人节脱单必备,程序员如何花式表白?
  14. 整理2008-2017年的所有上市公司海外收入数据
  15. excel表格显示无法连接服务器,打开工作簿时Excel总是提示包含无法更新的链接?...
  16. log4,log4net,Log4配置,log4net使用实例,.net中使用LOG4输出日志,LOG4纪录日志
  17. 后缀自动机+DP BZOJ 3238 差异
  18. 命令行错误提示--系统找不到指定的文件
  19. java设计模式知识总结(23种)
  20. 工业智能网关在物联网系统中扮演什么角色?

热门文章

  1. tornado 模板
  2. 2019.4.27 人工智能培训安装工作记录
  3. CVPR 2021 | Facebook提出FP-NAS:搜索速度更快、分类精度更高、性能更好
  4. 基于GRU和am-softmax的句子相似度模型 | 附代码实现
  5. GAN做图像翻译的一点总结
  6. 【百度飞浆】YOLO系列目标检测算法详解
  7. 打印Show Atend and Tell编码器的优化器
  8. java putnextentry_Java对zip格式压缩和解压缩
  9. python读取excel送到网页_python怎么读取excel!怎么用python将excel数据写入网页中
  10. googlehelper手机版ios_二次元漫画控iOS苹果手机版下载v1.0.0下载|免费二次元漫画控iOS苹果手机版下载绿色版...