3

我正在设计一个系统,通过深入研究数字,我意识到它可以达到这样一个点,即每年(大约)可以有一个包含 54,240,211,584 条记录的表。哇!!!!

因此,我将其细分为 73,271,952 条记录/年(大约)。

我通过运行 一些excel 来
获得 数字成功=不



考虑到该表用于 SELECT、INSERT、UPDATE 和 JOIN 语句,并且这些语句将由登录到系统的任何用户每小时/每天/每周执行一次(历史数据不是一个选项):

问题1:第二个数量是否适合/方便MySQL引擎,这样性能会受到很小的影响???

问题 2:我将表设置为 InnoDB,但是考虑到我使用 JOINS 处理所有语句并且我愿意遇到 4GB 限制问题,InnoDB 有用吗???

表格快速概览:
表格 #1:用户/事件购买。最多 15 列,其中一些为 VARCHAR。
表#2:购买门票。最多 8 列,仅 TINYINT。主键 INT。每个表 #1 插入插入 4 到 15 行。
表#3:按票项目。4 列,仅 TINYINT。主键 INT。每个表插入 3 行 #2 插入。我想把它作为一个单独的桌子,但如果有人必须死......

表#3 是问题的目标。我减少到第二个数量的方法是使每个表#3 的行成为表#2 的列。

我不想做的事情,但如有必要,我会按周对表进行分区并向应用程序添加更多逻辑。

每个答案都有帮助,但更有用的是:
i)33,754,240,211,584:不,所以让我们放弃最后一个数字。
ii) 3,375,424,021,158:不,所以让我们去掉最后一个数字。
iii) 337,542,402,115:不,所以让我们去掉最后一个数字。依此类推,直到我们得到类似“嗯,这取决于很多因素......”

我会认为“对性能影响很小”吗???最多 1,000,000 条记录,执行查询不超过 3 秒。如果 33,754,240,211,584 条记录大约需要 10 秒,那对我来说非常好。

为什么我不自己测试一下???我想我没有能力做这样的测试。我要做的就是插入该数量的行并看看会发生什么。我更喜欢 FIRST 已经知道类似事情的人的观点。记住,我还在设计阶段

提前致谢。

4

3 回答 3

3

54,240,211,584 很多。我只有使用最多 3 亿行的 mysql 表的经验,它处理这个问题几乎没有问题。我不确定你实际上在问什么,但这里有一些注意事项:

  • 如果您需要事务支持,或者正在进行大量插入/更新,请使用 InnoDB。MyISAM 表不适合事务性数据,但如果您阅读量很大并且只时不时地进行批量插入/更新,则可以。

  • 如果您使用的是最新版本/最近的操作系统,则 mysql 没有 4Gb 限制。我现在最大的表是 211Gb。

  • 清除大表中的数据非常慢。例如,删除一个月的所有记录需要我几个小时。(虽然删除单个记录很快)。

  • 如果您期望有数十亿条记录,请不要使用 int/tinyint,它们会环绕。

  • 得到一些工作,在第一次发布后修复缩放。一个未实现的想法几乎毫无用处,(目前)可行的东西可能非常有用。

  • 测试。没有真正的替代品 - 您的应用程序和数据库的使用可能与其他人的庞大数据库大不相同。

  • 查看分区表,这是 MySQL 中的一项最新功能,可以帮助您以多种方式进行扩展。

于 2010-02-08T22:09:04.883 回答
1

从您所在的级别开始。从那里建造。

有很多人会向您出售您现在不需要的服务。

如果每月 10 美元的共享主机不再起作用,请升级并最终雇用某人来帮助您解决数据库的记录限制。

于 2010-02-08T21:53:23.470 回答
0

没有 4Gb 限制,但当然有限制。不要计划太远。如果您刚刚起步并计划成为下一个 Facebook,那很好,但您没有资源。

做一些工作,这样你就可以向你的投资者展示:)

于 2010-02-08T22:13:41.893 回答