这是一个一般的问题,但是,我最近开始为我的网站支付一个网络主机,一旦我注意到MySQL服务器是共享的(检查phpmyadmin,它已经发送了9GB的数据在总共15k请求在过去的一个小时,并已经运行了39天没有重启),我只有管理控制我自己的数据库,我开始想:
MySQL数据库在出现问题之前能有多大?(比如,长时间的延迟、错误、崩溃等等?)有人有这方面的经验吗?注意,我是在MySQL 5.7上运行的
您所描述的加载对于MySQL在一个相当强大的服务器上应该很容易。但这取决于查询是什么,以及你优化得有多好。
在我的上一份DBA工作中,我们"轻轻地鼓励"我。如果数据库大小增长超过1TB,或者单个表增长超过512GB,或者每秒查询超过50k,开发人员(例如使用PagerDuty提醒他们)。对于典型的应用程序工作负载来说,如果数据库和查询不是由特别注意优化的开发人员设计的,那么事情就会开始恶化。此外,服务器是非常强大的硬件,大约在2020年(48核Xeon, 256GB RAM, 3TB NVMe存储,通常在RAID中有2或3个物理设备)。
如果更小心,可以将MySQL的规模增加很多。有了PlanetScale这样的变体,它可以支持更多内容。参看https://planetscale.com/blog/one-million-queries-per-second-with-mysql
另一方面,我看到一张照片,显示我们的一个NVMe驱动器在一个具有半TB数据的数据库上每秒提供6k的写入服务。这取决于查询的类型(可能是有故障的NVMe驱动器)。
唯一对你有用的答案是:
你必须在你的服务器上负载测试你的查询。
此外,除了查询性能(大多数开发人员唯一关心的事情),还必须考虑数据库操作。我支持一些不受约束地增长的数据库,尽管我的团队敦促开发人员将它们分开。结果是需要超过24小时来进行备份,如果有策略要求必须每天进行备份,这将是一个问题。此外,如果他们想要修改一个表(例如添加一个列),可能需要长达4周的时间来运行。