-
1.查询次数多且每次查询占用时间长的SQL 通常为pt-query-digest分析的前几个查询 2.IO大的SQL 注意pt-query-digest分析中的Rows examine项 3.未命中索引的SQL 注意pt-query-digest分析中的Rows examine和Row send 的对比 当Rows examine>>Row send 基本上是使用了索引扫描或者表扫描的方式来进行查询,需要进行优化查看全部
-
http://dev.mysql.com/doc/sakila/en/sakila-installation.html http://dev.mysql.com/doc/index-other.html查看全部
-
//mysql 数据库优化 项目中,优化mysql之前,首先要开启慢查询日志,在分析慢查询日志. 开启慢查询日志: show variables like 'slow%'; //查看慢查询状态 set global slow_query_log_file='/home/mysql/sql_log/mysql-slow.log'; //设置慢查询记录文件的路径 set global log_queries_not_using_indexes=on; //记录未使用索引的查询 set global long_query_time=1; //设置慢查询的时间 set global slow_query_log = on; //开启慢查询日志记录查看全部
-
1、重点优化执行次数多且占用的时间比较长的sql; 2、IO占用非常大的sql; 3、没有命中索引的sql;查看全部
-
table:表名; type:连接的类型,const、eq_reg、ref、range、index和ALL;const:主键、索引;eq_reg:主键、索引的范围查找;ref:连接的查找(join),range:索引的范围查找;index:索引的扫描; possible_keys:可能用到的索引; key:实际使用的索引; key_len:索引的长度,越短越好; ref:索引的哪一列被使用了,常数较好; rows:mysql认为必须检查的用来返回请求数据的行数; extra:using filesort、using temporary(常出现在使用order by时)时需要优化。查看全部
-
演示数据库说明: 使用MySQL提供的sakila数据库,可以通过以下URL获取这个演示数据库 http://dev.mysql.com/doc/index-other.html sakila数据库的表结构信息可以通过以下网站查看 http://dev.mysql.com/doc/sakila/en/sakila-installation.html 数据库基于MySQL5.5版本,不同MySQL版本的优化器有一定的差别。查看全部
-
表的垂直拆分的原则 所谓垂直拆分,就是把原来一个有很多列的表拆分成多个表解决表的宽度问题,通常拆分原则如下: 1、把不常用的字段单独存放到一个表中 2、把大字段独立存放到一个表中 3、把经常一起使用的字段放到一起 当表的宽度过宽的时候,我们需要对表进行垂直拆分,具体的建议如下(原则上是人以群分,列以表分):一表变多表,物理上不在一起,逻辑上是在一起的!查看全部
-
选择合适的索引列 1.在where,group by,order by,on从句中出现的列 2.索引字段越小越好(因为数据库的存储单位是页,一页中能存下的数据越多越好 ) 3.离散度大得列放在联合索引前面 select count(distinct customer_id), count(distinct staff_id) from payment;查看全部
-
table:表名;<br> type:连接的类型,const、eq_reg、ref、range、index和ALL;<br> const:主键、索引;eq_reg:主键、索引的范围查找;ref:连接的查找(join),range:索引的范围查找;index:索引的扫描;All:表扫描<br> possible_keys:可能用到的索引;<br> key:实际使用的索引;<br> key_len:索引的长度,越短越好;因为mysql每次的读取都是以页为单位,一页中的索引越大,查询的效率就越高<br> ref:索引的哪一列被使用了,常数较好;<br> rows:mysql认为必须检查的用来返回请求数据的行数;查看全部
-
group by可能会出现临时表(Using temporary),文件排序(Using filesort)等,影响效率。 可以通过关联的子查询,来避免产生临时表和文件排序,可以节省io 改写前 select actor.first_name,actor.last_name,count(*) from sakila.film_actor inner join sakila.actor using(actor_id) group by film_actor.actor_id; 改写后 select actor.first_name,actor.last_name,c.cnt from sakila.actor inner join( select actor_id,count(*) as cnt from sakila.film_actor group by actor_id )as c using(actor_id);查看全部
-
mysql官方演示数据说明: dev.mysql.com/doc/index-other.html dev.mysql.com/doc/sakila/en/sakila-installation.html查看全部
-
explain 返回各列的含义 extra列需要注意的返回值 Using filesort:看到这个的时候,查询就需要优化了 Using temporary 看到这个的时候,也需要优化,查看全部
-
mysql> explain select customer_id,first_name,last_name from customer; +----+-------------+----------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+----------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | customer | ALL | NULL | NULL | NULL | NULL | 599 | NULL | +----+-------------+----------+------+---------------+------+---------+------+------+-------+ 1 row in set (0.00 sec)查看全部
-
所用时间占比高,关注优化之 扫描行数多,占用io大 扫描的行数远远大于发送的行数的话,索引优化查看全部
-
数据库优化的几个方面查看全部
举报
0/150
提交
取消