抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

21.为什么我只查一行的语句,锁这么多?

22.MySQL有哪些“饮鸩止渴”提高性能的方法?

23.MySQL是怎么保证数据不丢的?

只要redo log和binlog保证持久化到磁盘,就能确保MySQL异常重启后,数据可以恢复。

binlog的写入机制

其实,binlog的写入逻辑比较简单:事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。

一个事务的binlog是不能被拆开的,因此不论这个事务多大,也要确保一次性写入。这就涉及到了binlog cache的保存问题。

系统给 binlog cache 分配了一片内存,每个线程一个,参数 binlog_cache_size 用于控制单个线程内 binlog cache 所占内存的大小。如果超过了这个参数规定的大小,就要暂存到磁盘。

事务提交的时候,执行器把 binlog cache 里的完整事务写入到 binlog 中,并清空binlog cache。状态如图 1 所示。

24.MySQL是怎么保证主备一致的?

25.MySQL是怎么保证高可用的?

26.备库为什么会延迟好几个小时?

27.主库出问题了,从库怎么办?

28.读写分离有哪些坑?

29.如何判断一个数据库是不是出问题了?

30.答疑文章(二):用动态的观点看加锁

31.误删数据后除了跑路,还能怎么办?

32.为什么还有kill不掉的语句?

评论