MySQL系列:性能优化
1. 优化简介
MySQL性能优化包括:查询优化、数据库结构优化、MySQL服务器优化等。
2. 查询优化
2.1 分析查询语句
MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句。
EXPLAIN语句的基本语法:
EXPLAIN [EXTENDED] SELECT select_options
其中,EXTENDED用于EXPLAIN产生附加信息,select_options是SELECT语句的查询选项,包括FROM WHERE子句等。
mysql> EXPLAIN SELECT * FROM product; +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+ | 1 | SIMPLE | product | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | NULL | +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+
其中,
id:SELECT识别符,SELECT的查询序列号。
select_type:SELECT语句的类型。
取值包括:
(1)SIMPLE:简单查询,不包括连接查询和子查询
(2)PRIMARY:主查询,或最外层的查询语句
(3)UNION:连接查询的第2个或后面的查询语句
(4)DEPENDENT UNION:连接查询中的第2个或后面的SELECT语句,取决于外面的查询
(5)UNION RESULT:连接查询的结果
(6)SUBQUERY:子查询中的第1个SELECT语句
(7)DEPENDENT SUBQUERY:子查询中的第1个SELECT,取决于外面的查询
(8)DERIVED:导出表的SELECT(FROM子句的子查询)
table:查询的表
type:表的连接类型
表的连接类型从最佳到最差顺序:
(1)system:该表是仅有一行的系统表,是const连接类型的一个特例。
(2)const:数据表最多只有一个匹配行,const表查询速度很快,因为只读取一次。
const用于使用常量值比较PRIMARY KEY或UNIQUE索引场合。
mysql> EXPLAIN SELECT * FROM product WHERE id = 1; +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+ | 1 | SIMPLE | product | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 | 100 | NULL | +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
(3)eq_ref:用在一个索引的所有部分被连接使用并且索引是UNIQUE或PRIMARY KEY。
eq_ref可以用于使用"="操作符比较带索引的列。比较值为常量或一个在该表前面所读取的列的表达式。
mysql> EXPLAIN SELECT-> product.*-> FROM-> product-> INNER JOIN category ON product.category_id = category.id; +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+ | 1 | SIMPLE | product | NULL | ALL | NULL | NULL | NULL | NULL | 118 | 100 | Using where | | 1 | SIMPLE | category | NULL | eq_ref | PRIMARY | PRIMARY | 4 | db.product.category_id | 1 | 100 | Using index | +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+
转载于:https://www.cnblogs.com/libingql/p/8669150.html
MySQL系列:性能优化相关推荐
- DBA很忙—MySQL的性能优化及自动化运维实践
作者:王辰 来自:高效运维(ID:greatops) DBA的日常工作 首先,我们来看看DBA的具体工作,我觉得 DBA 真的很忙:备份和恢复.监控状态.集群搭建与扩容.数据迁移和高可用,这是我们 D ...
- MySQL数据库性能优化之一
MySQL数据库性能优化需要考虑的几个方面: 1.sql语句及索引优化 2.数据库结构优化 3.系统配置优化 4.硬件优化 转载于:https://blog.51cto.com/davidlinux/ ...
- mysql 改表面_MySQL_解析MySQL数据库性能优化的六大技巧,数据库表表面上存在索引和防 - phpStudy...
解析MySQL数据库性能优化的六大技巧 数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员 ...
- 淘宝内部分享:MySQL MariaDB性能优化
淘宝内部分享:MySQL & MariaDB性能优化 摘要:MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,必须进行不断的优化,而优化是一个复杂的任务, ...
- MySQL主从复制性能优化
MySQL主从复制性能优化 MySQL的主从复制的基本原理是从库连接到主库,主库生成一个主库DUMP线程,该DUMP线程的主要任务是 一直挖掘binlog日志,然后发送到从库的IO线程,IO线程接收到 ...
- #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
Linux + JVM + Mysql高级性能优化课程 课程名称: Linux + JVM + Mysql高级性能优化 QQ群: 243242580(小白.菜鸟勿进)跟Java.M ...
- MySQL 数据库性能优化之SQL优化
2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日 发布者: OurMySQL 来源:简朝阳 ...
- MySQL数据库性能优化的关键参数(转)
我们在进行数据库管理和开发中经常会遇到性能问题,这就涉及到MySQL的性能优化.通过在网络上查找资料和笔者自己的尝试,我认为以下系统参数是比较关键的: 关键参数一:back_log 要求 MySQL ...
- MySQL数据库性能优化史诗级大总结
点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好 ...
- MySQL索引性能优化
01.MySQL:性能优化方案 在应用开发的过程中,由于前期数据量少,开发人员编写的SQL语句或者数据库整体解决方案都更重视在功能上的实现,但是当应用系统正式上线后,随着生成数据量的急剧增长,很多SQ ...
最新文章
- [20170420]关于延迟块清除3.txt
- vue中slot(插槽)详解,slot、slot-scope和v-slot
- JDK内置工具--jconsole
- jQuery实现星星评分功能
- php手机网站底部导航代码,jQuery微信手机端底部弹出导航菜单列表代码
- [Linux] LD_LIBRARY_PATH
- gdb调试Python进程
- “实时SPC软件”的“实时”性指什么?一探究竟!
- VS2013+简单稀疏光束调整库SSBA配置(64位编译)
- python简单的购物程序代码打折_Python进阶之路——简单购物代码
- 51Nod-1183-编辑距离
- 【C++】关于日历编程的一点思考
- springboot无法打开 jsp 页面变成下载解决办法
- DOS命令/批处理文件大全
- p牛java安全漫谈学习笔记(2)_反序列化与urldns链(基础)
- Win11新电脑开机跳过联网解决方法
- OSG笔记一:在Win7、VS2010下配置OSG3.4
- 19n20c的参数_LM2587S-12NSC
- jQuery mobile插件基础知识笔记
- vue导出table数据为zip压缩文件(学习篇)
热门文章
- Java 第27章 JDBC
- 再谈访问修饰符——读《你必须知道的.net》
- hdu4846 最大子正方形(dp)
- hdu4665 DFS
- codeforces 229C
- 【错误记录】Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )
- 【Android 逆向】GDA 逆向工具安装 ( GDA 下载 | GDA 简介 | 运行 GDA 分析 APK 文件 )
- 【C 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )
- 【Flutter】Flutter 混合开发 ( 混合开发中 Flutter 的 热重启 / 热加载 )
- 【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )