每次创建一个新表还是使用一个表更好?

时间:2014-11-14 00:28:17

标签: c# mysql sql wamp

我创建了一个程序,每天输出大约300,000行数据以存储在数据库中。我对SQL有点新,但我想知道是否更好的做法是每天以编程方式创建一个新表,并将日期作为后缀,从而每天创建一个新的300,000行表,或者将它们全部存储在一个表中表并每天插入它们并使用DATETIME列来处理数据。

我倾向于第二种选择但是我不确定我是否会达到一个" cap"由于每天添加300,000行,一段时间后的行数。那一年有超过1亿行数据,MySQL数据库可以处理吗?

3 个答案:

答案 0 :(得分:0)

您可以在数据库表中存储的行数的唯一真正硬限制是它的主键大小。

E.g。如果你的主键是一个int,它使用4个字节,可以达到45亿行的顺序。如果你使用bigint ....这很多。

在我看来,将它们全部放在一个表格中要好得多,只需使表格尽可能精简和基于性能。

E.g。如果您可以使用具有日期时间戳的大长日期的短格式数据。 如果你可以轻松使用45亿行(每行节省4个字节)。

最好在表格中没有任何Guid,尤其不要作为主键。如果可能,请使用一个主键列。

我相信其他人可以参与进来。

除主键大小外,还有其他限制因素。例如。您在数据库文件所在的驱动器上有多少物理空间。

答案 1 :(得分:0)

与@ jpw的评论一样 - 你想用它做什么?

围绕您的问题设置一些边界/上下文:

  • 300,000行不是那么大。我记得在Access '95中玩了2,000,000个行数据集。
  • 同样,正如@jpw的链接指出的那样,限制是基于文件大小而不是行大小。 300,000行的CSV与300,000行二进制blob数据非常不同

可能会有所帮助:

  • 数据库非常适合存储和检索类似数据。例如,一个日志表(与可以存储大量文件的文件系统相比)
  • 他们也非常擅长索引/搜索/过滤/排序

您是否尝试过对结果进行基准测试?即你有一天的记录。尝试365次导入数据集,看看会发生什么。

答案 2 :(得分:0)

随着应用程序数据的增加,您可以考虑对数据进行分片或水平缩放。分片将数据集分开,并通过多个服务器或分片分发数据。每个分片都是一个独立的数据库,而且分片共同组成一个逻辑数据库。