当前位置: 首页 > 面试题库 >

MySQL表有多少行“太多”?[重复]

微生翼
2023-03-14
问题内容

这个问题已经在这里有了答案

9年前关闭。

可能重复:
数据库中有多少行?

我正在为将有用户的应用程序构建数据库方案,每个用户在诸如“收藏夹”之类的关系表中将有许多行。每个用户可能有数千个收藏夹,并且可能有数千个注册用户(随着时间的推移)。

鉴于永远不会删除用户,因为这会使其他实体变成孤立的实体,或者也将它们删除(这是不希望的),因此这些表将永远增长,我想知道结果表是否可能太大(例如:1kk行),我应该担心这一点,并进行一些操作,例如将旧的和不活跃的用户标记为已删除,并删除仅影响他们的关系(例如收藏夹和其他首选项)。

这是要走的路吗?还是MySQL可以轻松处理表中的1kk行?有已知限制吗?还是完全依赖于硬件?


问题答案:

我同意klennepette和Brian的几点警告。

如果您的数据与生俱来是关系的,并且受与SQL配合使用的查询的影响,那么您应该能够扩展到数亿条记录,而无需特殊的硬件要求。

您将需要投资建立索引,查询调优,并为提高速度而偶尔牺牲关系模型。设计表时,至少应该点点性能-例如,将整数优先于字符串作为键。

但是,如果您有以文档为中心的要求,需要自由文本搜索或有很多层次关系,则可能需要再次查看。

如果您需要ACID事务,则可能会比不关心事务的时候更早遇到可伸缩性问题(尽管实际上这不太可能会影响您)。如果您有长期运行的事务或复杂的事务,则可伸缩性会迅速下降。

我建议从头开始构建项目,并考虑可伸缩性要求。我过去所做的工作是建立一个测试环境,该环境中填充了数百万条记录(我使用了DBMonster,但不确定是否仍然存在),并使用诸如负载测试工具定期针对该数据库测试在制品代码Jmeter。



 类似资料:
  • 问题内容: 我正在建立一个可能有70列以上的表格。我现在正在考虑将其拆分,因为每次访问表时都不需要列中的某些数据。再说一次,如果我这样做,我就不得不使用联接。 在什么时候(如果有的话)是否认为列太多? 问题答案: 一旦超过数据库支持的最大限制,就认为它太多了。 不需要每个查询都返回所有列的事实是完全正常的;这就是为什么SELECT语句可让您显式命名所需的列的原因。 通常,您的表结构应反映您的域模型

  • 问题内容: 我花一些时间来优化当前数据库。 我正在专门查看索引。 有几个问题: 索引太多了吗? 索引将加速什么? 索引会减慢什么? 什么时候添加索引是个好主意? 什么时候添加索引是个坏主意? 多个索引与多列索引的优缺点 问题答案: 索引将加速什么? 数据检索-SELECT语句。 索引会减慢什么? 数据操作-INSERT,UPDATE,DELETE语句。 什么时候添加索引是个好主意? 如果您想获得更

  • 我正在评估是否需要为ASE分区表。我们需要执行一些典型的DB操作,如CRUD,但不需要复杂的查询。您知道通常情况下,ASE可以处理多大的表,并具有良好的性能吗?比如有多少行,总大小有多大? 谢谢

  • 问题内容: 在我的一个Angular控制器中,我有这个: 在另一个控制器中,我有这个: 现在,这是一个单页应用程序。当我最初进入控制器A并尝试触发此事件时, someAction() 将被执行一次。如果我离开并再次返回到控制器A并执行相同的操作,则 someAction() 将执行两次。如果我再做一次,它会发生3次,依此类推。我在做什么错呢? 问题答案: 你可以尝试使用吗?每次创建控制器A时,它都

  • 我不时会在logcat中看到类似的日志条目: 编舞跳过了35帧!应用程序可能在其主线程上做了太多工作。 我知道这条消息的含义(在这里进行了解释:Logcat中编舞消息的含义),这个问题不是关于消息的含义。 我的问题是:有多少跳过的帧太多?是否有任何指导(官方或经验)可以说50左右太多而更少是可以的?即使在速度较慢的设备上,我也没有看到任何性能下降。也许我真的不应该仅仅基于这个消息就担心性能?

  • 然后我使用相同的公式来解密密码,通过尝试所有可能的子字符串组合,直到找到正确的一个。 我的问题是A.除了可能的性能问题之外,这种方法还会带来什么危险? B.这种方法是否矫枉过正,像这样加盐和存储盐/密码有必要吗?c.如果没有必要,我还可以使用什么其他方法来加盐和存储盐/密码?