gpt4 book ai didi

postgresql - postgres 缓存我的查询吗?

转载 作者:行者123 更新时间:2023-11-29 11:33:16 28 4
gpt4 key购买 nike

我有一段非常简单的 Python 代码来运行 Postgres 查询,然后将结果发送到仪表板。我正在使用 psycopg2 定期运行相同的查询。我们暂时不用担心循环机制。

    conn = psycopg2.connect(<connection info>)

while True:
# Run query and update dashboard
cur = conn.cursor()
cur.execute(q_tcc)
query_results = cur.fetchall()

update_dashboard(query_results)
time.sleep(5)

供引用,实际查询是:

q_tcc = """SELECT client_addr, application_name, count(*) cnt FROM pg_stat_activity
GROUP BY client_addr, application_name ORDER BY cnt DESC;"""

当我运行它时,我一直得到相同的结果,即使它们应该有所改变。如果我将 psycopg2.connect() 行移动到带有 conn.close() 的循环中,一切正常。根据连接和cursor docs ,但是,我应该能够一直使用相同的游标(以及连接)。

这是否意味着 Postgres 正在基于每个客户端连接缓存我的查询?

最佳答案

PostgreSQL 没有查询缓存。

但是,如果您使用 SERIALIZABLE 隔离,您可能会看到相同的数据快照,因为您似乎是在单个事务中执行所有查询。

您应该在循环中的每个查询之后真正提交(或回滚)事务。 conn.rollback()

关于postgresql - postgres 缓存我的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45155221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com