當前位置:首頁 » 幣種行情 » 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存儲引擎的時候建議關閉回寫緩存

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

熱點內容
收到假eth幣 發布:2025-10-20 08:58:16 瀏覽:973
暗黑破壞神2eth打孔 發布:2025-10-20 08:42:58 瀏覽:105
BTC和CBT是一樣的嗎 發布:2025-10-20 08:42:57 瀏覽:233
華碩trx40Pro供電 發布:2025-10-20 08:33:26 瀏覽:432
曬人民幣編號的朋友圈 發布:2025-10-20 08:25:32 瀏覽:687
doge格式 發布:2025-10-20 08:02:00 瀏覽:382
以太坊會爆發嗎 發布:2025-10-20 08:01:59 瀏覽:772
一台比特幣礦機的功率 發布:2025-10-20 07:39:24 瀏覽:925
trx輔助帶 發布:2025-10-20 07:35:29 瀏覽:48
比特幣哈希值有多少位 發布:2025-10-20 07:31:20 瀏覽:633