数据库设计用于非常大量的数据

Hos*_*ein 8 mysql database performance database-design

我正在开发一个涉及来自美味网站的大量数据的项目.可用数据是"Date,UserId,Url,Tags"(对于每个书签).

我将我的数据库规范化为3NF,并且由于我们想要组合使用的查询的性质,我归结为6个表...但是,设计看起来很好,但是现在大量数据都在数据库,大多数查询需要连接至少2个表一起得到答案,有时3或4.首先,我们没有任何性能问题,因为测试问题我们没有向数据库添加太多数据.既然我们拥有大量数据,只需加入极大的表需要花费大量时间,对于我们的项目来说,这必须是实时的,这是一场灾难.

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

谢谢.

lee*_*roy 13

既然你问过大公司(一般)如何接近这个:

他们通常有一个dba(数据库管理员),他生活和呼吸公司使用的数据库.

这意味着他们的人员了解如何以最佳方式设计表,查询和调整查询/索引/ OS /服务器以及了解可能导致数据库出现问题的RAID控制器的固件版本.

你不太谈论你做过什么样的调整,例如

  • 您使用的是MyISAM还是InnoDB表?对于不同的工作负载,它们的性能(尤其是它们的功能)完全不同.
  • 表是否根据您运行的查询正确编制索引?
  • 在你的所有查询上运行EXPLAIN - 这将帮助你识别可以添加/删除的键,选择正确的键,比较查询(SQL让你有很多方法来完成相同的事情)
  • 你有没有调整查询缓存?对于某些工作负载,查询缓存(默认开启)会导致相当大的减速.
  • 你的盒子有多少内存,是mysql调整好利用这个?
  • 您是否使用面向数据库的文件系统和raid设置?
  • 有时需要一点去标准化.
  • 不同的数据库产品将具有不同的特性,对于某些工作来说,MySQL可能会非常快,而对于其他数据库而言,它可能会很慢.

  • 谢谢你的回复.老实说,我没想到你在这里提到的事情.现在我意识到在设计数据库时我忽略了很多.该数据库使用MyISAM.我会读到你提到的事情.非常感谢 (3认同)