《高效能MySQL(第3版)》之切分查詢

2021-07-16 04:09:48 字數 785 閱讀 3655

有時候對於乙個大查詢我們需要「分而治之」,將大查詢切分成小查詢,每個查詢功能完全一樣,只完成一小部分,每次只返回一小部分查詢結果。

刪除舊的資料庫就是乙個很好的例子。定期地清除大量資料時,如果用乙個大的語句一次性完成的話,則可能需要一次性鎖住很多資料、佔滿整個事務日誌、耗盡系統資源、阻塞很多小的但重要的查詢。將乙個大的delete語句切分成多個較小的查詢可以盡可能小地影響mysql效能,同時還可以減少mysql複製的延遲。例如,我們需要每個月進行一次下面的查詢:

mysql>delete from messages where created < date_sub(now(),interval 3 month);

那麼可以用類似下面的辦法來完成同樣的工作:

rows_affected = 0  

dowhile rows_affected > 0

mysql date_sub()函式從日期減去指定的時間間隔。

語法:date_sub(date,interval expr type)

date 引數是合法的日期表示式。expr 引數是您希望新增的時間間隔。

type引數請參考**:mysql date_sub() 函式

一次刪除一萬行資料一般來說是乙個比較高效而且對伺服器影響小的做法(如果是事務性引擎,很多時候小事務能夠更高效)。如果每次刪除資料後,都暫停一會兒再做下一次刪除,這樣也可以將伺服器上原本一次性的壓力分散到乙個很長的時間段中,就可以大大降低對伺服器的影響,還可以大大減少刪除時鎖的持有時間。

高效能MySQL 第3版(中文)pdf

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!編輯 高效能mysql 是分享mysql實用經驗的圖書。它不但可以幫助mysql初學者提高使用技巧,更為有經驗的mysql dba指出了開發高效能mysql應用的途徑。高效能mysql 第2版 包含14章和4個附錄,內容覆蓋mysql系統架構 設計...

高效能MySQL(第3版)筆記 1 2 併發控制

在處理併發讀或者寫時,可以通過實現乙個由兩種型別的鎖組成鎖系統來解決問題 共享鎖 shared lock 也叫讀鎖 read lock 排他鎖 exclusive lock 也叫寫鎖 write lock 讀鎖 共享,互不阻塞,多個客戶在同一時刻可以同時讀取同乙個資源而互不干擾 寫鎖 排他,會阻塞其...

讀過的書,留下的跡 高效能MySQL(第3版)

最近發現有時候看完一本書,時間久了容易忘記,看書不總結思考效果大打折扣,故打算寫這一系列文章,一是為了整理書中的要點,幫助自己消化理解 二是勉勵自己多看書思考。文章中不會把書中內容講解的非常詳細,只是總結概括,適合已經閱讀過該書的讀者。基準測試是針對系統設計的一種壓力測試 測試指標 基準測試常見錯誤...