2013-10-22 170 views
0

我需要为包含许多postgres数据库(720)的中型应用程序构建部署计划。几乎这种模式是相似的,但我必须分开它的经理和业绩。每个数据库都有大约400.000到1.000.000的记录包括读和写。 我有两个问题: 1.我怎样才能计算每台机器上的数据库数量(在centos 2.08 GHz CPU和4 GB RAM)?或者我可以在每台机器上安装多少个数据库?同意我约10人。 2.是否有任何教程来计算数据库大小? 3. postgres数据库可以“活动 - 待机”吗?Postgresql - caculate数据库大小

任何帮助表示感谢!谢谢!

+1

什么是典型的行宽?也就是说,您计划在每行中存储多少字节(不包括索引)? – mvp

+0

@mvp:如何计算行宽?我有测试我的数据库与查询:EXPLAIN SELECT * FROM thuadat它显示结果:“Seq扫描thuadat(成本= 0.00..741.29行= 13029宽度= 7288)”?我的表的行宽是77288(thuadat表是最大的表)。 –

+0

http://www.postgresql.org/docs/9.1/static/functions-admin.html#FUNCTIONS-ADMIN-DBSIZE – regilero

回答

3

我不认为你的服务器可以处理这种负载(如果这些是你的真实数字)。

简单的计算:让我们把你的720个数据库凑到1000. 也让你的平均行宽度7288到10000(10KB)。 假设每个数据库将使用100万行。

考虑到所有这些事实,以字节为单位的数据库总规模可估算为:

1,000 * 10,000 * 1,000,000 = 10,000,000,000,000 = 10 TB 

换句话说,你将需要至少几个最大的硬盘驱动器的钱可以买(可能4TB),然后您需要使用硬件或软件RAID才能获得足够的可靠性。

请注意,我没有考虑索引。根据数据和查询的性质,索引可以占用数据大小的10%到100%之间的任何值。全文搜索索引可能比原始数据多5倍。

无论如何,只有4GB内存的服务器几乎不会尝试服务于这么庞大的安装。

但是,它应该能够服务不是1,000,但可能为您的设置提供10或更多的数据库。

+0

谢谢mvp给你。它为我提供了计算数据库大小的方法。顺便说一句,你能告诉我如何计算行宽吗? –

+0

您可以使用[pg_total_relation_size()](http://www.postgresql.org/docs/current/static/functions-admin.html)按表获取实际使用情况,或[pg_database_size(name)](http:/ /www.postgresql.org/docs/current/static/functions-admin.html)以获取整个数据库的使用情况。或者,您可以通过简单地将它们相加来估计大小 - 整数需要4到8个字节,字符串需要与放入其中的数量相同,再加上一些小的开销(几个字节)等等。当然,最准确的估计是通过在数据库目录中使用'df'或'du'来查看实际磁盘。 – mvp