分析器:解析知道這是一條更新語句
優化器:決定使用id索引
執行器:具體執行(包括執行+1之類的)
redolog:crash-safe能力,write pos和checkpoint的概念。 引擎層innodb,在資料庫讀取的時候不會用redolog合併,會用change buffer中的資料
binlog:為什麼只能用於歸檔?沒有提交狀態?
redolog
記錄在某個資料頁上做了什麼修改(具體怎麼做的)
binlog
給id=2這一行的c欄位+1 (做了什麼做乙個解釋)
redolog當作事務的標識 binlog標識資料操作
wal:先寫日誌,再寫磁碟
髒頁:記憶體資料頁和磁碟資料頁內容不一致
乾淨頁:記憶體和磁碟上的資料頁內容一致
mysql抖一下 1、刷髒頁 2、淘汰髒頁
寫入磁碟的幾種情況
1、redo log滿了 checkpoint會往前推進,所有髒頁flush到磁碟
2、記憶體滿了 淘汰資料頁,如果是髒頁,先寫到磁碟。(如何判斷是髒頁?),淘汰髒頁的時候,redolog會刪嗎
3、不忙的時候
4、mysql關閉的時候
刷髒頁的策略:設定innodb_io_capacity(我的磁碟能力),iops(通過fio工具測試)
mysql寫入速度慢,tps低,io壓力不大,可能就是innodb_io_capacity設定問題(innodb系統認為系統的能力差,刷髒頁慢)
1、髒頁比例 2、redo log寫磁碟速度
髒頁比例演算法
innodb_buffer_pool_pages_dirt/innodb_buffer_pool_pages_total
髒頁連坐刷 innodb_flush_neighbors
binglog會有乙個標識表示binlog已經寫完了。
MYSQL學習筆記 SQL更新語句的執行
mysql更新語句是這樣子的 mysql update t set c c 1 where id 2 更新語句跟查詢語句走的流程是一樣的 跟查詢一樣,聯結器 查詢快取 分析器 優化器 執行器。與查詢不同的地方,多了兩個日誌模組redolog和binlog.redo log 由於每次操作如果每次對資料...
更新語句的執行過程
更新語句的流程跟查詢語句大體相同 1.連線資料庫 聯結器的工作 2.在乙個表上有更新的時候,跟這個表有關的查詢快取會失效 3.分析器會通過詞法和語法解析知道這是一條更新語句 4.優化器決定要使用哪個索引 更新也需要先查找到目標行 5.執行器負責具體執行,找到需要更新的行,然後更新。與查詢流程不一樣的...
SQL注入批量更新語句
sql 2000解決方法 declare fieldtype sysname set fieldtype varchar 刪除處理 declare hcforeach cursor global forselect n update quotename o.name n set quotename ...