关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
两年前关门了。
改进这个问题
首先,我不是一个非常有经验的开发人员,我正在用php、mysql和javascript开发中型应用程序。
但是有一点让我很难在每个项目之前设计一个mysql innodb数据库。这就是表演。我总是很担心,如果我正在创建一个规范化的数据库方案,当我必须将两个表(如5-6)连接在一起时(它们之间通常有一些多对多、多对一的关系),当这些5-6表中的每个表都有大约10万行时,会对性能产生很大的影响(负面影响)。
这些项目,我通常是创建分析平台。因此,我预计总共会有大约100万次的点击,我通常需要将这个表与许多其他表(每个表大约有10万行)连接起来,才能显示一些数据。我通常制作点击的汇总表,但不能对其他表做同样的操作。
我不太确定我是否需要担心这个阶段的未来表现。目前,我正在积极管理这些应用程序中的一些,点击次数超过3000万次,以及我加入这个点击次数超过40k行的表。性能相当差-一个select操作通常需要10-20秒才能完成,而我相信我有适当的索引,innodb\u buffer\u pool\u size也一样。
我读过很多关于优化数据库的关键是设计。这就是为什么我通常在创建db方案之前会考虑很多。
我真的需要担心创建db方案,在那里我必须连接5-6个多对多/多对一/一对多表,还是很常见,mysql应该能够轻松地处理这个负载?
在创建db方案之前,我还应该考虑什么?
我通常的服务器设置是使用4gbram+2vcpu的mysql服务器来为db服务,使用4gbram+2vcpu的web服务器。他们都使用ubuntu的16.04版本和最新的mysql(5.7.21)和PHP7FPM。
1条答案
按热度按时间e3bfsja21#
戈登是对的。RDBMS用于处理您的工作负载。
如果你使用虚拟机(云等)来托管你的东西,你通常可以通过花更多的钱来增加你的ram、vcpu数量和io容量。但是,通常情况下,向dbms性能问题扔钱不如向它们扔更好的索引。
在100m行的规模上,查询性能是一个合理的问题。随着项目的发展,您将需要重新访问dbms索引以优化实际使用的查询。所以计划一下。问题是,在获得大量数据之前,您不能也不会知道实际的性能问题是什么。
请阅读下面的预览:https://use-the-index-luke.com/ .
一条建议:表的分区通常不能解决性能问题,除非在非常特殊的情况下。
查一下这个缩写:雅格尼。
去做你的项目。花你现在的努力让它运转起来。