13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

图文回顾 Redo Log 相关知识

 [[427107]]

1、如何提升 redo日志 的写性能?

为了保证 redo日志 不丢失,会在磁盘中开辟一块空间将日志保存起来。但是这样会有一个问题,磁盘的读写性能非常的差。

长葛ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

所以 redo日志 和数据页一样,系统都是会分配一块连续的内存,来提升读写性能;数据页对应的是 buffer pool,而 redo日志 对应的是 log buffer。

buffer pool可以利用「innodb_buffer_pool_size」指定总大小,利用「innodb_buffer_pool_instances」指定实例数,但是必须size大于等于1G才生效。

log buffer 可利用「innodb_log_buffer_size」指定 log buffer 的大小;一片连续的内存空间会被划分为N个512字节大小的block。

log file 可以利用「innodb_log_file_size」指定每个 log file 的大小,利用「innodb_log_files_in_group」指定一共多少个log file。

2、redo日志 何时写入log buffer?

对底层页面(可能是多个页面)进行一次原子性访问,等于一个MTR,即 Mini Transaction。一个 MTR对应一组 redo日志 。一个事务对应多个语句,一个语句对应多个个MTR,一个MTR对应一组redo日志,即多个 redo日志 。

在MTR结束后,会将一组 redo日志 写入到log buffer中。

详情可看下图:

3、log buffer 中的 redo日志 何时刷盘?

4、我们都知道每次写入 redo日志 ,都是以组为单位,那么我们怎么知道哪些是一组?

5、如何知道下一次redo日志改写到log buffer的哪个位置?

6、如何知道下次从log buffer的哪个位置开始刷入磁盘?

buf_next_to_write全局变量,指向log buffer中下个刷回磁盘的位置。

7、如何定位 log buffer 中的 redo日志 对应哪些被修改的数据页;在被修改的数据页中,如何定位到对应的是哪些 redo日志 ?

8、我们知道可以利用 lsn 知道有多少字节数的 redo日志 写入到 log buffer 中,那么我们能有变量对应的知道有多少字节数的 redo日志 被刷入磁盘中吗?

9、lsn 和 log file 的偏移量怎么对得上么?

详情可看下图:

10、log buffer 中的 redo日志 真的会在事务结束时立马刷回到磁盘中吗?

11、log file 都是循环使用,即可以覆盖,那么怎么判断是否可以覆盖?

12、系统崩溃重启,如何利用 redo日志 进行恢复?

13、恢复是扫描一个 redo日志 ,就进行一次恢复吗?

详情可看下图:

14、恢复时,如何知道什么时候结束?

15、如何兼容脏页已经已经刷回磁盘,但是 redo日志 没有刷回磁盘的场景?


当前名称:图文回顾 Redo Log 相关知识
网页地址:http://cdbrznjsb.com/article/ccsjdio.html

其他资讯

让你的专属顾问为你服务