我正在开发Python/Django webapp...and,我实际上是第一次深入研究Python (通常我是.NET/core )...currently,在后端运行PostgreSQL。我有大约9-10个简单的(二维)查找表,它们将经常被实时访问,我想将它们缓存在内存中。
理想情况下,我希望用Postgres本身来完成这个任务,但可能是另一个数据引擎和/或其他库适合帮助它(我对Python库不太熟悉)。
目标是:
因此,我想我正在寻找一个库和/或合适的后端来处理内存中的加载和缓存(同样,内存中内存占用的总量永远不会成为一个因素).并且可能会自动将x查找表解析为一个内存中的x维表,以提高效率(而不是单独进行9-10查找),....and缓存这些结果,以便在所有参数匹配之前的查询时重复使用(除非查找执行得如此快,这是无关紧要的)。
查找表不是很大.我会说,如果我编写代码来分解每个x/y值/范围,手工创建一个巨大的x维查找表,它可能会包含大约15个字段和150个行.所以我们不会谈论太多的data....but --它会经常被击中,而且我不想每次都针对实际的DB执行这些查找。
对于最适合于此的引擎/库的建议(仍然能够将postgresql用于持久存储)将受到极大的赞赏。
发布于 2019-03-27 07:08:37
您不需要做任何特殊的事情来达到这个目的:如果您经常使用这些表,PostgreSQL将使它们自动留在缓存中。
如果从一开始就需要对缓存中的表进行排序,请使用pg_prewarm
。它允许您显式地将某些表加载到缓存中,并且可以像上次关闭前一样自动恢复缓存的状态。
一旦表被缓存,它们只会在您写信给表时导致I/O。
在我看来,你想象的高效内存数据结构听起来像是一个过早的微优化。我敢打赌,这些小型查找表不会导致性能问题(如果所有外键都有索引的话)。
https://stackoverflow.com/questions/55369594
复制相似问题