我知道缓存最常用于防止重复执行昂贵的查询。但是,在我们的应用程序中,我们有几个场景,我们经常(例如,每秒数百次)执行理论上相当便宜的查询。例如,
SELECT push_token FROM devices WHERE id = ?
或
SELECT value FROM some_table_with_configs WHERE key = ?
我的问题是,是否值得缓存这些相当便宜的查询的结果,或者我是否每次都能更好地访问数据库(PostgreSQL,以防万一),并让RDBMS的缓存做他们的工作?
如果它很重要,我会使用JDBC和正确的连接池,并且这些查询会返回非常非常频繁变化的结果。
答案 0 :(得分:1)
可能优化此方法的一种方法是使用预准备语句。
https://www.postgresql.org/docs/current/static/sql-prepare.html
像这样:
PREPARE prep_one(INT) AS SELECT push_token FROM devices WHERE id = $1;
EXECUTE prep_one(123);