mysql 關於切分查詢

2021-06-16 12:57:33 字數 544 閱讀 8097

對於大查詢有時需要『分而治之』,將大查詢切分為小查詢: 每個查詢功能完全一樣,但只完成原來的一小部分,每次查詢只返回一小部分結果集。

刪除舊的資料就是乙個很好地例子。定期清理舊資料時,如果一條sql涉及了大量的資料時,可能會一次性鎖住多個表或行,耗費了大量的系統資源,卻阻塞了其他很多小的但重要的查詢。將乙個大得delete語句切分為較小的查詢時,可以儘量減少影響msql的效能,同時減少mysql複製造成的延遲。

例如,每個月會執行一次的語句,以清理三個月前的資料:

mysql> delete from messages where dt

可以用以下的方法來完成這樣的任務:

rows_affected = 0

do while rows_affected>0

一次刪除一萬行資料是個比較高效且對伺服器影響較小的做法。同時如果每次刪除資料時暫停一會,可以將伺服器原本的一次性壓力分散到乙個較長的時間段中,從而減少刪除時鎖表鎖行的時間。

(參考自《高效能mysql》)

關於mysql查詢 關於MYSQL 查詢

你想要的是這種效果嗎?建立表city cost create table city cost id int primary key auto increment,cost time date,city varchar 20 money int auto increment 1 插入資料 insert...

MySQL 資料切分

通過某種特定的條件,將存放在同乙個資料庫中的資料分散存放到多個資料庫上面,以達到分散單台裝置負載的效果 資料切分可以提高系統的總體可用性,單台裝置宕機之後,只有總體資料的某部分不可用,而不是所有的資料 按照不同的表 或者 schema 來切分到不同的資料庫 主機 之上 具體就是 需要架構設計良好,功...

mysql水平切分

mysql水平切分 在大中型專案中,在資料庫設計的時候,考慮到資料庫最大承受資料量,通常會把資料庫或者資料表水平切分,以降低單個庫,單個表的壓力。我這裡介紹兩個我們專案中常用的資料表切分方法。當然這些方法都是在程式中使用一定的技巧來路由到具體的表的。首先我們要確認根據什麼來水平切分?在我們的系統 s...