有没有特殊的方法来管理一个不断增长的数据库?

时间:2011-10-14 19:59:53

标签: mysql sql database

免责声明:我是数据库世界的新手

我想知道:你如何解决一个不断增长的桌子的问题?

我的意思是,假设我想知道“最后添加的项目”,然后我做

  

SELECT * FROM planetHistory WHERE name =“earth”ORDER BY date DESC   限制1;

这似乎是一个坏主意,因为随着表的增长需要花费越来越多的时间。 我想到的是为通常的未来查询“准备”数据库的设计。对于此示例,数据库可以包含具有单个字段和实例的表:

+-----------------+
|table "lastAdded"|
+-----------------+
|     3242        |
+-----------------+

那会存储最后添加的内容,所以在进行插入之前我应该​​读取该字段将其递增1然后再写入。

这听起来很奇怪,但是对于我来说,订购1TB的数据似乎更糟糕“只是为了知道哪个是最后一个”怪异的

2 个答案:

答案 0 :(得分:1)

通过索引列进行排序可以为您提供这种“优势”。

让DB设计人员担心优化查询逻辑,只需确保使用他们为您提供的工具,如INDEXes。他们的工作是确保查询,甚至数百万条记录,都具有足够的性能。

自己进行这种“优化”可能会导致其他一些问题:

  1. 可能不同步的重复数据
  2. 不必要的复杂性,假设首先没有性能问题
  3. 在出现真正的性能问题时更难以解决,因为更复杂的代码/查询意味着更难以重构/优化
  4. 监控您的app / DB,以便您可以主动解决性能问题,但在您知道存在问题之前不要解决它们。特别是在DBs方面,它们的构建尽可能快;当他们不快时,通常是因为我们做的事情是愚蠢的。

答案 1 :(得分:0)

我会用时间戳来做。这些还允许您对数据库进行分区,以便最终移出超出“必须保留”限制的大量数据。

没有数据库可以永远增长的东西。磁盘空间不是无限的。如果您有任何需要表扫描的查询,您会发现它们随着数据库的增长而运行得越来越慢。

最好让自己能够按日,周,月,年或任何适用于您用例的度量将数据分区移出。