我正在开展一个项目,涉及来自美味网站的大量数据。可用数据为“日期、用户 ID、网址、标签”(针对每个书签)。
我将数据库规范化为 3NF,并且由于我们想要组合使用的查询的性质,我将其缩减为 6 个表...设计看起来不错,但是,现在大量数据存储在数据库中在数据库中,大多数查询需要将至少 2 个表连接在一起才能得到答案,有时是 3 或 4 个。起初,我们没有任何性能问题,因为为了测试目的,我们没有向数据库添加太多数据。现在我们拥有大量数据,仅仅连接非常大的表就需要花费大量时间,对于我们必须是实时的项目来说,这是一场灾难。
我想知道大公司如何解决这些问题。看起来规范化表只会增加复杂性,但是大公司如何处理数据库中的大量数据,他们不使用规范化吗?
既然您询问大公司(通常)如何处理此问题:
他们通常有一个 dba(数据库管理员),负责公司使用的数据库的生活和呼吸。
这意味着他们的人员了解一切,从如何优化表设计、配置和调整查询/索引/操作系统/服务器,到了解可能导致数据库出现问题的 RAID 控制器固件版本。
你没有过多谈论你做了什么样的调整,例如
- 您使用的是 MyISAM 还是 InnoDB 表?对于不同的工作负载,它们的性能(尤其是它们的功能)截然不同。
- 表是否根据您运行的查询正确索引?
- 对所有查询运行 EXPLAIN - 这将帮助您识别可以添加/删除的键、是否选择了正确的键、比较查询(SQL 为您提供了很多方法来完成相同的事情)
- 您调整了查询缓存吗?对于某些工作负载,查询缓存(默认打开)可能会导致相当大的速度减慢。
- 你的机器有多少内存,mysql 是否经过调整以利用它?
- 您是否使用针对数据库的文件系统和 raid 设置?
- 有时需要一点反规范化。
- 不同的数据库产品会有不同的特性,MySQL 对于某些世界可能会非常快,而对于另一些世界则可能很慢。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)