Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 海量数据的数据库设计_Mysql_Database_Performance_Database Design - Fatal编程技术网

Mysql 海量数据的数据库设计

Mysql 海量数据的数据库设计,mysql,database,performance,database-design,Mysql,Database,Performance,Database Design,我正在从事一个涉及美味网站大量数据的项目。可用的数据是“日期、用户ID、Url、标记”(对于每个书签) 我将我的数据库规范化为3NF,并且由于我们希望组合使用的查询的性质,我总共有6个表。。。然而,设计看起来不错,现在数据库中有大量数据,大多数查询需要将至少2个表连接在一起才能得到答案,有时是3个或4个表。起初,我们没有任何性能问题,因为对于测试问题,我们没有向数据库添加太多数据。现在我们有了大量的数据,简单地连接非常大的表需要很多时间,对于我们的项目来说,这是一场灾难,因为我们的项目必须是实时

我正在从事一个涉及美味网站大量数据的项目。可用的数据是“日期、用户ID、Url、标记”(对于每个书签)

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

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


谢谢。

既然您询问了大公司(通常)是如何处理这一问题的:

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

这意味着他们的员工知道从如何优化设计表、配置和调优查询/索引/操作系统/服务器到知道RAID控制器的固件版本可能会导致数据库出现问题的一切

你不怎么谈论你做了什么样的调整,例如

  • 您使用的是MyISAM还是InnoDB表?对于不同的工作负载,它们的性能(尤其是它们的功能)是完全不同的
  • 表是否根据您运行的查询正确索引
  • 对所有查询运行EXPLAIN-这将帮助您确定可以添加/删除的键,是否选择了正确的键,比较查询(SQL为您提供了许多方法来完成相同的任务)
  • 你调整过查询缓存了吗?对于某些工作负载,查询缓存(默认打开)可能会导致相当大的速度减慢
  • 你的盒子有多少内存,mysql是否经过调优以利用这一点
  • 您是否使用面向数据库的文件系统和raid设置
  • 有时需要一点去规范化
  • 不同的数据库产品将具有不同的特性,MySQL对于某些负载可能非常快,而对于其他负载可能非常慢

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