MySQL优化基础技巧

SQL优化基础

识别性能问题

当确定不存在物理系统资源瓶颈之后,就应该把注意力转向MySQL数据库的优化上.

寻找运行缓慢的SQL语句

使用 SHOW FULL PROCESSLIST 命令可以查看有哪些线程在运行.观察time的大小可以找出耗时较大的sql语句,对这个语句进行多次重复执行排除可能是由于锁定或者系统瓶颈等其他因素导致的个别现象.

生成查询执行计划(QEP,query execution plan)

QEP决定了mysql从底层存储引擎中获取信息的方式.在Select语句前加上EXPLAIN关键字前缀可以查看QEP.

不应该做的事

千万不要随意添加索引.当使用alter添加索引时,由于alter语句是阻塞操作,如果表数据很大会很耗时,如果这张表有多个索引的话性能开销更大.

正确的方式

在添加索引之前,首先验证 表 现有的结构,然后确认表的大小.
使用 show table status like '表名’可以查看表大小.

基本的分析命令

EXPLAIN 命令

explain可以查看sql语句的QEP.比如:
explain select user,password where user like ‘r%’.
有两个关键字可以和EXPLAIN一起使用,分别是:partitions和extended.

EXPLAIN PARTITIONS 命令

EXPLAIN命令的关键字PARTITIONS关键字对用于满足在partitions列中的查询的特定表分区提供附加信息.
在这里插入图片描述

EXPLAIN EXTENDED 命令

提供额外的filtered列
通过这个命令我们可以了解到一个显然存在的索引最后却没有被用到的原因是输出结果不是由explain extended决定,而是由后面执行的show warning产生,
在这里插入图片描述

在这里插入图片描述

SHOW CREATE TABLE 命令

该命令告诉用户如何用准确的语法来重新创建数据库表.
在这里插入图片描述
mysql dump工具能够快速生成用户模式或数据库实例中所有表的定义.

SHOW INDEXES 命令

查看索引信息,这些信息包括索引的类型和当前报告的mysql索引的基数
在这里插入图片描述
Cardinality列的值代表在索引中每一列唯一值的数量的估计值.

SHOW TABLE STATUS 命令

该命令可以查看数据库表的底层大小以及表结构,包括存储引擎类型,版本,数据和索引大小,行的平均长度以及行数.
在这里插入图片描述
返回值的准确度取决于数据库使用的存储引擎.例如如果使用MyISAM,MEMORY,ARCHIVE或BLACKHOLE,那么行的平均长度和行数都是精确值,如果是innoDB则上述值都是估计值.

SHOW STATUS 命令

该命令可以用来查看MySQL服务器的当前内部状态信息.这些信息是非常重要的,可以从全局角度帮助用户确定MySQL服务器的负载的各种指标.
在这里插入图片描述

SHOW VARIABLES 命令

该命令用来查看MySQL系统变量的当前值,tmp_table_size限制了内部创建的临时表的最大内存使用量.,通过set命令动态的改动当前会话或特殊设置的全局变量的值可以改变sql语句性能.
当没有指定show variables 命令的范围时,默认session范围内执行.
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值