SQL更新語句執行

2021-09-24 06:19:00 字數 1002 閱讀 2212

分析器:解析知道這是一條更新語句

優化器:決定使用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 ...