postgresql 如何让Postgres将小表加载到内存中?

kwvwclae  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(302)

假设我有一个小的postgres数据库(〈500mb),我有一个读密集型的应用程序,99%的请求都是读。有没有办法告诉Postgres将所有表加载到RAM中,这样它就可以更快地进行选择。我认为Oracle和SQL Server都有这种功能。
我在我的本地机器上做了一些测试,我有一个有500条记录的表,Java HashMap花了2ms,sql select花了12000 ms,显然java HashMap更快,因为它在同一个进程中,但有没有办法加快sql查询postgres中的小表?谢谢

for (int i = 0; i < 100_000; i++) {
   //1) select * from someTable where id = 10
   // 2) get from Java HashMap by key
 }
fkaflof6

fkaflof61#

PostgreSQL会自动将数据缓存在RAM中,你所要做的就是将shared_buffers设置为至少和你的数据库一样大,那么所有的数据只需要读取一次,并且会一直缓存在RAM中。
如果要降低阅读数据所导致的初始速度慢,请设置shared_preload_libraries = 'pg_prewarm,pg_stat_statements'
我怀疑您报告的过度缓慢不是数据库的缓慢,而是网络滞后或低效查询。pg_stat_statements将帮助分析您的数据库工作负载。

相关问题