一個事務提交時,redo log和undo log以及bin log的生成流程是怎么樣的?
一、redo log和undo log以及bin log的生成流程
1.undolog是在innodb的回滾段里的(確切是rollback segment->undo segment),這個也是buffer pool的一部分。你所說的同步到buffer pool,實際是包含了插入undolog的過程(同樣,flush to disk也需要把undo log寫入磁盤)。
2.redolog不保證不丟失數據,只保證數據原子性。即保障經過redolog寫入的數據是原子的。這個地方你是可以通過innodb_flush_log_at_trx_commit去修改,默認這里是1,也就是說每次寫redolog的時候都會直接調用fsync要求落盤,那就不存在你說的問題了(應該說是在處理用戶請求的過程里如果宕機就會丟失數據)。當然你也可以設置為0或者2把日志落盤這件事交給單獨的線程去處理。
至于順序是:修改數據(這個包含了undolog)->修改redolog(prepare)->修改binlog(同時設置redo-log事務狀態為commit)。因為Innodb本身實現的復雜性,這里面每個部分都涉及非常多的操作。
關于 MySQL 不將每次操作都同步到磁盤,而是同步到 buffer pool 中的疑惑,是因為 buffer pool 是內存中的緩存區域,相比磁盤來說讀取速度更快,可以提高數據庫性能。而 undo log 存儲的是舊數據的備份,這樣即使出現宕機等問題,也可以通過 undo log 來恢復事務處理之前的數據狀態。
redo log 的作用是記錄數據的修改,包括增加、修改、刪除等,即使發生異常宕機等情況也可以通過 redo log 來進行數據恢復。而 MySQL 在執行事務的過程中,會將 redo log 緩存在內存中的 redo log buffer 中,在事務提交時才將其寫入磁盤的 redo log 文件中,所以在宕機等異常情況下,有可能會丟失部分數據,但是通過 redo log 可以盡可能地減少數據丟失的風險。因此,在生產環境中,為了保證數據的安全性和完整性,需要合理地配置 redo log 大小以及定期將數據寫回磁盤中。
延伸閱讀:
二、信息抽取是什么
信息抽取(infromation extraction)信息抽取是一種自動化地從半結構化和無結構數據中抽取實體、關系以及實體屬性等結構化信息的技術。關鍵技術包括:實體抽取、關系抽取和屬性抽取。
1、實體抽取,也稱為命名實體識別(named entity recognition,NER),是指從文本數據集中自動識別出命名實體。
當前主流技術為面向開放域(open domain)的實體抽取。
2、關系抽取,為了得到語義信息,從相關語料中提取出實體之間的關聯關系,通過關系將實體聯系起來,才能夠形成網狀的知識結構。其技術研究已經從早期的“人工構造語法和語義規則”(模式匹配),“統計機器學習”發展到“面向開放域的信息抽取方法”與“面向封閉領域的方法”相結合。
3、屬性抽取,目標是從不同信息源中采集特定實體的屬性信息,如針對某個公眾人物,可以從網絡公開信息中得到其昵稱、生日、國籍、教育背景等信息。采用數據挖掘的方法直接從文本中挖掘實體屬性和屬性值之間的關系模式,據此實現對屬性名和屬性值在文本中的定位。

相關推薦HOT
更多>>
在 iPad 上運行 Windows 是什么體驗?
一、在 iPad 上運行 Windows 是什么體驗目前市面上有一些能夠在 iPad 上運行 Windows 的應用程序,例如 Parallels Access、Splash較好、VMware ...詳情>>
2023-10-14 19:14:27
vector, list, map等容器使用場合是什么?
一、vector, list, map等容器使用場合vector適用于對象簡單,變化較小,并且頻繁隨機訪問的場景。list適用經常進行插入和刪除并且不經常隨機訪...詳情>>
2023-10-14 14:59:11
分庫分表的數據庫和分布式數據庫有什么區別?
一、分庫分表的數據庫和分布式數據庫有什么區別分庫分表的數據庫:沒有這種數據庫,所謂分庫分表,這是開發應用的程序員通過自己的代碼、或者底...詳情>>
2023-10-14 13:59:18
APP定制開發的難點有哪些?
一、APP定制開發的難點1、多平臺適配不同的移動平臺(如iOS和Android)具有不同的操作系統、開發語言和開發工具。在進行APP定制開發時,需要適...詳情>>
2023-10-14 12:57:35