MySQL
文章平均质量分 93
哈哈哈张大侠
不积跬步无以至千里
展开
-
MySQL:MySQL的各种锁
操作类型读锁(共享锁S)针对同一操作,多个读操作可以同时进行不会互相影响写锁(排他锁X)当前锁没有执行完成之前,会阻断其他写锁和读锁数据操作粒度行锁表锁其他锁乐观锁概念很乐观,认为操作不会带来并发问题,在修改之前再去判断是否会有并发问题实现方式(1)CAS先比较后更新,对数据更新前先读取数据,和更新前的数据(备份数据)比较,如果改变了则不更新,并抛出异常(2)增加版本字段。原创 2023-04-02 22:26:53 · 81 阅读 · 0 评论 -
MySQL:索引优化
但是b使用了范围条件,这个时候就只能使用range,且key_len显示只包括了(a,b),而不是(a,b,b),但是当还存在一个单值索引(c),这个时候type会变成ref,且使用的索引为(c),而不是那个复合索引。如果索引了多列(复合索引),实际上创了多个索引,例如索引(a,b,c),实际创建了(a),(a,b),(a,b,c)三个索引,所以如果想使用该复合索引,则需要在where中同时使用三个字段检索,或前两个,不能跳着用,带头大哥不能丢。(2)尽可能在索引列上完成排序操作,遵照索引建的最左前缀。原创 2023-04-02 22:22:55 · 116 阅读 · 0 评论 -
MySQL:Explain查看执行计划
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yFDF7uF-1680445272472)(https://zhangyuxiangplus.oss-cn-hangzhou.aliyuncs.com/boke//image_1617546328285.png)]覆盖索引:索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。聚集索引的叶子节点称为数据页,聚集索引的这个特性决定了索引组织表中的数据也是索引的一部分。原创 2023-04-02 22:24:24 · 85 阅读 · 0 评论 -
MySQL:事务及四种隔离级别
MVCC实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读,快照读的实现是基于多版本并发控制,即MVCC,可以认为MVCC是行锁的一个变种,但它在很多情况下,避免了加锁操作,降低了开销;单纯的select语句,读取专门的快照,RC下快照(ReadView)会在每条语句下生成,RR下会在事务启动时生成,此时是不会加锁的(普通的select不会加锁),其实快照读就是只读取当前事务版本之前的数据,之后的数据不予存入快照。仅仅是一个理想概念,原创 2023-04-02 22:23:17 · 79 阅读 · 0 评论 -
MySQL:逻辑架构
概念:InnoDB维护的一个内存区域,用来缓存数据和索引在内存中,其会将热点数据和认为将要访问到的数据丢到Buffer中,InnoDB在修改数据时,如果数据的页(B+树的一个节点,其中最合适的大小为16K)在Buffer Pool中,则会直接修改Buffer Pool,此时我们称这个页为脏页,InnoDB会以一定的频率将脏页刷新到磁盘中,减少I/O。因此InnoDB会监控对索引表上的查找,如果观察到某些索引被频繁访问,索引成为热数据,这是建立哈希索引会带来性能上的提升。该方式存在不确定性,5.5中已废弃。原创 2023-03-29 23:01:48 · 59 阅读 · 0 评论