2014-02-21 36 views
0

关于MySQL和优化过大表问题。 MySQL服务器运行在有限容量的服务器上,我们需要尽可能优化它。对于大表优化的MySQL

我们以每秒一次测量的速率对数据进行采样,并使用它在Web应用程序上绘制图形。

目前,所有这些数据分别是一个表中,我们结束了数以百万计的数据点。

我们有几个数据源,它们都有两个ID:一个用于位置,一个用于源自身。我们同时使用两个id来拥有唯一的id,并且我们不使用MySQL id来减小数据的大小。我们使用posix plus两个id作为表主键,并使用它们来查询数据库。这些ID不是由SQL生成的。

通常我们在绘制时间段和几个源使用约400点图。

问题: 这种设计的最佳优化是什么?

第一个问题:将所有数据保存在单个表中还是将它们拆分成多个表更好?这样做会使代码复杂化,因为我们拥有动态表。

如果最好将它们保存在一张表中,那么使用基于ID和POSIX的主键是否正确?

是否有这样的目的,一些具体的MySQL优化?

感谢

回答

0

如果我深知,对于这种情况最好的优化将是具有distributed database。更具体地说,我会将horizontal partitioning method应用于您提到的此表。

粗略地说,这是一种根据一些特定标准将表格分成片段的方法,以便您的查询不必一次处理大量数据。您可以使用它仅处理某些特定查询的相关数据,或者甚至使用并行处理来处理所有数据。

请允许我不要进一步解释,因为我不确定这是否正是您想要和需要的,也是因为您可能会按照自己的步调更好地阅读此问题。不过,希望通过给你一个出发点来帮助你。

+0

从你简短的说明,我会说这似乎按时间或源完全适合我们的需求,分片是否。我会进一步阅读它。 – Damien

+0

事实上,时间戳上的碎片将查询数提高了8倍。 – Damien

+0

辉煌!很高兴我能帮忙! – lucasnadalutti