关于部署在 GCP 负载上的 MySQL

Regarding MySQL deployed on GCP load

我的目标是拥有 10,000 名用户,我即将完成网站建设。它是免费的,所以我想尽可能地降低成本。

除两个 table 之外的所有行都少于 100,000 行(只读)。除了剩余的,一个 table 每个用户总共有大约 5,200 行,而且不少。另一个我估计两年内每个用户大约有 150 万行,假设他们继续使用那么久。

后者table如下,前者除col3外其他相同...

CREATE TABLE `my_table` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `col1` int(11) NOT NULL,
  `col2` mediumint(8) unsigned NOT NULL,
  `col3` smallint(5) unsigned NOT NULL,
  `col4` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk1_ix` (`col1`),
  KEY `fk2_ix` (`col2`),
  KEY `fk3_ix` (`col3`),
  CONSTRAINT `fk1` FOREIGN KEY (`col1`) REFERENCES `pktbl1` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk2` FOREIGN KEY (`col2`) REFERENCES `pktbl2` (`id`) ON UPDATE CASCADE,
  CONSTRAINT `fk3` FOREIGN KEY (`col3`) REFERENCES `pktbl3` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

对于每个活跃用户,table 平均每天写入约 10-20 次,读取约 4-5 次。

我想估算我的 运行 成本并有两个主要问题,感谢任何其他输入。

1) MySQL 是否能够合理地处理我的负载。

2) 你认为我需要多少 CPU / RAM 来处理我的负载,响应时间/滞后最多一秒。

我的网站是使用 PHP Yii2 框架设计的,所以我可以根据需要切换数据库。查询是简单的插入和索引 select 语句。

没法估计,你的要求太低了。如果您能够进行一些负载测试,那将对您有所帮助。

但是,如果您可以忍受几分钟的停机时间,则可以向上或向下扩展您的 Cloud SQL 实例。这可能会给您信心,如果性能不能满足您的需求,从 f1-microg1-small 开始不会阻止您升级。

200 亿行,大部分在小表中?这听起来像是 1 TB 的磁盘 space。为此做好计划。

每天 20 万次查询(写入或读取)?那只是每秒几次。在任何服务器上都没有问题。但是,这假定查询不太复杂。

MySQL会处理吗?看看这个论坛(更好的是,dba.Whosebug),你会看到正在讨论的更大的系统。

CPU -- 通常是最少的问题。

RAM -- 取决于查询。这些天,我不会从小于 4GB 的任何东西开始。

云——这是一个可行的选择。您支付额外费用,但麻烦更少,尤其是当您需要升级时。

在系统上获得 100 个用户,然后盘点您拥有的内容。看看数字是什么样的。

如果遇到性能问题,首先查看查询和索引,看看是否可以改进最慢的查询。