MySQL切分查詢用法分析
本文實(shí)例講述了MySQL切分查詢用法。分享給大家供大家參考,具體如下:
對(duì)于大查詢有時(shí)需要‘分而治之',將大查詢切分為小查詢: 每個(gè)查詢功能完全一樣,但只完成原來的一小部分,每次查詢只返回一小部分結(jié)果集。
刪除舊的數(shù)據(jù)就是一個(gè)很好地例子。定期清理舊數(shù)據(jù)時(shí),如果一條sql涉及了大量的數(shù)據(jù)時(shí),可能會(huì)一次性鎖住多個(gè)表或行,耗費(fèi)了大量的系統(tǒng)資源,卻阻塞了其他很多小的但重要的查詢。將一個(gè)大得DELETE語句切分為較小的查詢時(shí),可以盡量減少影響msql的性能,同時(shí)減少mysql復(fù)制造成的延遲。
例如,每個(gè)月會(huì)運(yùn)行一次的語句,以清理三個(gè)月前的數(shù)據(jù):
可以用以下的方法來完成這樣的任務(wù):
rows_affected = 0 do { rows_affected = do_query("DELETE FROM messages WHERE dt<DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000") }while rows_affected>0
一次刪除一萬行數(shù)據(jù)是個(gè)比較高效且對(duì)服務(wù)器影響較小的做法。同時(shí)如果每次刪除數(shù)據(jù)時(shí)暫停一會(huì),可以將服務(wù)器原本的一次性壓力分散到一個(gè)較長(zhǎng)的時(shí)間段中,從而減少刪除時(shí)鎖表鎖行的時(shí)間。
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》、《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)復(fù)合查詢操作實(shí)戰(zhàn)
mysql表的查詢都是對(duì)一張表進(jìn)行查詢,在實(shí)際開發(fā)中這遠(yuǎn)遠(yuǎn)不夠,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)復(fù)合查詢的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Mysql LONGTEXT 類型存儲(chǔ)大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)
MySql2.cpp : Defines the entry point for the console application.2009-07-07深入探討:MySQL數(shù)據(jù)庫(kù)MyISAM與InnoDB存儲(chǔ)引擎的比較
本篇文章是對(duì)MySQL數(shù)據(jù)庫(kù)MyISAM與InnoDB存儲(chǔ)引擎的比較進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06