优化PostgreSQL只读数据库

优化PostgreSQL只读数据库,postgresql,Postgresql,我有一个很大的PostgreSQL数据库,它实际上是只读的,除了非常不频繁的批量更新。我可以做什么性能优化来利用它吗?例如,我可以/应该禁用可见性检查吗 最大的表格: CREATE TABLE "gene_measurements" ( "gene" INTEGER NOT NULL REFERENCES "genes" ON DELETE CASCADE, "sample" INTEGER NOT NULL REFERENCES "samples" ON DELETE CASCADE,

我有一个很大的PostgreSQL数据库,它实际上是只读的,除了非常不频繁的批量更新。我可以做什么性能优化来利用它吗?例如,我可以/应该禁用可见性检查吗

最大的表格:

CREATE TABLE "gene_measurements" (
  "gene" INTEGER NOT NULL REFERENCES "genes" ON DELETE CASCADE,
  "sample" INTEGER NOT NULL REFERENCES "samples" ON DELETE CASCADE,
  "value" REAL NOT NULL
);
CREATE UNIQUE INDEX "gene_measurements_unique_1" ON "gene_measurements" ("sample", "gene") INCLUDE ("value");
一个典型的查询:

SELECT value WHERE gene = 1 AND sample = 2
该计划:

-------------------------------------------------------------------------------------------------------------------------------------------------------
 Index Only Scan using gene_measurements_gene_index on gene_measurements  (cost=0.57..4.59 rows=1 width=4) (actual time=63.621..63.621 rows=0 loops=1)
   Index Cond: ((sample = 2) AND (gene = 1))
   Heap Fetches: 0
 Planning Time: 0.156 ms
 Execution Time: 63.674 ms
(5 rows)

PostgreSQL没有高级功能,如果相关数据是只读的,则无法加快查询速度


如果应用程序知道如何使用这些信息,您可以获得潜在的重要性能改进:应用程序代码可以尝试缓存相同查询的查询结果。您还可以在数据库中创建物化视图,并修改应用程序代码以查询物化视图,而不是运行用于构建物化视图的查询。但在这两种情况下,您都需要修改应用程序代码。

这是否存在一些性能问题?你到底想解决什么样的优化问题?是的,我对一个大表进行了多次查询,希望查询速度更快。所有内容都已尽可能编入索引。主要是索引扫描,如果可能的话,我希望更快。你尝试过像redis这样的其他策略吗?对于更频繁访问的项目?还有其他选择吗?如果您有性能问题,请提出问题并添加您遇到问题的查询以及使用
解释(分析、缓冲区、格式文本)
(不仅仅是“简单”解释)生成的查询,并确保保留计划的缩进。粘贴文本,然后将
`
放在计划前一行和计划后一行。还请包括所有索引的完整
createindex
语句。你读过这篇文章吗