MySQL性能优化学习

1、MySQL时间字段比较
方式1:unix_timestamp(fav.take_time) >= unix_timestamp(‘2017-05-23 00:00:00’)
OR unix_timestamp(ver.verification_time) >= unix_timestamp(‘2017-05-23 00:00:00’)
方式2:unix_timestamp(cvc.verification_time) BETWEEN unix_timestamp(‘2017-05-24 00:00:00’) AND unix_timestamp(‘2017-05-24 23:59:59’)

2、服务器状态查询
show GLOBAL status like ‘uptime’; #服务器工作时间(秒)
show status like ‘connections’; #试图连接MySQL服务器的次数
show GLOBAL status like ‘Com_select’; #select,insert,update,delete执行次数
show VARIABLES like ‘%quer%’; #慢查询状态是否开启
show VARIABLES like ‘long_query_time’; #显示当前慢查询时间
show GLOBAL status like ‘Slow_queries’; #慢查询次数

3、组合索引
ALTER TABLE TT ADD INDEX combine_index_name ( key1,key2 );
select * from TT where key1=…
select * from TT where key1=… and key2=…
根据最左原则,以上两个语句都能使用索引

4、慢查询分析
在my.ini中配置慢查询参数
long_query_time=1
log-slow-queries=xx.log
从日志中找到具体哪些sql语句导致了慢查询

5、使用explain分析sql执行效率
explain select * from tableName where id = 2;
查询结果截图:
这里写图片描述
相关字段说明:
select_type:查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询
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能使用哪个索引在该表中找到行。如果是空的,没有相关的索引
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,这就要看是先过滤再排序划算,还是先排序再过滤划算。

6、MYISAM和INNODB的锁定
默认情况下,MyISAM写锁优先级大于读锁,一个进程请求某个表的读锁,同时另一个进程也请求同一表的写锁,最终是写进程先获得锁。
如果存在大量插入或更新,读请求将会被阻塞
innodb用的是行锁,不存在上面问题

7、mysql索引类型及算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值