我正在使用MyISAM唯一的數據庫,並且大表上的更新花費了太多時間。桌子的大小約爲30GB(MYD和MYI各15GB)。無論如何,除了看索引,我還可以提高速度嗎?優化更新聲明
優化更新聲明
回答
的MyISAM鍵緩存調整: http://docs.oracle.com/cd/E19957-01/mysql-refman-5.4/optimization.html#myisam-key-cache
一般性能優化:(有很多) http://docs.oracle.com/cd/E19957-01/mysql-refman-5.5/optimization.html
30 GB是相當大的,你運行一個高端服務器?
Mysql消耗超過100%的CPU,有時CPU顯示30-50%的最高輸出。這是正常的嗎?另一個問題是,如果我在更新記錄之前選擇,是否會使用緩存? – shantanuo 2012-03-04 07:23:42
取決於它運行的機器。我已經在這個太高的地方運行了小型服務器,並且我一直在共享網絡主機上,因爲它運行的是24個核心,所以100%cpu時間不算什麼。然而,即使對於具有許多內核和大量內存的服務器,30GB也是相當高的(許多高端服務器在2012年只能處理32-64個內存)。如果你有一小部分查詢被頻繁訪問,那麼它可能是好的。如果你正在查詢一個大集合,並且沒有太多的db存儲在RAM中,那麼你的大瓶頸就是需要將這些文件從光盤分頁到RAM中。 – SinisterRainbow 2012-03-17 02:25:00
如果您正在加載大量數據,請查看批量插入命令,或根據具體情況加載數據infile。
如果你正在做大量的插入,可能值得在插入之前測試關鍵的禁用。它可能有助於加快速度。
使用
insert into myTable values("rec1","hello"),("rec2","world"),("rec3","cheesy huh");
將在1條語句插入3條記錄 - 同樣,你需要對其進行測試。
我已經完成了這種形式的插入與成千上萬的行,它在我的例子中效果很好。
一些筆記可以interessting:
- 更改存儲引擎(InnoDB的是高容量表更好)
- Partitionate您的表(或整個DB)劃分爲多個邏輯片(如數據按年,本月,區域等),所以表格會更多,但較小的
- 確保MySQL的加入緩衝區的大小和類似的指標是足夠大的快速交付
- 1. 優化工作MYSQL聲明
- 2. SQL優化案例聲明
- 3. 在MariaDB中優化1次SQL更新聲明
- 4. 更新聲明?
- 5. 更新聲明
- 6. Oracle更新聲明
- 7. SQL更新聲明
- 8. Postgresql更新聲明
- 9. mysql更新聲明
- 10. 優化函數聲明位置
- 11. MySQL聲明的性能和優化
- 12. 使用類型聲明進行優化
- 13. 優化紅寶石檢測聲明
- 14. PHP優化極長開關罩聲明
- 15. SBCL優化:函數的類型聲明
- 16. 優化聲明java地圖的方法
- 17. 請幫我優化這個Linq聲明
- 18. 優化Mysql加入聲明查詢
- 19. Oracle - 優化更新
- 20. 優化QListView更新
- 21. Postgres優化更新
- 22. MySql更新優化?
- 23. LINQ聲明優化 - 尋求更好設計的建議
- 24. 刪除表聲明變量更適合優化嗎?
- 25. 更新聲明不更新字段
- 26. PSQL批量更新聲明
- 27. Java更新聲明問題
- 28. 限額更新聲明
- 29. Oracle SQL更新聲明
- 30. 更新與除聲明
沒有看到你的表結構nd更新查詢是非常困難的。請提供更多信息。 – 2012-03-04 07:07:14