电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解MySQL 重做日志(redo log)與回滾日志(undo logo)

瀏覽:33日期:2023-10-12 10:20:20

前言:

前面文章講述了 MySQL 系統中常見的幾種日志,其實還有事務相關日志 redo log 和 undo log 沒有介紹。相對于其他幾種日志而言, redo log 和 undo log 是更加神秘,難以觀測的。本篇文章將主要介紹這兩類事務日志的作用及運維方法。

1.重做日志(redo log)

我們都知道,事務的四大特性里面有一個是 持久性 ,具體來說就是只要事務提交成功,那么對數據庫做的修改就被永久保存下來了,不可能因為任何原因再回到原來的狀態。那么 MySQL 是如何保證一致性的呢?最簡單的做法是在每次事務提交的時候,將該事務涉及修改的數據頁全部刷新到磁盤中。但是這么做會有嚴重的性能問題,主要體現在兩個方面:

因為 Innodb 是以頁為單位進行磁盤交互的,而一個事務很可能只修改一個數據頁里面的幾個字節,這個時候將完整的數據頁刷到磁盤的話,太浪費資源了。 一個事務可能涉及修改多個數據頁,并且這些數據頁在物理上并不連續,使用隨機 IO 寫入性能太差。

因此 MySQL 設計了 redo log ,具體來說就是只記錄事務對數據頁做了哪些修改,這樣就能完美地解決性能問題了(相對而言文件更小并且是順序IO)。

redo log 包括兩部分:一個是內存中的日志緩沖(redo log buffer),另一個是磁盤上的日志文件(redo log file)。MySQL 每執行一條 DML 語句,先將記錄寫入 redo log buffer ,后續某個時間點再一次性將多個操作記錄寫到 redo log file 。

默認情況下,redo log 在磁盤上由名為 ib_logfile0 和 ib_logfile1 的兩個物理文件展示。redo log 相關參數簡單介紹如下:

innodb_log_files_in_group:redo log 文件的個數,命名方式如:ib_logfile0,iblogfile1... iblogfilen。默認2個,最大100個。 innodb_log_file_size:單個 redo log 文件設置大小,默認值為 48M,最大值為512G,注意最大值指的是整個 redo log 系列文件之和,即(innodb_log_files_in_group * innodb_log_file_size )不能大于最大值512G。 innodb_log_group_home_dir:指定 redo log 文件組所在的路徑,默認./ ,表示在數據庫的數據目錄下。 innodb_log_buffer_size:redo log buffer 大小,默認16M。延遲事務日志寫入磁盤,把 redo log 放到該緩沖區,然后根據 innodb_flush_log_at_trx_commit 參數的設置,再把日志從 buffer 中 flush 到磁盤中。 innodb_flush_log_at_trx_commit:控制 redo log 刷新到磁盤的策略,默認為1。值為1,每次 commit 都會把 redo log 從 redo log buffer 寫入到 system ,并 fsync 刷新到磁盤文件中。值為2,每次事務提交時 MySQL 會把日志從 redo log buffer 寫入到 system ,但只寫入到 file system buffer,由系統內部來 fsync 到磁盤文件。如果數據庫實例 crash ,不會丟失 redo log,但是如果服務器 crash,由于 file system buffer 還來不及 fsync 到磁盤文件,所以會丟失這一部分的數據。值為0,表示事務提交時不進行寫入 redo log 操作,這個操作僅在 master thread 中完成,而在 master thread 中每1秒進行一次重做日志的 fsync 操作,因此實例 crash 最多丟失1秒鐘內的事務。

更改 redo log 及其 buffer 大小是需要重啟數據庫實例的,建議初始化時做好評估。可以適當加大 redo log 組數和大小,特別是你的數據庫實例更新比較頻繁的情況下。但也不推薦 redo log 設置過大。

2.回滾日志(undo log)

undo log 主要用于保證數據的原子性,保存了事務發生之前的數據的一個版本,可以用于回滾。比如一條 INSERT 語句,對應一條 DELETE 的 undo log ,對于每個 UPDATE 語句,對應一條相反的 UPDATE 的 undo log ,這樣在發生錯誤時,就能回滾到事務之前的數據狀態。同時,undo log 也是 MVCC (多版本并發控制) 實現的關鍵。

MySQL 5.7 版本中,undo log 默認存放在共享表空間 ibdata 中。也可以在初始化時通過配置參數改成獨立的文件,簡單介紹幾個 undo log 相關參數:

innodb_max_undo_log_size:控制最大 undo tablespace 文件的大小,當啟動了innodb_undo_log_truncate 時,undo tablespace 超過 innodb_max_undo_log_size 閥值時才會去嘗試truncate。該值默認大小為1G,truncate后的大小默認為10M。 innodb_undo_tablespaces:設置 undo 獨立表空間個數,范圍為0-128,5.7版本默認為0,0表示不開啟獨立undo表空間。該參數只能在最開始初始化 MySQL 實例的時候指定。 innodb_undo_directory:設置 undo 表空間的存放目錄,默認數據目錄。 innodb_undo_log_truncate:設置 undo 表空間是否自動截斷回收。該參數生效的前提是,已設置獨立表空間且獨立表空間個數大于等于2個。

undo log 相關參數一般很少改動。MySQL 8.0 默認啟用了獨立表空間,可能 undo log 表空間的大小設置更靈活些。

總結:

本篇文章主要介紹了 redo log 及 undo log 的作用和相關參數設置,文章寫的比較匆忙,如有錯誤,可以留言指出。關于這兩類日志更深層次的內容,可能筆者功力還不到,未能寫到更加透徹。好了,MySQL 相關日志的兩篇文章已經寫完了,希望各位能學到一點知識。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI | SMN-1/SMN-A ABB抽屉开关柜触头夹紧力检测仪-SMN-B/SMN-C-上海徐吉 | 帽子厂家_帽子工厂_帽子定做_义乌帽厂_帽厂_制帽厂_帽子厂_浙江高普制帽厂 | 宜兴紫砂壶知识分享 - 宜兴壶人| 浙江清风侠环保设备有限公司| 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | ph计,实验室ph计,台式ph计,实验室酸度计,台式酸度计 | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 济南宣传册设计-画册设计_济南莫都品牌设计公司| 开业庆典_舞龙舞狮_乔迁奠基仪式_开工仪式-神挚龙狮鼓乐文化传媒 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 泉州陶瓷pc砖_园林景观砖厂家_石英砖地铺石价格 _福建暴风石英砖 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 焦作网 WWW.JZRB.COM| 高博医疗集团上海阿特蒙医院 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂| 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 万家财经_财经新闻_在线财经资讯网| 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 楼承板-开闭口楼承板-无锡海逵楼承板 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 |