mysql 面向大量数据的数据库设计[关闭]

xghobddn  于 2023-11-16  发布在  Mysql
关注(0)|答案(1)|浏览(109)

已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。

20天前关闭。
Improve this question
我正在做一个项目,涉及大量的数据从美味的网站。可用的数据是“日期,用户ID,URL,标签”(每个书签)。
我将我的数据库规范化为3NF,由于我们希望组合使用的查询的性质,我将其减少到6个表.设计看起来很好,但是,现在数据库中有大量数据,大多数查询需要将至少2个表连接在一起才能获得答案,有时需要3个或4个。起初,我们没有任何性能问题,因为为了测试,我们没有向数据库中添加太多的数据。现在我们有了很多数据,简单地连接非常大的表需要花费很多时间,对于我们的项目来说,这是一场灾难,它必须是实时的。
我想知道大公司是如何解决这些问题的。看起来规范化表只会增加复杂性,但大公司如何处理数据库中的大量数据,他们不使用规范化吗?

gopyfrb3

gopyfrb31#

既然你问到大公司(通常)是如何处理这个问题的:
他们通常有一个dba(数据库管理员),负责公司使用的数据库。
这意味着他们的人知道一切,从如何最佳地设计表,配置和调整查询/索引/操作系统/服务器,到知道RAID控制器的固件版本可能会导致数据库问题。
你不太谈论你做了什么样的调整,例如。

  • 你在使用MyISAM或InnoDB表吗?它们的性能(尤其是它们的特性)对于不同的工作负载是完全不同的。
  • 是否根据您运行的查询对表进行了正确的索引?
  • 对所有查询运行EXPLAIN-这将帮助您识别可以添加/删除的键,是否选择了正确的键,比较查询(SQL为您提供了很多方法来完成相同的事情)
  • 你调优查询缓存了吗?对于某些工作负载,查询缓存(默认打开)可能会导致相当大的速度下降。
  • 你的机器有多少内存,mysql有没有调优来利用这一点?
  • 你使用的文件系统和raid设置是针对数据库的吗?
  • 有时候需要一点非标准化。
  • 不同的数据库产品将有不同的特性,MySQL可能对某些数据库非常快,而对其他数据库则很慢。

相关问题