【问题标题】:Performing Heavy Crunching On a Table Without Affecting the Table在不影响桌子的情况下对桌子进行重压
【发布时间】:2012-03-28 03:05:32
【问题描述】:

我正在寻找一些关于在不影响对表进行常规站点查询的性能的情况下对数据库表执行繁重处理/数据挖掘的最佳方法的一般性建议。一些计算可能涉及连接多个表,并涉及复杂的排序和排序。所以“使用更好的索引”并不总是解决方案。

这个问题并不具体。我正在寻找一种通用方法来解决多年来多次出现的问题。所以我没有要显示的特定表架构,要显示的特定查询。我考虑过首先使用 mysqldump 转储表,然后以不同的名称重新导入表,然后对该临时表执行繁重的运算。我的系统管理员讨厌这个想法,所以我正在寻找人们提出的任何其他解决方案来处理此类问题。

【问题讨论】:

  • 也许是表格的副本?
  • 复制。将表复制到另一台服务器并在那里进行处理。和你用mysqldump的想法基本一样,只是你让MySQL为你做所有的工作。
  • @N.B.如果我正在处理的复制数据库是在生产中使用的从属数据库,你会说没关系吗?还是应该是一个完全不同的数据库,只用于大型运算?
  • 这取决于您的实际需求。没有什么可以阻止您复制到多个从站并使用它们,但您认为合适。规则是,你做的越少,系统就越快。因此,如果您在单独的物理计算机上运行数据处理,您的整个系统不会受到影响。

标签: mysql rdbms rdbms-agnostic


【解决方案1】:

如果您的“繁重处理”都是只读的,并且您没有做任何需要写回生产数据的操作,请使用主/从复制并使用从属来满足您的所有报告和数据分析需求。复制链接将使从站上的值保持最新,并且您可以在不减慢为您的生产系统服务的主站的情况下以尽可能多的负载访问从站。

【讨论】:

    【解决方案2】:

    如果您想避免影响生产数据库的性能,我之前使用的唯一解决方案是在另一台数据库服务器上运行您的查询。

    我会备份整个数据库,然后在单独的服务器上恢复它。

    显然,如果您想分析实时数据,则无法执行此操作。但对于大多数分析来说,前一天的快照就足够了。

    【讨论】:

    • 我很好奇您将如何将生产数据库移动到另一个数据库服务器。我导入mysql后的mysqldump是slooooooow。 :)
    • 使用 SQL Server 比较轻松。运行完整备份。将数据库备份文件复制到新服务器。从备份中恢复数据库。最慢的部分是备份文件的副本。这完全取决于数据库的大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2021-09-02
    • 2015-03-11
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多