我创建了一个程序,每天输出大约300,000行数据以存储在数据库中。我对SQL有点新,但我想知道是否更好的做法是每天以编程方式创建一个新表,并将日期作为后缀,从而每天创建一个新的300,000行表,或者将它们全部存储在一个表中表并每天插入它们并使用DATETIME列来处理数据。
我倾向于第二种选择但是我不确定我是否会达到一个" cap"由于每天添加300,000行,一段时间后的行数。那一年有超过1亿行数据,MySQL数据库可以处理吗?
答案 0 :(得分:0)
您可以在数据库表中存储的行数的唯一真正硬限制是它的主键大小。
E.g。如果你的主键是一个int,它使用4个字节,可以达到45亿行的顺序。如果你使用bigint ....这很多。
在我看来,将它们全部放在一个表格中要好得多,只需使表格尽可能精简和基于性能。
E.g。如果您可以使用具有日期时间戳的大长日期的短格式数据。 如果你可以轻松使用45亿行(每行节省4个字节)。
最好在表格中没有任何Guid,尤其不要作为主键。如果可能,请使用一个主键列。
我相信其他人可以参与进来。
除主键大小外,还有其他限制因素。例如。您在数据库文件所在的驱动器上有多少物理空间。
答案 1 :(得分:0)
与@ jpw的评论一样 - 你想用它做什么?
围绕您的问题设置一些边界/上下文:
可能会有所帮助:
您是否尝试过对结果进行基准测试?即你有一天的记录。尝试365次导入数据集,看看会发生什么。
答案 2 :(得分:0)
随着应用程序数据的增加,您可以考虑对数据进行分片或水平缩放。分片将数据集分开,并通过多个服务器或分片分发数据。每个分片都是一个独立的数据库,而且分片共同组成一个逻辑数据库。