MySQL中行数的限制

时间:2012-03-27 13:26:34

标签: mysql performance optimization

当涉及到表中的行数时,MySQL的性能有哪些限制?我目前有一个运行项目,每小时运行一次cronjobs。这些人收集数据并将其写入数据库。

为了提高性能,我正在考虑将这些cronjobs的数据保存在表格中。 (不只是结果,而是所有的事情)。数据本身将与此类似;

imgId (INT,FKEY->images.id) | imgId (INT,FKEY->images.id) | myData(INT)

因此,每行的实际数据非常小。问题是,此表中的行数将呈指数级增长。随着我添加的每个imgId,我需要myData 每个其他图片。这意味着,对于3000张图像,我将有3000 ^ 2 = 9百万行(不计算对角线,因为我现在懒得做)。

我很担心MySQL能够处理这些前提条件。每小时将在原始表中添加大约100-300个新条目,这意味着交叉表中有10,000到90,000个新条目。

出现了几个问题:

  • 表格中的行数有限制吗?
  • 什么时候(如果)MySQL会显着降低性能?
  • 我可以采取什么行动来使这个跨表快速(尽可能快,写作不必很快)?

修改

我刚刚通过多项式插值完成,结果证明增长不会像我原先想象的那样激烈。由于关系1-22-1具有相同的数据,因此我只需要“一半”表格,将增长率降至(x^2-x)/2

不过,它会得到很多。

1 个答案:

答案 0 :(得分:0)

900万行不是一张巨大的表。鉴于您提供的结构,只要它的索引正确,select / update / insert查询的性能就不会成为问题。 DDL可能有点慢。

由于所有行都已由笛卡尔联接描述,因此您无需填充整个表。

如果图像对的顺序不重要,那么您可以通过对属性进行排序或使用两个/三个表模式来保存一些空间,其中imgIds是等效的。