Ale*_*ros 21 postgresql postgresql-9.3
我将拥有一个巨大的 PostgreSQL 9.3 数据库,其中包含许多表,每个表有超过 1 亿个条目。该数据库将基本上是只读的(一旦我填写了所有必要的表并构建了索引,不再对 DB 进行写操作)和单用户访问(从 localhost 运行和基准测试多个查询),因为将使用 DB仅用于研究目的。查询将始终在整数 DB 字段上使用 JOIN。
为此,我可能会购买 SSD (256-512GB)。我以前没有用过 SSD 做数据库,所以有什么我应该害怕的吗?我可以将整个数据库放在 SSD 上,还是只放在索引上?为 SSD 调整 PostgreSQL 是否需要任何特别的建议/教程?请注意,我有一个配备 i7 和 32Gb 内存的不错的工作站,所以也许您也可以提供一些建议。
Cra*_*ger 16
所以有什么我应该害怕的吗?
没有备份。像任何存储设备一样,它可能会死。保留备份。
如果数据加载需要很长时间,我会在完成数据加载后通过停止并复制它来备份只读数据库。这样,如果出现问题,以后重新创建会更容易。
我可以将整个数据库放在 SSD 上,还是只放在索引上?
如果合适,则存储整个数据库。
如果没有,请在 SSD 上放置一个表空间并使用它来存储索引和尽可能多的查询量大的表。
为 SSD 调整 PostgreSQL 是否需要任何特别的建议/教程?
SSD 的大部分优势都适用于 OLTP 写入负载。只读加载的主要优点是快速查找,slardiere 已经涵盖了这一点。
您可能想要设置effective_io_concurrency = 5
或其他内容来反映 SSD 可以执行快速、大量流水线随机读取的事实……但它只影响位图索引扫描,并且在实践中random_page_cost
已经包含了这一点。
对于只读加载,它没有太大区别。
对于初始数据加载,请参阅:
请注意,我有一个配备 i7 和 32Gb 内存的不错的工作站,所以也许您也可以提供一些建议。
maintenance_work_mem
为数据负载设置一个 big 。我至少会使用8GB
.
work_mem
为查询工作设置一个大的。适当的大小取决于查询的复杂性。500MB
从那里开始并从那里上升。
checkpoint_segments
为初始数据加载增加(大量)。
请记住禁用 VM 过量使用!(参见 PostgreSQL 手册:http : //www.postgresql.org/docs/current/static/kernel-resources.html)
归档时间: |
|
查看次数: |
25266 次 |
最近记录: |