當前位置:首頁 » 幣種行情 » trx量化策略

trx量化策略

發布時間: 2022-04-13 13:36:47

① innodb存儲引擎的數據文件放在哪裡

MySQL資料庫InnoDB存儲引擎使用了B策略, InnoDB存儲引擎中的恢復機制有幾個特點:
A. 在重做Redo Log時,並不關心事務性。 恢復時,沒有BEGIN,也沒有COMMIT,ROLLBACK的行為。也不關心每個日誌是哪個事務的。盡管事務ID等事務相關的內容會記入Redo Log,這些內容只是被當作要操作的數據的一部分。

B. 使用B策略就必須要將Undo Log持久化,而且必須要在寫Redo Log之前將對應的Undo Log寫入磁碟。Undo和Redo Log的這種關聯,使得持久化變得復雜起來。為了降低復雜度,InnoDB將Undo Log看作數據,因此記錄Undo Log的操作也會記錄到redo log中。這樣undo log就可以象數據一樣緩存起來,而不用在redo log之前寫入磁碟了。

包含Undo Log操作的Redo Log,看起來是這樣的:

記錄1: <trx1, Undo log insert <undo_insert …>>

記錄2: <trx1, insert …>

記錄3: <trx2, Undo log insert <undo_update …>>

記錄4: <trx2, update …>

記錄5: <trx3, Undo log insert <undo_delete …>>

記錄6: <trx3, delete …>

C. 到這里,還有一個問題沒有弄清楚。既然Redo沒有事務性,那豈不是會重新執行被回滾了的事務?確實是這樣。同時Innodb也會將事務回滾時的操作也記錄到redo log中。回滾操作本質上也是對數據進行修改,因此回滾時對數據的操作也會記錄到Redo Log中。

一個回滾了的事務的Redo Log,看起來是這樣的:

記錄1: <trx1, Undo log insert <undo_insert …>>

記錄2: <trx1, insert A…>

記錄3: <trx1, Undo log insert <undo_update …>>

記錄4: <trx1, update B…>

記錄5: <trx1, Undo log insert <undo_delete …>>

記錄6: <trx1, delete C…>

記錄7: <trx1, insert C>

記錄8: <trx1, update B to old value>

記錄9: <trx1, delete A>

一個被回滾了的事務在恢復時的操作就是先redo再undo,因此不會破壞數據的一致性.
- InnoDB存儲引擎中相關的函數
Redo: recv_recovery_from_checkpoint_start()
Undo: recv_recovery_rollback_active()
Undo Log的Redo Log: trx_undof_page_add_undo_rec_log()

② Mysql中為什麼使用InnoDB存儲引擎的時候建議關閉回寫緩存

參考答案 少壯不努力,老大徒傷悲。

熱點內容
數字貨幣原創設計 發布:2025-05-15 13:50:37 瀏覽:458
區塊鏈媒體做什麼 發布:2025-05-15 13:49:16 瀏覽:752
eth挖礦軟體不運行 發布:2025-05-15 13:42:32 瀏覽:824
區塊鏈存證去中心化 發布:2025-05-15 13:37:28 瀏覽:312
區塊鏈上的交易信息可以查到嗎 發布:2025-05-15 13:30:13 瀏覽:266
虛擬幣礦機圖片 發布:2025-05-15 13:30:11 瀏覽:152
數字貨幣醫學鏈 發布:2025-05-15 13:24:33 瀏覽:187
比特幣礦機一天最少 發布:2025-05-15 13:24:21 瀏覽:356
幣圈項目外部交易所 發布:2025-05-15 13:17:22 瀏覽:949
不屬於區塊鏈10的應用是比特幣 發布:2025-05-15 13:08:54 瀏覽:647