我正在寻找关于在数据库表上执行重度运算/数据挖掘的最佳方法的一些一般性建议,而不会影响表上常规站点查询的性能。一些计算可能涉及连接几个表,并涉及复杂的排序和排序。所以“使用更好的索引”并不总是解决方案。
这个问题并不具体。我正在寻找解决多年来多次出现的问题的一般方法。所以我没有要显示的特定表模式,要显示的特定查询。我已经考虑过首先使用mysqldump转储表,然后以不同的名称重新导入表,然后在该临时表上执行我的重度运算。我的系统管理员讨厌这个想法,所以我正在寻找人们提出来处理这类问题的任何其他解决方案。
答案 0 :(得分:2)
如果您的“重度运算”都是只读的,并且您没有做任何需要写回生产数据的内容,请使用主/从复制并使用Slave满足您的所有报告和数据分析需求。复制链接将使Slave上的值保持最新,您可以根据需要加载Slave,而不会降低为生产系统提供服务的Master。
答案 1 :(得分:0)
如果您想避免影响生产数据库的性能,我之前使用的唯一解决方案是在另一个数据库服务器上运行您的查询。
我会备份整个数据库,然后在单独的服务器上恢复它。
显然,如果要分析实时数据,则无法执行此操作。但对于大多数分析来说,前一天的快照就足够了。