我有一个包含许多小型参考数据表和一些大型时间序列表的数据库。参考数据表可以很容易地放入内存中。我有各种加载数据的 ETL 作业,主要是通过将传入数据左连接到现有表中,并在需要时插入/更新/删除。
在 ETL 作业完成后调用所有引用数据表是否有意义,pg_prewarm
以确保在下次 ETL 加载触发时将它们全部加载到内存中?我会注意到很大的改进吗?
假设内存足够大,不会导致缓冲区驱逐问题。
我有一个包含许多小型参考数据表和一些大型时间序列表的数据库。参考数据表可以很容易地放入内存中。我有各种加载数据的 ETL 作业,主要是通过将传入数据左连接到现有表中,并在需要时插入/更新/删除。
在 ETL 作业完成后调用所有引用数据表是否有意义,pg_prewarm
以确保在下次 ETL 加载触发时将它们全部加载到内存中?我会注意到很大的改进吗?
假设内存足够大,不会导致缓冲区驱逐问题。
根据您的描述,预热不太可能有害。根据您提供的信息,无法知道它会有多大帮助。与考虑是否值得实施相比,实施所需的时间可能更少。所以就去做吧。
那么,谁会首先将这些数据从内存中挤出来呢?如果你要预热,在你开始加载之前立即做会更有意义,而不是在你完成一个之后立即做,希望它会一直持续到下一个开始。