当我运行一个大型MySQL查询,将50k条记录(包含10个小列)插入数据库时,我的查询缓存使用率从大约10MB增加到400MB。 MySQL是否缓存了我的插入内容?
答案 0 :(得分:7)
MySQL query cache documentation说:
查询缓存存储SELECT语句的文本以及相应的结果 发送给客户。如果相同 声明是稍后收到的 服务器从中检索结果 查询缓存而不是解析和 再次执行该声明。
它不会缓存INSERT或其他查询。
答案 1 :(得分:1)
正如另一位用户所说,MySQL中有一种机制可以使缓存保持最新状态。当您执行影响先前在缓存中存储的结果的INSERT时,必须更新它以反映新插入或删除,以便稍后再次处理该SELECT时再次创建。我怀疑这就是你所看到的。
另一种可能性,虽然更明显,并且希望不是您的问题,但如果您使用显示并自动更新表的工具执行此INSERT,则可能在INSERT后发出SELECTS。
答案 2 :(得分:0)
它可能正在更新内存中的缓存。如果它是一个可能在缓存中的表,那么MySQL可能会试图保持最新。