首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

key&key_len&ref&filtered(4)—mysql执行计划(五十)

TYPE(3)—mysql执行计划(四十九) possible keys & key possible keys代表可能用到的索引,key代表,mysql优化器成本计算后,实际会用到的索引key, 所以...mysql> EXPLAIN SELECT * FROM s1 WHERE key1 > 'z' AND key3 = 'a'; +----+-------------+-------+--------...key_len 表示mysql当决定使用某个索引的时候,使用索引的最大长度,这个长度是由三个部分组成: 1、对于使用固定长度类型的索引,则他实际占用的大小就是他的固定值,若是utf8,varchar(100...对于可变长的索引来说: mysql> EXPLAIN SELECT * FROM s1 WHERE key1 = 'a'; +----+-------------+-------+-----------...接下来我们 看连接查询 mysql> EXPLAIN SELECT * FROM s1 INNER JOIN s2 ON s1.key1 = s2.key1 WHERE s1.common_field

66331

mysql insert duplicate key update 死锁分析

背景 数据入库这块有离线和实时两套入库系统,写同一个db的同一批mysql表,两边用的都是insert into table on duplicate key update这种方式。...原因分析&解决方案 这里面分两种情况,一种是带主键的insert duplicate key update,一种是没有主键带唯一索引的insert duplicate key update。...如果插入的索引已经存在,会在索引值位置插入next-key锁。next-key锁包含record锁和gap锁,gap锁会锁一个范围,锁住期间,其他事务不能向该范围插入数据。...如果此时两个事务各自获取到了一个next-key锁,此时都需要向对方获取到的next-key锁范围插入数据,就会出现死锁。 举例: code字段有唯一索引。...如果插入数据时带上主键,那么就不会产生next-key锁,会退化到第一种情况(带主键的insert duplicate key update)。

3.9K10

MYSQL冷知识——ON DUPLICATE KEY 批量增删改

删简单,因为有个deleteStaute之类的字段,删除本质上就是就是一个修改 所以就是实现批量混合增改,然而组长说mysql不支持混合增改,代码上要一个一个操作很耗性能,打算拒了这需求 理所当然的要查一下对还是不对...,,, 二 insertOrUpdate明显查ON DUPLICATE KEY关键字,然后百度第一个就是,惊了!...ON DUPLICATE KEY UPDATE 在UPDATE子句中使用VALUES(col_name)函数从INSERT...UPDATE语句的INSERT部分引用列值。...INTO `test` (`a`, `b`, `c`) VALUES ('3', '1', '1'), ('3', '2', '1'), ('3', '3', '1'), ON DUPLICATE KEY...UPDATE a= VALUES(a),b= VALUES(b),c= VALUES(c) 四 这题也问了一些技术群,大多数群都是说MySQL不支持,看来这东西科普性不高

1.9K30

MySQL的ON DUPLICATE KEY UPDATE用法 增量更新

平时我们在设计数据库表的时候总会设计 unique 或者 给表加上 primary key 的限制条件....逻辑上我们需要怎么写: result = mysql_query(‘select * from xxx where id = 1’);row = mysql_fetch_assoc( 但是这样写有两个问题...1、效率太差,每次执行都要执行2个sql 2、高并发的情况下数据会出问题,不能保证原子性 还好MySQL 为我们解决了这个问题:我们可以通过 ON DUPLICATE KEY UPDATE 达到以上目的...ON DUPLICATE KEY UPDATE 可以达到以下目的: 向数据库中插入一条记录: 若该数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作, 即UPDATE 后面的操作。...create table test( id int not null primary key, num int not null UNIQUE key, tid int not null )

5.8K30

MySQL next-key lock 加锁范围总结

X,GAP; 主键等值查询,范围查询时情况则比较复杂: 8.0.17 版本是前开后闭,而 8.0.18 版本及以后,修改为了前开后开区间; 临界 <= 查询时,8.0.17 会锁住下一个 next-key...会对相应的范围加前开后闭区间,并且如果存在数据,会对对应的主键加行锁; 在非主键唯一索引范围查询时,如果是覆盖索引时,会对所有的后闭区间对应的主键,加行锁; 在非主键唯一索引加锁时,还是存在 next-key...,所以即使定位到记录,也是会向后查询,直到查询到不为该值的记录,从而锁定该值的区间; 普通索引的锁也是加载该索引上的,如果涉及到存在的记录,会对该主键加行锁; 普通索引的范围查询,同样出现 next-key

1.6K10
领券