當前位置:首頁 » 幣種行情 » 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-08-06 05:35:04 瀏覽:701
1萬枚eth轉讓 發布:2025-08-06 05:07:43 瀏覽:82
免費獲得btc 發布:2025-08-06 05:07:02 瀏覽:333
CCTV2比特幣2017 發布:2025-08-06 04:47:56 瀏覽:217
58區塊鏈大賽 發布:2025-08-06 04:38:57 瀏覽:202
聯通合約白金套餐怎麼收費 發布:2025-08-06 04:11:49 瀏覽:435
中國義烏首屆區塊鏈 發布:2025-08-06 04:10:47 瀏覽:83
金屬礦立磨機 發布:2025-08-06 04:06:28 瀏覽:165
全球前十的數字貨幣交易所嗎 發布:2025-08-06 03:48:50 瀏覽:160
p開頭廣告系統區塊鏈 發布:2025-08-06 03:42:57 瀏覽:340