### binlog
> binlog日志用于記錄所有更新且提交了數據或者已經潛在更新提交了數據(例如,沒有匹配任何行的一個DELETE)的所有語句。語句以“事件”的形式保存,它描述數據更改。
**binlog作用**
1. 恢復使能夠最大可能地更新數據庫,因為二進制日志包含備份后進行的所有更新。
2. 在主復制服務器上記錄所有將發送給從服務器的語句。
### undo log
> Undo Log是為了實現事務的原子性,在MySQL數據庫InnoDB存儲引擎中,還用UndoLog來實現多版本并發控制(簡稱:MVCC)。
> 實現原子性和持久化的事務的簡化過程
- **事務的原子性(Atomicity) **
> 事務中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在執行的過程中發了錯誤,要回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過。
- **原理 **
> Undo Log的原理很簡單,為了滿足事務的原子性,在操作任何數據之前,首先將數據備份到一個地方(這個存儲數據備份的地方稱為UndoLog)。
> 然后進行數據的修改。如果出現了錯誤或者用戶執行了ROLLBACK語句,系統可以利用UndoLog中的備份將數據恢復到事務開始之前的狀態。
> 除了可以保證事務的原子性,Undo Log也可以用來輔助完成事務的持久化。
- **事務的持久性(Durability) **
> 事務一旦完成,該事務對數據庫所做的所有修改都會持久的保存到數據庫中。為了保證持久性,數據庫系統會將修改后的數據完全的記錄到持久的存儲上。
### redo log
> 記錄的是新數據的備份。在事務提交前,只要將Redo Log持久化即可,不需要將數據持久化。當系統崩潰時,雖然數據沒有持久化, 但是RedoLog已經持久化。系統可以根據RedoLog的內容,將所有數據恢復到最新的狀態。
**Undo+Redo**
事務的特點
A.為了保證持久性,必須在事務提交前將RedoLog持久化。
B.數據不需要在事務提交前寫入磁盤,而是緩存在內存中。
C.RedoLog保證事務的持久性。
D.UndoLog保證事務的原子性。
E.有一個隱含的特點,數據必須要晚于redolog寫入持久
- 虛擬機
- JVM內存結構
- JVM調優手段
- java對象生命周期
- 垃圾回收判斷對象死亡
- 垃圾回收算法
- 垃圾收集器
- JAVA基礎知識
- java事件機制
- java反射機制
- jvm創建對象
- java異常
- finally語句一定會執行嗎?
- 集合類介紹
- ArrayList
- LinkedList
- HashMap
- ConcurrentHashMap
- 多線程
- 為什么要使用線程池
- 線程死鎖
- 死鎖檢測和解除
- jstack
- jconsole
- 死鎖預防
- 常見線程池
- 線程池參數
- 工作隊列介紹
- 拒絕策略
- ThreadLocal
- CAS
- ReentrantLock
- AQS
- CountDownLatch
- Spring
- spring中bean的作用域
- REDIS
- redis數據結構
- redis hash實現
- redis rehash與hashmap擴容的區別
- Redis使用場景
- Redis為何這么快
- redis連接數不足導致錯誤
- 分布式
- 分布式事務
- ACID
- CAP
- BASE
- 事務隔離性
- 一致性哈希算法
- 負載均衡算法
- Hystrix 信號量和線程池隔離的差異
- Spring Cloud
- eureka
- MYSQL
- mysql優化經驗
- undo redo binlog
- web
- http協議
- http和https區別
- Cookie和session
- TCP三次握手、4次揮手
- TCP的time_wait和close_wait
- 算法問題
- 編輯距離算法
- MQ
- RabbitMq
- Kafka
- 安裝教程
- Win ELK安裝