我正在尋找處理MySQL中大表的選項。在我的數據庫中,幾乎沒有超過1.3億行(超過70GB)的表增長非常快。爲了報告和分析目的,我必須運行一些聚合函數,儘管有索引,查詢運行速度非常慢。我試圖用合併數據製作一些表格,但這不是最佳的。所以我正在尋找可以用來解決這個問題的工具。非常大的mysql表和報告
回答
開始通過尋找到partition
荷蘭國際集團的表,如果您尚未:
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html
http://www.slideshare.net/datacharmer/mysql-partitions-tutorial
你是如何 '整合' 你的數據嗎?也許你使用的方法不是最優的。一種好的方法(讓我知道這實際上是你在做什麼)是創建一個包含聚合數據的表。然後將其設置是這樣的:
首先拋開數據是如何被傾倒到主桌...
創建任務(cron或任何你可以有方便的或已配置),其相對於如何將數據加載到主表中的指定時間間隔運行(我們稱之爲
以上MAIN
,前進)。如果您的MAIN表每小時加載一次,則將其同步。半小時?沒關係。無論如何您都可以檢查速度,或者您的報告運行時間接近非高峯時段,然後計劃在正確地爲您的表索引合併數據。我們稱之爲
AGG
。創建一個將數據從MAIN加載到AGG的存儲過程,該存儲過程基本上是
AGG LOAD FOR INTERVAL-?
。當然,在這裏你是唯一一個知道數據如何或何時插入MAIN的人,所以你也是知道聚集意圖是什麼的人。如果聚合意圖未完成(也就是說它是一整天,所以它是一個累計運行,直到設置爲止),也可以繼續運行聚合存儲過程。使用
STAGING
表。 對我來說,他們是最好的。創建一個重新檢查數據的存儲過程,以便通過運行此過程可以在AGG表中反映任何更新或記錄的其他插入操作。包含要更新的範圍的參數。如果它是每天,那麼你有一個
DAILY AGG LOAD
和DAILY AGG RELOAD
程序。包括一個AGG CHECK INTERVAL
和AGG CHECK DAILY
程序,這將有助於你在晚上睡得好。哦,更不用提AGG DATA HOLE CHECK
或MISSING AGG DATA CHECK
和應用實現檢查數據所需要的最小量,你可以從彙總表或從主表或臨時表(最好)當然獲得業務規則,千萬不要修改
AGG
表。始終只重新加載它。這有什麼用?那麼你不需要讓你的報告查詢
AGG
表,它更小,更快(因爲聚合已經完成)?性能問題可能是在間隔加載時出現的,但是如果您正確地構建表,其索引和維護,它應該是值得的。分區進來了嗎?存檔。一旦某段時間過去了(討論什麼是你的團隊/老闆/頂級人物可以接受的),你可以從
MAIN
歸檔舊數據。我經歷過不得不在生產數據庫中保存一年的數據。這種感覺像是一種阻力,但因爲這是客戶的要求,所以公司別無選擇,只能給我所需的磁盤空間(搓手),而男孩則一直陪伴着它,直到我得到一些體面的東西。我必須提到我的經驗是使用Microsoft SQL Server 2005,存儲過程和SSIS使它變得有趣。
這是所有如果你不知道它,併爲其他人可能想考慮的選項。我並不是說你不知道上面的任何一個;我只是說明我以前能夠做的事情 - 考慮到我沒有更多的信息與你的帖子一起工作,除了你有一個合併過程,你嘗試過..
感謝您的建議。我已經嘗試了很多次,可能不是這樣的順序。所以我應該從一個好的計劃開始。 – user1078191 2011-12-23 15:27:40
是的,我應該提到這一點。正確計劃,預測並永遠不要低估(就磁盤空間而言,估計會更好一些)您的要求.. – Nonym 2011-12-24 04:46:38
- 1. birt,doc報告和一個非常大的文件
- 2. 大細節表和報告
- 3. PHP和MySQL最大的報告
- 4. FFprobe報告在非常大的.mov文件上無效的sample_count
- 5. 大型MySQL表非常慢選擇
- 6. MySQL的性能和設計的非常大的表
- 7. Jasper報告JasperFillManager.fillReport非常緩慢
- 8. PHP報告非常緩慢,在Firefox
- 9. 在非計劃的mysql表中創建報告
- 10. mySQL格式和報表前端(非管理和非網絡)
- 11. 非常慢的mysql表
- 12. 放大報告
- 13. MySQL的非常大的檯面尺寸
- 14. C#asp.net報告和報表查看器(或的ReportViewer)子報告
- 15. 非常大的XML文件到MySQL
- 16. MySQL非常大的INT字段
- 17. 備份非常大的MySQL數據庫
- 18. SSRS子報告和主報告動態設置主報告大小
- 19. 將多個SSRS報告添加到一個報告中非常慢
- 20. 水晶報告最大報告處理
- 21. php和mysql用戶跟蹤和報告
- 22. TFS tbl_TestResult表非常大
- 23. Zend Framework和Mysql - 非常慢
- 24. NullPointerException異常報告
- 25. php/mysql更新非常大的表格更好的選擇
- 26. MySQL如何從非常大的表中刪除重複的行?
- 27. MySQL的非常大的表 - 創造超過24小時
- 28. PHP/MySQL報告庫
- 29. MySql每日報告
- 30. MySQL彙總報告
什麼方法/方法你用來整合你的數據嗎? – Nonym 2011-12-23 02:13:33
我運行了一些預聚合查詢來填充彙總表 – user1078191 2011-12-23 13:51:33
硬件,存儲引擎,查詢本身,索引 - 所有這些都會影響查詢的速度。您可以運行'EXPLAIN SELECT'來查看MySQL的功能。 70演出是很多數據,但它可以始終進行優化(不同的存儲引擎,規範化,分區) - 由於您沒有發佈進行分析所需的任何信息,因此很難指出問題並提出解決方案除了通常的解決方案 - 比如Nonym的答案。 – 2011-12-23 15:13:25