1.redolog & binlog
2.剖析:update t set c=c+1 where id=2
3.redolog兩階段:prepare &commit
4.設定redolog&binlog持久化到磁碟
寫在開頭:
//本文涉及的資料庫語句:
create table t
(id int primary key)
;update t set c=c+
1 where id=
10;
1.redolog(重做日誌)&binlog(歸檔日誌)?舉個例子:
代文開了一家火鍋店,本店可以賒賬,倘若最近手頭緊,沒錢吃飯,可以先吃,在記賬。
記賬的這個工具,本店採用的是小黑板,記賬形式如下:
那麼 ,問題來了,這個黑板寫滿了,該怎麼辦?難道寫滿了,賒賬就無法繼續了嗎?或者說,若想繼續,就得之前記好的擦除,那張三李四還會認這筆帳嗎?!
這個時候,老闆就想了乙個機制-賬本,一旦黑板寫滿了,就記錄到賬本中,再將黑板內容自頂向下擦除,繼續賒賬~
1.1redolog(重做日誌)
redolog是innodb特有的日誌,可以模擬為上述提到的黑板,大小固定,保證即使資料庫發生異常重啟,之前的資料也不會丟失。也就是常聽到的crash-safe;
就好比火鍋店今天停業整頓,並不影響黑板和賬本上的資料,乙個道理。
1.2 binlog(歸檔日誌)
既然redolog和binlog在不同的模組,為什麼要設定兩個階段?prepare和commit有什麼作用?
思考:
寫在最後:
redolog是innodb引擎特有的,它***crash-safe的能力
好了,本文就到這裡吧,希望對你有所幫助~
MySQL一條語句更新多個表的方法
mysql本身是支援一條update語句更新多個表的,有時候這是非常有用的乙個特性。update low priority ignore table references set col name1 col name2 where where condition 於是繼續找table referen...
Mysql 一條語句的執行過程(2) 補充
欄位名稱有誤的sql解析 select from test2 where kkk 2 有興趣測了下這個kkk列不存在的時候什麼時候出錯已了解下對sql的解析過程 對應的 路徑 breakpoint 1,dispatch command thd 0x7efac40124f0,com data 0x7e...
mysql 插入更新一條sql 搞定
插入資料時,我們經常會遇到這樣的情況 1 首先判斷資料是否存在 2 如果不存在,則插入 3 如果存在,則更新。在sql server中可以這樣處理 if not exists select 1 from t where id 1 insert into t id,update time values...