针对海量数据的数据库设计

问题描述 投票:0回答:1

我正在做一个项目,涉及来自美味网站的大量数据。可用数据为“日期、用户 ID、网址、标签”(针对每个书签)。

我将数据库规范化为 3NF,并且由于我们想要组合使用的查询的性质,我将其缩减为 6 个表……设计看起来不错,但是,现在有大量数据存在在数据库中,大多数查询需要将至少 2 个表连接在一起才能得到答案,有时是 3 或 4 个。起初,我们没有任何性能问题,因为为了测试问题,我们没有向数据库添加太多数据。数据库。现在我们有很多数据,简单地连接非常大的表需要花费大量时间,对于我们必须实时的项目来说,这是一场灾难。

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

mysql database performance database-design
1个回答
13
投票

既然你问大公司(通常)如何处理这个问题:

他们通常有一个 dba(数据库管理员),负责公司使用的数据库。

这意味着他们的人员了解一切,从如何优化设计表、分析和调整查询/索引/操作系统/服务器,到了解可能导致数据库出现问题的 RAID 控制器固件版本。

你没有过多谈论你做了什么样的调整,例如

  • 您使用的是 MyISAM 还是 InnoDB 表?对于不同的工作负载,它们的性能(尤其是它们的功能)截然不同。
  • 表是否根据您运行的查询正确索引?
  • 对所有查询运行 EXPLAIN - 这将帮助您识别可以添加/删除的键、是否选择了正确的键、比较查询(SQL 为您提供了很多方法来完成相同的事情)
  • 您调整了查询缓存吗?对于某些工作负载,查询缓存(默认打开)可能会导致相当大的速度减慢。
  • 你的机器有多少内存,mysql是否调整为利用这个?
  • 您是否使用针对数据库的文件系统和 raid 设置?
  • 有时需要一点反规范化。
  • 不同的数据库产品会有不同的特点,MySQL 对于某些世界可能非常快,而对于另一些世界则很慢。
© www.soinside.com 2019 - 2024. All rights reserved.