本周六直播课《读写分离:扩展性和一致性》
接面试辅导业务,不通过退款
进技术交流群 或 联系方式,见文末海报
===正文分割线===
问题:用以下语句准备数据,版本MySQL 8.0,
默认参数,innodb_change_buffering=none。
create table t(id int primary key, c int, d int, e int, index dc(d,c))engine=innodb;insert into t values(1,1,1,1),(2,2,2,2),(3,3,3,3),(4,4,4,4);update t set c=30 where id=3;select c from t where d=3;
说明:
1.没有开启事务,就是两个普通的语句,同一个session里;
针对最后的select语句:
问题1: 返回什么?
回答1: 自然是返回30啊;
追问问题2:执行流程是什么?
回答2: 使用覆盖索引,只扫描dc这个索引,就得到结果了,都不需要回主键上;
追问问题3: dc这个索引上的c的值,是什么时候改的?
回答3:自然是update语句改的;
追问问题4:如果是update语句改的,怎么改呢?
回答4: 就是去dc这个索引上修改c的值;
追问问题5: 这样有没有性能问题?
回答5: ________
问:前四个回答对不对呢?还剩下的部分留给评论区~
==例行海豹==
原文作者:丁奇3306;如有侵权,请联系管理员删除。