2022-01-11 day68 MySQL 执行计划获取和分析

第8章 执行计划获取和分析

1.命令介绍

分析你的SQL查询语句走不走索引

2.使用方法

desc select * from city where countrycode='CHN';


explain select * from city where countrycode='CHN';


3.执行计划字段解释

table        :此次查询访问的表

type          :索引查询的类型(ALL、index、range、ref、eq_ref、const(system)、NULL)

possible_keys :可能会应用的索引

key          : 最终选择的索引

key_len      :索引覆盖长度,主要是用来判断联合索引应用长度。

rows          :需要扫描的行数

Extra        :额外信息

4.索引类型

ALL 没有使用到索引

index      全索引扫描

range      索引范围扫描

ref        辅助索引等值查询

eq_ref      多表连接查询中,非驱动表的连接条件是主键或唯一键时

const(system)  主键或唯一键等值查询

NULL        没查到数据

第9章 key_len

1.key_len介绍

简单来讲,key_len就是查看你的联合索引的匹配度

2.key_len计算

key_len=a+b+c

列的key_len长度,按照每列的最大预留长度来做的计算。

create table t1 (

id int,

a int ,

b char(10),

c varchar(10));

最大存储预留长度(字节):

-------------------------------------------------------------------------------

数据类型 :     占用字节量             不能为空          允许空

-------------------------------------------------------------------------------

数字类型: 

tinyint      :  1字节                    1                  1+1

int          : 4字节                    4                  4+1

bigint      : 8字节                    8                  8+1

-------------------------------------------------------------------------------

字符串类型:

utf8: 

char(10)    : 10*3字节 =30            30                  30+1

varchar(10)  : 10*3+2字节=32            32                  32+1

-------------------------------------------------------------------------------    

utf8mb4:

char(10)    :10*4字节 =40              40                  40+1

varchar(10)  :10*4字节+2 =42            42                  42+1

-------------------------------------------------------------------------------

use test;

create table test (

id int not null primary key auto_increment,

a  int not null ,                            # 4 

b  int ,                                    # 5

c  char(10) not null ,                      # 40

d  varchar(10),                              # 43

e  varchar(10) not null                      # 42

)engine=innodb charset=utf8mb4;

alter table test add index idx(a,b,c,d,e);

5个列覆盖:

4+5+40+43+42=134

4个列覆盖:

4+5+40+43=92

3个列覆盖:

4+5+40=49

2个列覆盖:

4+5=9

应用1个列:

4

3.key_len注意

查询语句必须包含联合索引的最左列,这样联合索引才能被匹配

如果是多个列的联合索引,查询条件必须从左到右依次匹配上才行,否则从哪里断掉,后面的列都不匹配了

创建联合索引需要注意的是,将重复值最少的列为最左列

二进制  1111 1111  位 b

字节    1B 字节 = 8b 8位

千字节  1K 字节 = 1024B

兆字节  1M 字节 = 1024K

吉字节  1G 字节 = 1024M

太字节  1T 字节 = 1024G

        1P      = 1024T

1E      = 1024P

第10章 建立索引的原则

1.必须要有主键,如果没有可以做为主键条件的列,创建无关列

2.经常做为where条件列  order by  group by  join on, distinct 的条件(业务:产品功能+用户行为)

3.最好使用唯一值多的列作为索引,如果索引列重复值较多,可以考虑使用联合索引

4.列值长度较长的索引列,我们建议使用前缀索引.

5.降低索引条目,一方面不要创建没用索引,不常使用的索引清理,percona toolkit(xxxxx)

6.索引维护要避开业务繁忙期,建议用pt-osc

第11章 不走索引的情况

没有查询条件或者查询条件没有建立索引

查询结果集是原表中的大部分数据

隐式转换导致索引失效

<>,not in 不走索引

like "%_" 百分号在最前面不走

第1章 错误日志

1.默认位置

如果没有指定日志路径,默认mysql的日志存储在数据目录下: 主机名.err

2.指定位置

vim /etc/my.cnf

log_error=/data/mysql_3306/logs/mysql.err

3.通过命令查看日志路径

select @@log_error;

select @@datadir;

4.注意

如果你自定义了日志路径,那么在启动之前需要提前确保日志文件存在并且mysql有写入权限

如果自定义了日志,在使用mysqld前台启动的时候,就不打印在屏幕上了,而是自定义的日志文件里

第2章 慢日志

1.慢日志作用

记录执行速度较慢的SQL语句

2.修改配置

vim /etc/my.cnf

slow_query_log=1   #是否启用慢查询日志,1为启用,0为禁用

slow_query_log_file=/data/mysql_3306/logs/slow.log #慢日志路径

long_query_time=0.1   #SQL语句运行时间阈值,执行时间大于参数值的语句才会被记录下来

log_queries_not_using_indexes=1  #将没有使用索引的语句记录到慢查询日志

3.模拟慢语句

select sleep(1) from sc;

select * from sc;

select * from t100w where k1 like 'abc%';

select * from t100w where id > '1';

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,015评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,373评论 3 404
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,253评论 0 368
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,069评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,079评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,550评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,911评论 3 429
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,892评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,435评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,465评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,586评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,178评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,920评论 3 340
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,356评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,493评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,151评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,663评论 2 366

推荐阅读更多精彩内容