数据库

MySQL主从延时长,要怎么优化?

MySQL主从复制,读写分离是互联网常见的数据库架构,该架构最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重。 为什么主从延时这么大? 答:MySQL使用单线程重放RelayLog。 &...

InnoDB调试死锁的方法

近期写了不少InnoDB锁相关的文章,不少小伙伴问,如何在MySQL终端模拟并发事务,如何复现之前文章中的案例。今天,咱们一起动起手来,模拟并发事务的互斥与死锁。   【事前准备】 安装MySQL服务...

4种事务的隔离级别,InnoDB如何巧妙实现?

事务ACID特性,其中I代表隔离性(Isolation)。 什么是事务的隔离性? 隔离性是指,多个用户的并发事务访问同一个数据库时,一个用户的事务不应该被其他用户的事务干扰,多个并发事务之间要相互隔离。 一个事务...

InnoDB并发插入,居然使用意向锁?

《插入InnoDB自增列,居然是表级别锁?》介绍了InnoDB所使用的七种锁中的一种,自增锁。 今天,将要介绍InnoDB另外三种:共享/排他锁,意向锁,插入意向锁。 一,共享/排它锁(Shared and Exclusive Locks) 《I...

插入InnoDB自增列,居然是表锁?

《挖坑,InnoDB的七种锁》初步说明了InnoDB中,会使用七种不同类型的锁,今天就介绍其中的第一种,自增锁(Auto-inc Locks)。 一,案例说明 MySQL,InnoDB,默认的隔离级别(RR),假设有数据表: t(id AUTO_...

InnoDB的七种锁

Case 1 MySQL,InnoDB,默认的隔离级别(RR),假设有数据表: t(id PK, name); 数据表中有数据: 10, shenjian 20, zhangsan 30, lisi 事务A先执行,还未提交: insert into t values(11, xxx); ...

InnoDB,select为啥会阻塞insert?

MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。 但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。 InnoDB的细粒度锁,是实现在索引记录上的。   一,InnoD...

InnoDB并发如此高,原因竟然在这?

《InnoDB行锁,如何锁住一条不存在的记录?》埋了一个坑,没想到评论反响剧烈,大家都希望深挖下去。原计划写写InnoDB的锁结束这个case,既然呼声这么高,干脆全盘系统性的写写InnoDB的并发控制,锁,事务模型好...

InnoDB行锁,如何锁住一条不存在的记录?

《InnoDB,5项最佳实践,知其所以然?》发布后,不少同学留言希望讲讲MySQL的InnoDB行锁机制。要细聊MySQL的行锁,难以避免的要从事务的四种隔离级别说起。   四种隔离级别,又脱不开聊读脏,不可重复...