我正在设计一个系统,通过深入研究数字,我意识到它可以达到一个可以有一张表每年有54,240,211,584条记录(大约)的表。 WOW !!!!
所以,我把它简化了每年减少73,271,952条记录(约)。
如果出现以下情况,我会通过制作一些excel来获得数字:
a)没有成功= 87个用户,
b)低调节成功= 4300个用户,
c)高度适度成功= 13199个用户,
d)成功= 55100用户
e)不可思议的成功= nah
考虑到该表用于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。每个表#2插入插入3行。我想把它作为一张分开的桌子,但如果有人不得不死......
表#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秒钟,那对我来说非常好。
为什么我不自己测试呢???我想我不能做这样的测试。我要做的就是插入那些数量的行,看看会发生什么。我更喜欢第一个已经知道类似事物的人的观点。记住,我还处于设计阶段
提前致谢。
答案 0 :(得分:3)
54,240,211,584很多。我只有使用高达3亿行的mysql表的经验,并且它处理的问题很少。我不确定你究竟在问什么,但这里有一些注意事项:
如果您需要事务支持,或者正在进行大量插入/更新,请使用InnoDB。 MyISAM表对于事务数据是不好的,但是如果你读得很重,只是偶尔进行批量插入/更新,那就没关系。
如果您使用的是最新版本/接收操作系统,则mysql没有4Gb限制。我最大的桌子现在是211Gb。
清除大表中的数据非常慢。例如删除一个月的所有记录需要几个小时。 (虽然删除单个记录很快)。
如果您期望有数十亿条记录,请不要使用int / tinyint,它们会包裹起来。
让某些东西工作,在第一次发布后修复缩放。一个未实现的想法几乎没用,一些有用的东西(现在)可能非常有用。
测试。没有真正的替代品 - 您的应用程序和数据库使用情况可能与某些大型数据库的情况完全不同。
查看分区表,这是MySQL最近的一项功能,可以帮助您以可能的方式进行扩展。
答案 1 :(得分:1)
从您所在的级别开始。从那里开始构建。
有很多人会向你出售你现在不需要的服务。
如果10美元/月的共享托管不再有效,那么升级,并最终聘请某人来帮助您解决数据库的记录限制。
答案 2 :(得分:0)
没有4Gb限制,但当然有限制。不要计划太远。如果你刚刚开始并计划成为下一个Facebook,那很好,但你没有资源。
让事情有效,以便向投资者展示:)