我有一個擁有500萬行的站點和數據庫,它的工作方式就像一個魅力。但是,我每小時運行一次清理cronjob,將舊數據放到「日誌」表中並刪除舊數據,此時服務器響應非常緩慢。是否有可能通過PHP或MySQL將這項工作放在較低的優先級上?PHP或MySQL中的低優先級請求
回答
我想在您的清理最重的任務是DELETE操作,您可以使用LOW_PRIORITY。
從MySQL manual pageDELETE語法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name ...
和描述:
如果你指定LOW_PRIORITY,服務器延遲DELETE的執行,直到沒有其他r客戶正在從表中讀取。這隻影響只使用表級鎖定的存儲引擎(如MyISAM,MEMORY和MERGE)。
有一個在MYSQL這樣的事情作爲低優先級的更新 - 其記錄在這裏 - >http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_low-priority-updates
**只對MyISAM,MEMORY,MERGE存儲引擎....
之一MYSQL中的低優先級請求是INSERT DELAYED。但它只適用於INSERT,而不是UPDATE或DELETE。
編輯:我只知道DELETE也可以推遲!
這是我的一個查詢:$ sql \t = \t「INSERT INTO #__bet_oddslog(id,team1,team2,league,sport,time,q1,q2)」; 。 \t \t \t \t \t $ SQL \t \t = 「SELECT a.id,a.team1,a.team2,a.league,a.sport,a.time,AVG(b.q1)作爲Q1,」; \t \t \t \t \t $ SQL \t \t = 「AVG(b.q2)作爲Q2 FROM #__bet_details作爲,#__ bet_1x2_best爲b WHERE時間<'」 日期( 'YMD H:I:S',的strtotime (「now」))。「'AND a.id = b.bet_id GROUP BY b.bet_id」;還有一個選擇,它在這種情況下工作? –
不幸的是,我相信'INSET DELAYED'不適用於'INSERT ... SELECT'語句。 – EdoDodo
一種可能的解決方案是在從屬複製服務器上覆制舊數據。這樣,重負載完全在該奴隸箱上。在從屬設備上覆制完成後,您可以在主設備上刪除。
如在the documentation中所述,您可以將LOW_PRIORITY
添加到您的查詢中。所以,您的查詢就會變成:
$sql = "INSERT LOW_PRIORITY INTO #__bet_oddslog (id, team1, team2, league, sport, time, q1, q2)"; $sql .= " SELECT a.id, a.team1, a.team2, a.league, a.sport, a.time, AVG(b.q1) as q1, "; $sql .= " AVG(b.q2) as q2 FROM #__bet_details as a, #__bet_1x2_best as b WHERE time<'".date('Y-m-d H:i:s', strtotime("now"))."' AND a.id=b.bet_id GROUP BY b.bet_id";
- 1. Mysql中的低優先級查詢
- 2. IIS6 HTTP請求優先級
- 3. Node.js中的請求優先級隊列
- 4. Mysql或/和優先級?
- 5. AFNetworking:中斷較高優先級請求的後臺請求
- 6. 使exe優先級低
- 7. 低優先級Express.js app.get('/ route');
- 8. MySQL的優先級
- 9. OS X中的低優先級I/O
- 10. ASIHTTPRequest:優先請求
- 11. MySQL中的極端低優先級SELECT查詢
- 12. 優先級隊列中的優先級
- 13. PHP/MySQL數據庫連接優先級?
- 14. qsub低優先級的作業?
- 15. 降低Task.Factory.StartNew線程的優先級
- 16. 創建低優先級的Android服務
- 17. 優先級和優先級
- 18. MySQL和&或優先
- 19. OpenRasta:優先請求或:進行異步請求
- 20. 低優先級Timer1不工作
- 21. 從低優先級從java運行ffmpeg
- 22. 運算符優先級(按位'&'低於'==')
- 23. 發佈低優先級更新
- 24. matlab低優先級系統調用
- 25. Git Tower熱鍵(低優先級)
- 26. 如何在Spring MVC中定義請求映射的優先級?
- 27. MySQL寫鎖定優先級
- 28. MySQL鎖定優先級
- 29. 優先考慮ASP.NET請求
- 30. 哪個ErrorDocument請求優先?
它是什麼類型的數據庫? MyIsam,InnoDB等... – ashurexm
數據庫是MyISAM –