1.运用explain语句去检察剖析效果
如
explain select * from test1 where id=1;
会涌现:
id selecttype table type possible_keys key key_len ref rows extra各列。
个中,
type=const示意经由历程索引一次就找到了;
key=primary的话,示意运用了主键;
type=all,示意为全表扫描;
key=null示意没用到索引。type=ref,由于这时候认为是多个婚配行,在团结查询中,平常为REF。
2.MYSQL中的组合索引
假定表有id,key1,key2,key3,把三者构成一个组合索引,则
如:
where key1=.... where key1=1 and key2=2 where key1=3 and key3=3 and key2=2
依据最左准绳,这些都是能够运用索引的,如from test where key1=1 order by key3,用explain剖析的话,只用到了normal_key索引,但只对where子句起作用,然后面的order by须要排序。
3.运用慢查询剖析
在my.ini中:
long_query_time=1 log-slow-queries=d:\mysql5\logs\mysqlslow.log
把凌驾1秒的记录在慢查询日记中
能够用mysqlsla来剖析之。也能够在mysqlreport中,有如
DMS离别剖析了select ,update,insert,delete,replace等所占的百份比
4.MYISAM和INNODB的锁定
myisam中,注重是表锁来的,比如在多个UPDATE操纵后,再SELECT时,会发明SELECT操纵被锁定了,必需等一切UPDATE操纵终了后,再能SELECT
innodb的话则差别了,用的是行锁,不存在上面题目。
5.MYSQL的事件设置项
innodb_flush_log_at_trx_commit=1
示意事件提交时马上把事件日记写入磁盘,同时数据和索引也更新。
innodb_flush_log_at_trx_commit=0
事件提交时,不马上把事件日记写入磁盘,每隔1秒写一次
innodb_flush_log_at_trx_commit=2
事件提交时,马上写入磁盘文件(这里只是写入到内核缓冲区,但不马上刷新到磁盘,而是每隔1秒刷新到盘,同时更新数据和索引
explain用法
EXPLAIN tbl_name或:EXPLAIN [EXTENDED] SELECT select_options
前者能够得出一个表的字段构造等等,后者重假如给出相干的一些索引信息,而本日要报告的重点是后者。
举例
mysql> explain select * from event; +—-+————-+——-+——+—————+——+———+——+——+——-+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +—-+————-+——-+——+—————+——+———+——+——+——-+ | 1 | SIMPLE | event | ALL | NULL | NULL | NULL | NULL | 13 | | +—-+————-+——-+——+—————+——+———+——+——+——-+ 1 row in set (0.00 sec)
各个属性的寄义
id
select查询的序列号
select_type
select查询的范例,重假如区分一般查询和团结查询、子查询之类的庞杂查询。
table
输出的行所援用的表。
type
团结查询所运用的范例。
type显现的是接见范例,是较为主要的一个目标,效果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
平常来说,得保证查询最少到达range级别,最好能到达ref。
possible_keys
指出MySQL能运用哪一个索引在该表中找到行。假如是空的,没有相干的索引。这时候要进步机能,可经由历程磨练WHERE子句,看是不是援用某些字段,或许搜检字段不是合适索引。
key
显现MySQL现实决议运用的键。假如没有索引被挑选,键是NULL。
key_len
显现MySQL决议运用的键长度。假如键是NULL,长度就是NULL。文档提醒特别注重这个值能够得出一个多重主键里mysql现实运用了哪一部份。
ref
显现哪一个字段或常数与key一同被运用。
rows
这个数示意mysql要遍历若干数据才找到,在innodb上是不正确的。
Extra
假如是Only index,这意味着信息只用索引树中的信息检索出的,这比扫描全部表要快。
假如是where used,就是运用上了where限定。
假如是impossible where 示意用不着where,平常就是没查出来啥。
假如此信息显现Using filesort或许Using temporary的话会很费劲,WHERE和ORDER BY的索引常常没法统筹,假如根据WHERE来肯定索引,那末在ORDER BY时,就必定会引起Using filesort,这就要看是先过滤再排序划算,照样先排序再过滤划算。
总结:
关于MySQL机能剖析及explain用法的学问就引见到这里了,置信小伙伴对此也是有了肯定的相识!
相干引荐:
Mysql中EXPLAIN作用
mysql慢查询和EXPLAIN的相干引见
MySQL查询机能剖析东西-explain关键字剖析
mysql explain type衔接范例示例
以上就是MySQL中explain的运用以及机能剖析的细致内容,更多请关注ki4网别的相干文章!