广告
返回顶部
首页 > 资讯 > 数据库 >怎么掌握MySQL中的double write
  • 194
分享到

怎么掌握MySQL中的double write

2024-04-02 19:04:59 194人浏览 安东尼
摘要

本篇内容介绍了“怎么掌握Mysql中的double write”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

本篇内容介绍了“怎么掌握Mysql中的double write”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

介绍double write之前我们有必要了解partial page write 问题 : 
    InnoDB 的Page Size一般是16KB,其数据校验也是针对这16KB来计算的,将数据写入到磁盘是以Page为单位进行操作的。而计算机硬件和操作系统,在极端情况下(比如断电)往往并不能保证这一操作的原子性,16K的数据,写入4K 时,发生了系统断电/os crash ,只有一部分写是成功的,这种情况下就是 partial page write 问题。
很多DBA 会想到系统恢复后,My sql  可以根据redolog 进行恢复,而mysql在恢复的过程中是检查page的checksum,checksum就是pgae的最后事务号,发生partial page write 问题时,page已经损坏,找不到该page中的事务号,就无法恢复。

一 double write是什么?
    Double write 是InnoDB在 tablespace上的128个页(2个区)是2MB;
其原理:
    为了解决 partial page write 问题 ,当mysql将脏数据flush到data file的时候, 先使用memcopy 将脏数据复制到内存中的double write buffer ,之后通过double write buffer再分2次,每次写入1MB到共享表空间,然后马上调用fsync函数,同步到磁盘上,避免缓冲带来的问题,在这个过程中,doublewrite是顺序写,开销并不大,在完成doublewrite写入后,在将double write buffer写入各表空间文件,这时是离散写入。
如果发生了极端情况(断电),InnoDB再次启动后,发现了一个Page数据已经损坏,那么此时就可以从doublewrite buffer中进行数据恢复了。
怎么掌握MySQL中的double write

二double write的缺点是什么?
    位于共享表空间上的double write buffer实际上也是一个文件,写DWB会导致系统有更多的fsync操作, 而硬盘的fsync性能, 所以它会降低mysql的整体性能. 但是并不会降低到原来的50%. 这主要是因为: 
1) double write 是一个连接的存储空间, 所以硬盘在写数据的时候是顺序写, 而不是随机写, 这样性能更高. 
2) 将数据从double write buffer写到真正的segment中的时候, 系统会自动合并连接空间刷新的方式, 每次可以刷新多个pages;三 double write在恢复的时候是如何工作的?
If there’s a partial page write to the doublewrite buffer itself, the original page will still be on disk in its real location.-
--如果是写doublewrite buffer本身失败,那么这些数据不会被写到磁盘,InnoDB此时会从磁盘载入原始的数据,然后通过InnoDB的事务日志来计算出正确的数据,重新 写入到doublewrite buffer.
When InnoDB recovers, it will use the original page instead of the corrupted copy in the doublewrite buffer. However, if the doublewrite buffer succeeds and the write to the page’s real location fails, InnoDB will use the copy in the doublewrite buffer during recovery. 
--如果 doublewrite buffer写成功的话,但是写磁盘失败,InnoDB就不用通过事务日志来计算了,而是直接用buffer的数据再写一遍.
InnoDB knows when a page is corrupt because each page has a checksum at the end; the checksum is the last thing to be written, so if the page’s contents don’t match the checksum, the page is corrupt. Upon recovery, therefore, InnoDB just reads each page in the doublewrite buffer and verifies the checksums. If a page’s checksum is incorrect, it reads the page from its original location.
--在恢复的时候,InnoDB直接比较页面的checksum,如果不对的话,就从硬盘载入原始数据,再由事务日志 开始推演出正确的数据.所以InnoDB的恢复通常需要较长的时间.四 我们是否一定需要 double write ?
In some cases, the doublewrite buffer really isn’t necessary—for example, you might want to disable it on slaves. Also, some filesystems (such as ZFS) do the same thing themselves, so it is redundant for InnoDB to do it. You can disable the doublewrite buffer by setting InnoDB_doublewrite to 0.

五  如何使用 double write
InnoDB_doublewrite=1表示启动double write
show status like 'InnoDB_dblwr%'可以查询double write的使用情况;
相关参数与状态
Double write的使用情况:
show status like  "%InnoDB_dblwr%"; InnoDB_dblwr_pages_written 从bp flush 到 DBWB的个数
InnoDB_dblwr_writes            写文件的次数
每次写操作合并page的个数= InnoDB_dblwr_pages_written/InnoDB_dblwr_writes

“怎么掌握MySQL中的double write”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么掌握MySQL中的double write

本文链接: https://www.lsjlt.com/news/63477.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么掌握MySQL中的double write
    本篇内容介绍了“怎么掌握MySQL中的double write”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2022-10-18
  • 如何浅析mysql中的double write
    这篇文章给大家介绍如何浅析mysql中的double write ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 介绍double write之前我们有必要了解partial pag...
    99+
    2022-10-19
  • 我很理解MySQL中的double write
    本篇文章为大家展示了我很理解MySQL中的double write,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。     MySQL...
    99+
    2022-10-18
  • MySQL中Double Write Buffer的分析是怎样的
    这篇文章将为大家详细讲解有关MySQL中Double Write Buffer的分析是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Double Wr...
    99+
    2022-10-19
  • MySQL double write存在是怎样的意义
    MySQL double write存在是怎样的意义,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。背景:MySQL默认每个pa...
    99+
    2022-10-18
  • 怎么掌握Mysql的explain
    本篇内容主要讲解“怎么掌握Mysql的explain”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么掌握Mysql的explain”吧!数据库性能优化是每个后...
    99+
    2022-10-19
  • 怎么理解并掌握mysql中的information_schema
    本篇内容介绍了“怎么理解并掌握mysql中的information_schema”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细...
    99+
    2022-10-18
  • 怎么理解并掌握MySQL
    本篇内容主要讲解“怎么理解并掌握MySQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解并掌握MySQL”吧!MySQL分为 server 层和存储引擎...
    99+
    2022-10-18
  • 怎么理解并掌握mysql的表
    本篇内容介绍了“怎么理解并掌握mysql的表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.索引组织表如...
    99+
    2022-10-19
  • 怎么掌握mysql多表操作
    本篇内容主要讲解“怎么掌握mysql多表操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么掌握mysql多表操作”吧!多表关系一对一(一般是合并表), 一对...
    99+
    2022-10-19
  • 怎么掌握MySQL复制架构
    本文小编为大家详细介绍“怎么掌握MySQL复制架构”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么掌握MySQL复制架构”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一主多从...
    99+
    2022-10-19
  • MySQL死锁是什么及怎么掌握
    这篇“MySQL死锁是什么及怎么掌握”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQ...
    99+
    2022-10-19
  • 怎么掌握JavaScript中的概念
    这篇文章主要介绍“怎么掌握JavaScript中的概念”,在日常操作中,相信很多人在怎么掌握JavaScript中的概念问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么掌握JavaScript中的概念”的疑...
    99+
    2023-06-27
  • 怎么理解并掌握MySQL Server Startup Script
    本篇内容介绍了“怎么理解并掌握MySQL Server Startup Script”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家...
    99+
    2022-10-18
  • 怎么掌握PostgreSQL的tips
    这篇文章主要讲解了“怎么掌握PostgreSQL的tips”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么掌握PostgreSQL的tips”吧!下面是一...
    99+
    2022-10-18
  • 怎么掌握Makefile的知识
    今天就跟大家聊聊有关怎么掌握Makefile的知识,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如果你现在使用 macOS 或者 Linux,那么你可以在终端输入命令man make...
    99+
    2023-06-15
  • 怎么理解并掌握mysql的show processlist time负数
    本篇内容介绍了“怎么理解并掌握mysql的show processlist time负数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望...
    99+
    2022-10-18
  • 怎么理解并掌握JavaScript中的this
    这篇文章主要介绍“怎么理解并掌握JavaScript中的this”,在日常操作中,相信很多人在怎么理解并掌握JavaScript中的this问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-19
  • Java9的HTTP2和REPL怎么掌握
    本篇内容介绍了“Java9的HTTP2和REPL怎么掌握”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HTTP/2HTTP/2标准是HTTP...
    99+
    2023-06-17
  • Spring的IOC原理怎么掌握
    这篇文章主要介绍了Spring的IOC原理怎么掌握的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring的IOC原理怎么掌握文章都会有所收获,下面我们一起来看看吧。1 IOC的理论背景我们都知道,在采用面向...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作