表的最佳数据量是多少?

时间:2008-11-13 17:21:20

标签: mysql

表中应该有多少数据,以便读数最佳?假设我有3个字段varchar(25)。这是在MySQL。

8 个答案:

答案 0 :(得分:2)

我建议您在优化数据库设计时考虑以下因素:

  1. 考虑使用数据库要完成的任务。您是否会以非常高的费率对单个表执行大量插入操作?或者您将使用数据执行报告和分析功能吗?
  2. 确定数据库的用途后,请定义需要存储的数据以执行所需的任何功能。
  3. 正常化直到疼痛。如果您正在执行事务处理(数据库的最常见功能),那么您将需要高度规范化的数据库结构。如果您正在执行分析函数,那么您将需要一个更加非规范化的结构,该结构不必依赖连接来生成报告结果。
  4. 通常情况下,如果你真的对结构进行了规范化,直到它受到伤害,那么你需要将规范化恢复一两步,以使数据结构具有规范化和功能性。
  5. 如果您未能使用密钥,则规范化数据库大多没有意义。确保每个表都定义了主键。不要使用代理键只是因为你总是看到它。考虑任何给定表中可能存在哪些自然键。一旦确定每个表都有正确的主键,则需要定义外键引用。建立显式的外键关系而不是依赖隐式定义将为您提供性能提升,为数据提供完整性,以及自我记录数据库结构。
  6. 查找表中存在的其他索引。您是否有频繁搜索的列或列集,如用户名和密码字段?索引可以位于单列或多列上,因此请考虑如何查询数据并根据需要为要查询的值创建索引。

答案 1 :(得分:1)

行数无关紧要。确保您搜索的字段已正确编入索引。如果您只有3个varchar(25)字段,那么您可能需要添加一个非varchar的主键。

答案 2 :(得分:1)

同意您应确保您的数据已正确编入索引。

除此之外,如果您担心表格大小,您可以随时实施某种类型的数据存档策略。

在看到问题出现之前不要过于担心,不要过早优化。

答案 3 :(得分:0)

为了获得最佳读数,您应该有一个索引。存在一个表来保存它所包含的行。随着行数的增加,索引的值发挥作用,读数仍然很活跃。

答案 4 :(得分:0)

这样的话,我不知道如何回答这个问题。一个包含100,000条记录的表格比一张未编制索引的1,000表快。

您有什么要求?你有多少数据?一旦您知道这些问题的答案,就可以做出有关索引和/或分区的决定。

答案 5 :(得分:0)

这是一个非常宽松的问题,所以答案非常宽松: - )

一般来说,如果你做基本的 - 合理的规范化,合理的主键和普通的查询 - 那么在今天的硬件上,你将在中小型数据库中获得大多数东西 - 即一个最大的表记录少于50,000个。

然而,一旦超过50k - 100k行,这大致对应于rdbms可能受内存限制的点 - 那么除非您正确设置了访问路径(即索引),否则性能将开始下降灾难性的。这是数学意义上的 - 在这种情况下,表格尺寸加倍会使性能恶化一个数量级或两个数量并不罕见。

因此,显然您需要注意的关键表大小将根据行大小,机器内存,活动和其他环境问题而有所不同,因此没有单一的答案,但是要注意性能通常会不会因表格大小而优雅地降级并做出相应的计划。

答案 6 :(得分:0)

我必须不同意Cruachan关于“50k-100k行......大致对应于rdbms可能受内存限制的点”。如果没有两个额外的数据,这个一揽子声明就会产生误导:约。行的大小和可用内存。我目前正在开发一个数据库,以找到源代码文件中行的最长公共子序列(生物信息学),并在一个表中达到数百万行,即使VARCHAR字段接近1000,也会在它成为内存之前限制。因此,通过适当的索引和足够的RAM(一两个Gig),就最初的问题而言,最多只有75个字节的行,没有理由为什么建议的表不能容纳数千万条记录。

答案 7 :(得分:0)

适当数量的数据是应用程序的功能,而不是数据库的功能。通过将表分成多个子表来解决MySQL问题的情况非常少,如果这是您的问题的意图。

如果您遇到查询速度较慢的特定情况,那么通过修改查询或表格设计讨论如何改善这种情况可能会更有用。