摘要: 1.联合索引的最左匹配原则碰到范围查询会失效:例如a,b,在a为单值时候,b是有序的可以走索引,但如果a是范围查询例如a>2,多段之间的b不是有序的,不能走索引。 2.做DDL时候,申请写锁,拿到后获取表结构信息;降级为读锁;后台做修改操作;读锁升级为写锁,替换老的表结构信息;释放DDL锁。 3.意 阅读全文
posted @ 2022-05-17 20:27 来写代码了 阅读(57) 评论(0) 推荐(0)
摘要: 1.join的使用 如果使用join,优化器将自己选择驱动表;使用straight_join,左边的为驱动表。 NLJ(index nested loop join):从驱动表中读一行(全表扫描),按照join条件获取索引到被驱动表中取出一行(索引查找,如果是非主键索引还有一次回表),将俩行组成结果 阅读全文
posted @ 2022-05-14 00:35 来写代码了 阅读(38) 评论(0) 推荐(0)
摘要: 1.当前读 当前事务对某行数据更新,先读再写,读时可能获得其他事务更新后的数据,这里必须获得因为数据库要保证更新不丢失,这里就违背了rr隔离级别的一致性视图,该现象为当前读现象。 类似的,当前事务使用select进行加锁读的时候,无论share mode还是for update,都可能和其他事务的写 阅读全文
posted @ 2022-05-10 21:44 来写代码了 阅读(49) 评论(0) 推荐(0)
摘要: 1.事务四大特性 原子性:一组sql语句保证同时成功或者失败。 一致性:数据库的约束,例如索引,在数据库状态转变前后没有发生变化。 隔离性:并发控制,读写,常用的四种隔离级别。 持久性:事务一旦提交,永久保存,即使数据库故障也能恢复。 原子性、持久性通过redo log日志实现,一致性通过undo 阅读全文
posted @ 2022-05-08 10:28 来写代码了 阅读(80) 评论(0) 推荐(0)
摘要: 1.锁的一些基础 锁是为了保护并发场景中临界资源,保证其有序变更。锁的粒度越粗,锁住的范围越大,并发度越低。 2.本文中主要探讨常用的一些锁:行锁、间隙锁、next-key lock、表级锁、MDL。 3.行锁 分为两类,共享锁S,排他锁X,对同一行数据而言,S可以兼容S,X不能兼容其他锁。 意向锁 阅读全文
posted @ 2022-05-04 23:23 来写代码了 阅读(40) 评论(0) 推荐(0)