我几乎完成了一个目标为拥有10,000个用户的网站。它是免费的,所以我想保持成本尽可能低。
除两个表外,所有表均少于100,000行(只读)。剩下的一张表中,每个用户总共有约5,200行。假设他们继续使用该行,那么我估计另一个用户在两年内约有150万行。
后面的表如下,除了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;
对于每个活跃用户,这两个表平均每天要写入约10-20次,而读取约4-5次。
我想估算我的运行成本,有两个主要问题,感谢其他任何投入。
1)MySQL是否能够合理地处理我的负载。
2)您认为我需要多少CPU / RAM来处理负载,响应时间/延迟最多为一秒。
我的网站是使用PHP Yii2框架设计的,因此,如果需要,我可以只切换数据库。查询是简单的插入和索引选择语句。
答案 0 :(得分:0)
实际上没有一种估算方法,您的需求非常低。如果您能够进行一些负载测试对您有所帮助。
但是,如果您可以忍受几分钟的停机时间,则可以向上或向下扩展Cloud SQL实例。这可能会让您有信心,从f1-micro
或g1-small
开始并不会阻止您在性能无法满足您的需求时进行升级。
答案 1 :(得分:0)
200亿行,主要在小表中?这听起来像1 TB的磁盘空间。为此做计划。
每天每天20万次查询(写或读)?每秒只有几个。在任何服务器上都没问题。但是,这假设查询不是太复杂。
MySQL会处理吗?在这个论坛中四处看看(更好的是dba.stackoverflow),您将看到正在讨论的更大的系统。
CPU-通常最少的问题。
RAM-取决于查询。这些天,我不会从小于4GB的存储空间开始。
云-这是一个可行的选择。您可以支付额外的费用,但是麻烦较少,尤其是在需要升级的情况下。
在系统上获得100个用户,然后评估您拥有的资源。看看数字是什么样子。
如果遇到性能问题,请首先查看查询和索引,以查看最慢的查询是否可以得到改善。