Mysql
秘密基塔
学海无涯 回头是岸
展开
-
MySql update语句或者delete语句 where条件没走索引会锁表
原因对于innoDB引擎的行锁是通过给索引上的索引项枷锁来实现的, 而不是针对记录来加锁的.假如在操作数据的时候, 没有索引, 是无法使用行级锁的, 此时使用的是表锁。导致问题如果是个长事务,极有可以会导致被锁表的其他操作等待超时,Lock wait timeout。...原创 2021-08-04 20:32:37 · 2559 阅读 · 0 评论 -
Mysql表关联算法
Mysql表关联常见算法嵌套循环链接算法Nested-Loop Join(NLJ)当两张表关联时,如果被驱动表关联字段上有索引,会选择NLJ算法。NLJ算法:先从驱动表扫描出相应行(N行),再循环所有行根据关联字段通过索引在被驱动表中检索出相应行,最后汇总返回结果。此时被驱动表扫描次数(与磁盘的I/O次数,索引非叶子节点都存放在内存中)= 2N。效率高。注意:inner join 时,explain最上面记录的那张表是驱动表。可以简单判断条件过滤后,返回结果较小作为驱动表。并不是小表就是驱动表也原创 2021-02-19 16:18:44 · 353 阅读 · 0 评论 -
Explain详解(mysql 5.7)
Explain详解(mysql 5.7 innodb)Explain的列sql语句每一个select对应explain的每一行记录。id列id列是每个select的序列号。id越大执行的优先级超高,id相等时由上而下执行。select_type列select_type表示一条sql语句的类型。simple:简单查询。sql语句中不包含子查询和union。primary:最外层的查询语句。当包含子查询或union时。subquery:select语句中的子查询。derived:from原创 2021-02-18 14:22:42 · 253 阅读 · 1 评论