我使用MySQL作为我的数据库,用柴油检索数据。数据每秒钟从多个端点更新。问题是在使用柴油时,为了检索数据,我得到的结果已经过时了(可能是因为柴油端的缓存)。MySQL与SET GLOBAL query_cache_size = 0一起运行,因此DB服务器端没有活动缓存。
下面是我检索数据的代码的一部分:
pub struct Weather {
pub id: u32,
pub temperature: f32,
pub datetime: NaiveDateTime,
}
pub fn {
let timewindow = ... // A timewindow I set
let results = weather.filter(datetime.ge(timewindow)).load::<Weather>(&db).unwrap();
println("{:?}", results)
}你知道我怎么能在柴油上停用缓存吗?
发布于 2022-01-16 13:55:32
柴油减少用于数据库交互的样板是使用Rust与数据库交互的最有效的方法,因为它对查询的抽象是安全的和可组合的。柴油提供了一个高级别的查询生成器,基本上可以在抽象过程中产生零开销,并且尝试运行查询和加载数据比C中快得多。因此,没有缓存可以导致这样的过时结果,而且它也不支持与SQL_NO_CACHE选项相关的查询。过时的结果似乎与多个其他点有关,如查询、使用或系统设置/设计,以及其他注释中的更新。
但是,如果您使用的是准备好的陈述,它们可以在重用您准备的相同语句的同时提高性能(通过以后对prepare_cached的调用,将缓存语句以供重用)。在这种情况下,您还可以使用设置特定连接将容纳的缓存准备语句的最大数量。 (在这种情况下,默认情况下),连接将容纳相对较少的缓存语句。
https://stackoverflow.com/questions/61908511
复制相似问题