2010-04-09 67 views
8

我正在研究一个涉及来自美味网站的大量数据的项目。可用数据是“Date,UserId,Url,Tags”(针对每个书签)。针对数据量非常大的数据库设计

我将我的数据库规范化为3NF,并且由于我们想要组合使用的查询的性质,我下降到了6个表格......然而,设计看起来很好,现在大量的数据在数据库中,大多数查询需要将至少两个表一起加入以获得答案,有时候是3或4.起初,我们没有任何性能问题,因为对于测试问题,我们没有添加太多数据到数据库。既然我们有大量的数据,那么只需加入非常大的表格就需要很多时间,而且我们的项目必须是实时的,这是一场灾难。

我想知道有多大公司解决这些问题。看起来规范化表只会增加复杂性,但大公司如何处理其数据库中的大量数据,是不是使用规范化?

谢谢。

回答

13

既然你问到大公司(一般)如何处理这样的:

他们通常有谁根植公司使用的数据库DBA(数据库管理员)。

这意味着他们拥有了解如何以最佳方式设计表,配置文件和调整查询/索引/操作系统/服务器以了解可能导致数据库问题的RAID控制器固件版本的所有信息。

你不会谈论你做过什么样的调整,

  • 您是使用MyISAM还是InnoDB表?他们的性能(而不是他们的功能)对于不同的工作负载而言是截然不同的。
  • 表根据您运行的查询是否正确索引?
  • 对所有查询运行EXPLAIN - 这将帮助您识别可以添加/删除的密钥,选择正确的密钥,比较查询(SQL留下很多方法来完成相同的事情)
  • 有你调整了查询​​缓存?对于某些工作负载,查询缓存(默认为on)会导致相当大的减速。
  • 你的盒子有多少内存,是mysql调整来利用这个优势?
  • 您是否使用面向数据库的文件系统和raid设置?
  • 有时需要稍微去标准化。
  • 不同的数据库产品将具有不同的特征,对于某些worlkoads,MySQL可能会非常快速,而对其​​他数据库则会很慢。
+3

感谢您的回复。老实说,我没有想到你在这里提到的东西。现在我意识到我在设计数据库时忽略了很多。数据库使用MyISAM。我会阅读你提到的事情。非常感谢 – Hossein 2010-04-10 08:56:36

相关问题