当涉及到表中的行数时,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个新条目。
出现了几个问题:
修改
我刚刚通过多项式插值完成,结果证明增长不会像我原先想象的那样激烈。由于关系1-2
与2-1
具有相同的数据,因此我只需要“一半”表格,将增长率降至(x^2-x)/2
。
不过,它会得到很多。
答案 0 :(得分:0)
900万行不是一张巨大的表。鉴于您提供的结构,只要它的索引正确,select / update / insert查询的性能就不会成为问题。 DDL可能有点慢。
由于所有行都已由笛卡尔联接描述,因此您无需填充整个表。
如果图像对的顺序不重要,那么您可以通过对属性进行排序或使用两个/三个表模式来保存一些空间,其中imgIds是等效的。