Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 强制数据保留在缓存中_Postgresql_Caching - Fatal编程技术网

Postgresql 强制数据保留在缓存中

Postgresql 强制数据保留在缓存中,postgresql,caching,Postgresql,Caching,在PostgreSQL 12中,我有一个大表的一部分,我希望随时缓存它。这些查询使得相同的行(几乎)永远不会被读取两次,所以我不能依赖自动缓存。我正在阅读pg_prewarm,它似乎适合加载缓存,但我没有发现任何关于防止它随时间被覆盖的内容。有什么提示吗?谢谢 AFAIK PostgreSQL中没有用于锁定数据库缓存中特定对象页面的文档化功能。AFAIK PostgreSQL中没有用于锁定数据库缓存中特定对象页面的文档化功能。。确保表保持高速缓存的唯一方法是使用足够大的共享\u缓冲区,以容纳整个

在PostgreSQL 12中,我有一个大表的一部分,我希望随时缓存它。这些查询使得相同的行(几乎)永远不会被读取两次,所以我不能依赖自动缓存。我正在阅读pg_prewarm,它似乎适合加载缓存,但我没有发现任何关于防止它随时间被覆盖的内容。有什么提示吗?谢谢

AFAIK PostgreSQL中没有用于锁定数据库缓存中特定对象页面的文档化功能。

AFAIK PostgreSQL中没有用于锁定数据库缓存中特定对象页面的文档化功能。

。确保表保持高速缓存的唯一方法是使用足够大的
共享\u缓冲区
,以容纳整个数据库


但在实践中,这并不是什么大问题:如果一个块没有被经常使用,它可能会从缓存中掉出来,所以当它被使用时,您必须重新读取它。但是单个块包含许多行,因此只有当这些行都不需要时才会退出。

确实如此。确保表保持高速缓存的唯一方法是使用足够大的
共享\u缓冲区
,以容纳整个数据库


但在实践中,这并不是什么大问题:如果一个块没有被经常使用,它可能会从缓存中掉出来,所以当它被使用时,您必须重新读取它。但是单个块包含许多行,因此只有在不需要这些行时才会退出。

不幸的是,该表是聚集的,因此给定的查询将读取约10 kb的连续数据,因此它将只使用1-2个块。然后我看不出问题。读取10kB的连续数据将只读取几个块。从磁盘读取数据只需要几毫秒。对不起,我弄糊涂了:)任何给定的查询实际上都会读取约1500个块。不幸的是,该表是群集的,因此给定的查询将读取约10 kb的连续数据,因此它只会使用1-2个块。然后我看不出问题。读取10kB的连续数据将只读取几个块。从磁盘读取数据只需要几毫秒。对不起,我把自己弄糊涂了:)任何给定的查询实际上都会读取约1500个数据块。好的,那就没什么可做的了:)谢谢!好吧,那就没什么可做的了:)谢谢!