我被要求设计一个用于缓存SQL查询结果的类。调用类的查询方法将在第一次查询和缓存整个结果集;之后,每个子序列查询将仅检索更新的部分,并将结果合并到缓存中。如果要求类是通用的,即没有关于数据库和表的知识,你有什么想法吗?是否有可能,以及如何仅检索自上次查询以来的更新/新记录?
谢谢! 威廉
答案 0 :(得分:1)
MySQL(也不是任何其他基于SQL的数据库,据我所知)不会将行的“上次更新时间”或“插入时间”存储在任何地方,至少不能查询任何地方(解析出二进制文件) log可能不是你想要做的事情。)
要获得“新记录”,您需要
您可以考虑让代码创建自己的表,每次在另一个表上发生UPDATE或INSERT时都会存储一条记录,然后将触发器添加到填充表的所有其他表中。
但这可能有点多了。
答案 1 :(得分:0)
您的缓存类必须通知所有更新,或者您需要某种过期。
唯一的另一个选择是查询数据库进行检查,但是你有点失去了缓存点:)
以上适用于“通用”缓存。如果为特定表实现专用缓存,则可以使用DML模式。