mysql性能优化其中一部分小结

mysql性能优化

如何发现有问题的SQL?

使用MySQL慢差日志对有效率问题的SQL进行监控

下面就是与慢查询相关的sql语句:

show variables like ‘show_query_log‘ //用这个看一下是否开启了慢查日志

show variables like ‘%log%‘;//关于sql的所有参数

以61数据库为例

set global show_query_log_file = ‘/home/mysql/sql_log/mysql-slow.log‘ //指慢查询文件的存储位置

set global log_queries_not_using_indexes = on; //我们是否将没有使用索引的sql记录到慢查询日志中,通常情况下对数据库优化过程中主要是优化表的索引和查询的使用方式,这样记录下来sql以备以后进行优化

set global long_query_time =1;//超过多少秒之后的记录在慢查询日志中,大于1秒的查0.01秒一般

慢查日志的分析工具

mysqldumpslow

pt-query-digest

使用explain查询sql的执行计划

type:从最好到最差

const:表示常数查找,一般是主键或者唯一索引进行查找

eq_reg:表示范围查找一般是主键或者唯一索引进行查找

ref:常用于连接的查询中,在一个表中基于某个表的查找

range:索引的范围查找

index:索引的扫描

ALL:表扫描

注:key_len:索引的长度越小越好,因为mysql的读取都是以页为单位的,而一页中如果存取的索引越大,那他的查询效率就越高

举几个例子

以上这个语句可以看出是全表扫描,这样数据量特别大的时候,而且查询频率特别高的时候,那这个sqlio性能就特别的高,就会拖慢着整个服务器的io效率,就增加了服务器不稳定的因素,通常这种情况下就可以在payment_date字段上增加索引,然后再看一下执行计划

select tables optimized away 意思是并不是进行实际的查询,通过索引就可以知道sql的执行结果了,因为索引是顺序排列的,通过统计最后一条数据的值是什么样子的,也就是不需要表的操作就可以直接知道,这样就优化了sql的执行效率,减少了io操作,其实这个索引就可以称为覆盖索引,意思就是通过索引信息就可以查询到语句的结果

我是想差2006和2007年分别的电影熟,现在是合在一起了,所以是错误的,

正确的写法

说到count,通常我们用count(*) 或者 count(字段名) 这两种方式,哪这两种方式到底哪种好呢,举个例子

就是count(*)是包含为null的行数

count(id)不包括

利用count的特性如果说发行年份是2006就给它计数,如果不是2006就返回null值,而这个null值在count中是不会计数的,

原文地址:https://www.cnblogs.com/weiluoyan/p/8184400.html

时间: 2024-10-01 19:58:36

mysql性能优化其中一部分小结的相关文章

mysql性能优化总结1

MySQL性能优化总结 一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件.首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表的数据(.MYD)和索引数据(.MYI).每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存

MySQL性能优化(二)

1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样) insert into t3 select * from t1; --t1的数据全部拿过来,注意是表结构一致才select* ,否则选择相应的的字段列插入 create table t1( id int unsigned not null auto_increment primary key,

mysql 性能优化常见命令

mysql 性能优化常见命令: 一: 当发现mysql程序运行缓慢时,在排除sql主机问题之后,可以尝试在schema,table,和sql上进一步进行考查: 1:mysql> show full processlist; +----+------+-----------+------+---------+------+-------+-----------------------+-----------+---------------+ | Id | User | Host | db | Co

Mysql性能优化:什么是索引下推?

原文:Mysql性能优化:什么是索引下推? 导读 本文章始发于本人公众号:码猿技术专栏,原创不易,谢谢关注推荐. 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询. 在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引)进行查询时,存储引擎通过索引检索到数据,然后返回给MySQL服务器,服务器然后判断数据是否符合条件 . 在使用ICP的情况下,如果存在某些被索引的列的判断条件时,MySQL服务器将这一部分判断条件

Mysql性能优化:如何给字符串加索引?

原文:Mysql性能优化:如何给字符串加索引? 导读 现代大部分的登录系统都支持邮箱.手机号码登录两种方式,那么如何在邮箱或者手机号码这个字符串上建立索引才能保证性能最佳呢? 今天这篇文章就来探讨一下在Mysql中如何给一个字符串加索引才能达到性能最佳. 本文首发于作者的微信公众号[码猿技术专栏],原创不易,喜欢的朋友支持一下,谢谢!!! 陈某将会从什么是前缀索引.前缀索引和普通索引的比较.如何建丽最佳性能的前缀索引.前缀索引对覆盖索引的影响这几段来讲. 前缀索引 顾名思义,对于列值较长,比如B

MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解.MySQL性能优化 my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like

MySQL 性能优化的最佳20多条经验分享

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的                    事,而这更是我们程序员需要去关注的事情. 当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语                句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的M

MySQL性能优化的最佳20+条经验

http://www.pythonclub.org/mysql/optimize-20-tips 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存

MySQL · 性能优化 · MySQL常见SQL错误用法

前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况.阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题.现将<ApsaraDB专家诊断报告>中出现的部分常见SQL问题总结如下,供大家参考. 常见SQL错误用法 1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如