我正在寻找处理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