mysql 小记

2019-11-02  本文已影响0人  落羽归尘

innodb引擎下

数据类型

schema

表锁

MDL锁(metadata lock) 是 server层的表级别锁,表的增删改查加的是读锁,表结构变更加的是写锁,读读之间不冲突,读写、写写之间冲突。如:当一个查询很耗时的时候,一个查询也是起一个事务的,这个读锁还未释放,此时去变更表结构如加索引等,都会引起锁冲突,此后所有关于这个表操作都会堵着。

行锁

innodb支持行锁。为了提高并发性的,读写、写写互斥,select默认不加锁,另外锁是加在索引上的。另外为了解决幻读,增加了间隙锁(可重复读级别下),与行锁配合使用。next-key lock

小技巧

索引

explain 执行计划

id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra

id

包含一组数字,表示查询中执行select子句或操作表的顺序

select_type

查询中每个select子句的类型(简单OR复杂)

注意:

type

ALL, index, range, ref, eq_ref, const, system, NULL
从左至右,由差至好

possible_keys

指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用

key

显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL

key_len

表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度(key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的)。

ref

表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值。

Extra

工具

上一篇 下一篇

猜你喜欢

热点阅读