问题标签 [query-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL Query 缓存 Hitrate % value 是什么意思?
使用 MySQL Workbench,我正在查看我运行的两台服务器的 Admin 视图。
两台服务器的带宽相似
在一台服务器上只有一个站点的查询缓存命中率为 15%
另一台服务器拥有 100 多个站点和 88 个数据库,并且查询缓存命中率为 70%
我正在学习如何最好地优化和提高这些 MySQL 服务器的性能,但找不到任何关于这些值的含义、好坏以及如何改进它们的信息。
(我搜索了很多,但猜我没有用正确的术语搜索)
mysql - 我应该定期重置查询缓存吗?
我正在运行一个网站游戏。我没有触及任何事情,例如在游戏开始的那一年重置查询缓存,我正在处理大约 5000-100 万行,具体取决于表。一切都在不断更新,并且东西被插入到表格中。如果我理解正确,每次插入或更新都会清除该表的缓存?这就是我在网上搜索的结果,我不知道这是不是真的,或者我是否应该定期重置缓存。
一个月前发生的查询现在可能不再有用。因此,如果它正在存储这些查询结果,那么它完全没有价值,因为没有人会再次运行相同的确切查询。
我运行 SHOW STATUS LIKE "Qcache%" 结果是:
Qcache_free_blocks 6941
Qcache_free_memory 23490288
Qcache_hits 253269763
Qcache_inserts 368937684
Qcache_lowmem_prunes 57410566
Qcache_not_cached 9872266
Qcache_queries_in_cache 35275
Qcache_total_blocks 84877
我真的不知道这些东西是什么意思,也不知道它们是否对确定我是否需要重置缓存有用。提前致谢。
mysql - 如何保存和重新加载 MySQL 查询缓存以保持站点以最高速度运行
我正在测试服务器上运行 Magento 电子商务安装(在 PHP/MySQL 上运行)。我有一个相当大的(从我读过的)query_cache_size 272,629,760 字节,效果很好。
一旦大多数查询被加载到查询缓存中,该站点就会以闪电般的速度运行,与最快的生产站点(可能除了 Google.com 或 Amazon.com)一样快。但我遇到的问题是,为了将所有这些查询加载到查询缓存中,我必须手动点击网站上的 100 个链接。每次单击链接时,都会向数据库发送一个查询并保存在缓存中。但是如果我重新启动服务器,那么我必须从头再来。一定会有更好的办法!
理想情况下,我认为应该有一种方法可以在重新启动之前“备份”查询缓存并在重新启动时加载它。这可能吗?
否则,我将不得不设计一个自动点击我所有链接的网络爬虫。
hibernate - Hibernate EntityManager + Query Cache - “join fetch”不起作用
我正在尝试缓存这样的查询:
问题是FETCH
当缓存被命中时似乎没有任何影响,即集合 Foo.bar 没有被初始化。我可以遍历结果列表并手动初始化集合的所有实例,但这会使整个事情比不使用查询缓存的情况下还要慢。
我使用带有 Infinispan 的 JBoss AS 6.0 / Hibernate 3.6 作为缓存引擎。
奇怪的是,根据我通过 JMX 控制台获得的缓存统计信息,Foo.bar 中的对象似乎被缓存了,但这些对象的缓存没有得到任何命中。
glassfish - glassfish + class cast异常表单QueryKey中的openjpa查询缓存问题
在 Glassfish 上使用带有内置 DataCache 的 openjpa 1.2.0,启用查询缓存并固定一些命名的 queires,我们看到以下异常:org.apache.openjpa.persistence.PersistenceException: java.lang.String cannot be cast to org. apache.openjpa.datacache.QueryKey
有人有什么想法吗?
完整异常转储:[#|2011-05-01T11:43:05.728-0500|WARNING|sun-appserver9.1|javax.enterprise.system.core.transaction|_ThreadID=30;_ThreadName=httpSSLWorkerThread-20393-0;_RequestID =3ce3425f-cd4b-42b9-a305-570c5745add7;|JTS5054: 完成 org.apache.openjpa.persistence.PersistenceException 后发生意外错误:java.lang.Object 无法在 org.apache.openjpa.datacache.QueryKey 中强制转换.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1870) 在 com.sun.jts.jta.SynchronizationImpl.after_completion(SynchronizationImpl.java:154) 在 com.sun.jts.CosTransactions.RegisteredSyncs.distributeAfter(RegisteredSyncs .java:210) 在 com.sun.jts.CosTransactions.TopCoordinator.afterCompletion(TopCoordinator.java:2585) 在 com.sun.jts.CosTransactions.CoordinatorTerm.commit(CoordinatorTerm.java:433) 在 com.sun.jts.CosTransactions.TerminatorImpl.commit(TerminatorImpl.java:249) 在 com.sun.jts.CosTransactions.CurrentImpl.commit(CurrentImpl.java:623) 在 com.sun.jts.jta.TransactionManagerImpl .commit(TransactionManagerImpl.java:309) 在 com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.commit(J2EETransactionManagerImpl.java:1030) 在 com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.commit(J2EETransactionManagerOpt.java:397) 在 com。 sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3792) 在 com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3571) 在 com.sun.ejb.containers.WebServiceInvocationHandler.invoke(WebServiceInvocationHandler. java:200) 在 sun.reflect 的 $Proxy973.transfer(Unknown Source)。NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method. java:597) 在 com.sun.enterprise.webservice.InvokerImpl.invoke(InvokerImpl.java:81) 在 com.sun.enterprise.webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82) 在 com.sun.xml.ws .server.InvokerTube$2.invoke(InvokerTube.java:146) 在 com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257) 在 com.sun.xml.ws.server.sei。 SEIInvokerTube.processRequest(SEIInvokerTube.java:93) 在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595) 在 com.sun.xml.ws.api.pipe.Fiber。在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java: 25) 的 invoke0(Native Method)第597章) .InvokerTube$2.invoke(InvokerTube.java:146) 在 com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257) 在 com.sun.xml.ws.server.sei.SEIInvokerTube。 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595) 在 com.sun.xml.ws.api.pipe.Fiber 的 processRequest(SEIInvokerTube.java:93)。在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java: 25) 的 invoke0(Native Method)第597章) .InvokerTube$2.invoke(InvokerTube.java:146) 在 com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257) 在 com.sun.xml.ws.server.sei.SEIInvokerTube。 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595) 在 com.sun.xml.ws.api.pipe.Fiber 的 processRequest(SEIInvokerTube.java:93)。在 com.sun.enterprise.webservice.InvokerImpl 在 java.lang.reflect.Method.invoke(Method.java:597) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 调用(NativeMethodAccessorImpl.java:39) .invoke(InvokerImpl.java:81) 在 com.sun.enterprise.webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82) 在 com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)在 com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257) 在 com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93) 在 com.sun .xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595) 在 com.sun.xml.ws.api.pipe.Fiber。在 com.sun.enterprise.webservice.InvokerImpl 在 java.lang.reflect.Method.invoke(Method.java:597) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 调用(NativeMethodAccessorImpl.java:39) .invoke(InvokerImpl.java:81) 在 com.sun.enterprise.webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82) 在 com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)在 com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257) 在 com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93) 在 com.sun .xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595) 在 com.sun.xml.ws.api.pipe.Fiber。invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.webservice.InvokerImpl.invoke(InvokerImpl.java:81) at com.sun.enterprise .webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82) 在 com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146) 在 com.sun.xml.ws.server.sei.EndpointMethodHandler。在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber. java:595) 在 com.sun.xml.ws.api.pipe.Fiber。invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.webservice.InvokerImpl.invoke(InvokerImpl.java:81) at com.sun.enterprise .webservice.EjbInvokerImpl.invoke(EjbInvokerImpl.java:82) 在 com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146) 在 com.sun.xml.ws.server.sei.EndpointMethodHandler。在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber. java:595) 在 com.sun.xml.ws.api.pipe.Fiber。在 com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146) 在 com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java) 调用(EjbInvokerImpl.java:82) :257) 在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595) 在 com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93) 在com.sun.xml.ws.api.pipe.Fiber。在 com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146) 在 com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java) 调用(EjbInvokerImpl.java:82) :257) 在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595) 在 com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93) 在com.sun.xml.ws.api.pipe.Fiber。doRun(Fiber.java:554) 在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539) 在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber. java:436) 在 com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106) 在 com.sun.enterprise.webservice.MonitoringPipe.process(MonitoringPipe.java:147) 在 com .sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115) 在 com.sun.xml.ws.api.pipe.Fiber。_doRun(Fiber.java:595) 在 com.sun.xml.ws.api.pipe.Fiber。doRun(Fiber.java:554) 在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539) 在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber. java:436) 在 com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106) 在 com.sun.xml.ws.tx.service.TxServerPipe.process(TxServerPipe.java: 317) 在 com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:218) 在 com.sun.enterprise.webservice.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:129) 在 com.sun.xml.ws.api .pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115) 在 com.sun.xml.ws.api.pipe.Fiber。_doRun(Fiber.java:595) 在 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554) 在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber. java:539) 在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436) 在 com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243) 在com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:444) 在 com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) 在 com。 sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135) 在 com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:113) 在 com.sun.enterprise.webservice。 com.sun.enterprise.webservice.EjbWebServiceServlet 上的 Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)。dispatchToEjbEndpoint(EjbWebServiceServlet.java:226) at com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:155) at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at com.sun.enterprise .web.AdHocContextValve.invoke(AdHocContextValve.java:114) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) ) 在 org.apache.catalina.core.StandardHostValve 的 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:87) 的 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)。在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) 在 org.apache 调用(StandardHostValve.java:206)。catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: 1080) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) 在 org.apache.catalina.core.StandardPipeline 的 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150) .doInvoke(StandardPipeline.java:577) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) 在 org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080) 在 org. com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask 上的 apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)。在 com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568) 在 com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask. java:813) 在 com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) 在 com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)在 com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214) 在 com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) 在 com.sun .enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106) 原因:java.lang.ClassCastException:java.lang.Object 无法转换为 org。org.apache.openjpa.datacache.DataCacheStoreManager.updateCaches(DataCacheStoreManager.java:252) 中 org.apache.openjpa.datacache.DataCacheStoreManager.updateCaches(DataCacheStoreManager.java:252) 中 org.apache.openjpa.datacache.AbstractQueryCache.onTypesChanged(AbstractQueryCache.java:85) 中的 apache.openjpa.datacache.QueryKey。 openjpa.datacache.DataCacheStoreManager.commit(DataCacheStoreManager.java:90) 在 org.apache.openjpa.kernel.DelegatingStoreManager.commit(DelegatingStoreManager.java:94) 在 org.apache.openjpa.kernel.BrokerImpl.endStoreManagerTransaction(BrokerImpl.java: 1308) 在 org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2177) 在 org.apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1846) ... 还有 75 个 |#]85) 在 org.apache.openjpa.datacache.DataCacheStoreManager.updateCaches(DataCacheStoreManager.java:252) 在 org.apache.openjpa.datacache.DataCacheStoreManager.commit(DataCacheStoreManager.java:90) 在 org.apache.openjpa.kernel.DelegatingStoreManager .commit(DelegatingStoreManager.java:94) 在 org.apache.openjpa.kernel.BrokerImpl.endStoreManagerTransaction(BrokerImpl.java:1308) 在 org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2177) 在 org. apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1846) ... 75 更多 |#]85) 在 org.apache.openjpa.datacache.DataCacheStoreManager.updateCaches(DataCacheStoreManager.java:252) 在 org.apache.openjpa.datacache.DataCacheStoreManager.commit(DataCacheStoreManager.java:90) 在 org.apache.openjpa.kernel.DelegatingStoreManager .commit(DelegatingStoreManager.java:94) 在 org.apache.openjpa.kernel.BrokerImpl.endStoreManagerTransaction(BrokerImpl.java:1308) 在 org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2177) 在 org. apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1846) ... 75 更多 |#]DelegatingStoreManager.commit(DelegatingStoreManager.java:94) at org.apache.openjpa.kernel.BrokerImpl.endStoreManagerTransaction(BrokerImpl.java:1308) at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2177) at org .apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1846) ... 75 更多 |#]DelegatingStoreManager.commit(DelegatingStoreManager.java:94) at org.apache.openjpa.kernel.BrokerImpl.endStoreManagerTransaction(BrokerImpl.java:1308) at org.apache.openjpa.kernel.BrokerImpl.endTransaction(BrokerImpl.java:2177) at org .apache.openjpa.kernel.BrokerImpl.afterCompletion(BrokerImpl.java:1846) ... 75 更多 |#]
hibernate - 如何启用 infinispan-configs.xml 的 namedCache “实体”,用于支持其 namedCache “local-query”
当使用 Hibernate 3.5.6-FINAL 作为我们的 JPA 提供程序并使用 infinispan 4.2.0.ALPHA1 作为二级查询缓存提供程序时,我担心,与 Hibernate 文档相反,数据库结果被多次存储在不同的内存中infinispan namedCache 中的位置(对于返回某些相同记录的不同 HQL 查询的结果集),“local-query”。由于我们的许多频繁发出的查询在其结果集中有很大的交集,这可能会很快耗尽内存并使查询缓存无用。
我怀疑我错误地配置了 infinispan 或 hibernate 或两者,因为我似乎无法让 hibernate 2 级实体缓存作为查询缓存的支持运行。我希望看到一个将 infinispan 作为 hibernate-as-JPA 2 级查询缓存的示例,其结果本身由 infinispan 作为 hibernate-as-JPA 2 级实体缓存支持。
细节:
Hibernate 3.5 文档(http://docs.jboss.org/hibernate/core/3.5/reference/en/html/performance.html#performance-querycache-enable)声称:
查询缓存不缓存缓存中实际实体的状态;它只缓存标识符值和值类型的结果。出于这个原因,[原文如此] 对于那些预期作为查询结果缓存的一部分缓存的实体,查询缓存应始终与二级缓存一起使用
但是,使用 infinispan (根据http://community.jboss.org/wiki/usinginfinispanasjpahibernatesecondlevelcacheprovider )启用休眠级别 2 查询缓存, 就像在我们的 persistence.xml 中一样:
并检查 infinispan CacheManager JMX 属性仅显示 infinispan-configs.xml 中定义的六个 namedCache 之一(来自 GAV org.hibernate/hibernate-infinispan/3.5.6-FINAL,这取决于 GAV org.infinispan/infinispan-core/ 4.2.0.ALPHA1) 被创建,还有一个没有在那里定义:
我怀疑上面引用的 jboss wiki 文章在讨论实体缓存时指的是 namedCache “实体”;但是,我找不到如何创建该缓存。(除此之外:我还担心创建了 infinispan-configs.xml 的本地查询,但没有创建 infinispan-configs.xml 的时间戳;相反,我们收到了一个 UpdateTimestampsCache,它必须在 hibernate 的其他地方定义。)
在我们的 persistence.xml 中,然后注释相关实体 @javax.persistence.Cacheable 确实(根据 infinispan CacheManager JMX 属性)创建了实体缓存(命名为实体的包限定 java 类名),但它们似乎甚至未使用当 JMX 统计数据显示本地查询的命中率很高时(实际上,这种缓存命中查询的性能非常出色)。
我的恐惧是没有根据的吗?即使在多个 HQL 查询的结果集中返回实体信息,infinispan 也只存储一次实体信息?如果不是,那么获取 infinispan-configs.xml 的 namedCache 的正确方法是什么,“实体”用于避免实体数据的重复存储?最后,如何使用 infinispan-configs.xml 的 namedCache,“timestamps”,而不是“org.hibernate.cache.UpdateTimestampsCache”,作为休眠二级时间戳缓存?
hibernate - 休眠实体修改/删除使涉及相同实体名称的查询缓存无效?
我从一些博客中读到
时间戳缓存跟踪每个表的最后更新时间戳(此时间戳会针对任何表修改进行更新)。如果查询缓存打开,则只有一个时间戳缓存,它被所有查询缓存实例使用。每当检查查询缓存以查找查询时,都会检查查询中所有表的时间戳缓存。如果表上一次更新的时间戳大于查询结果被缓存的时间,则删除该条目并且查找未命中。
假设我使用get()
方法加载实体并通过调用(或)保存它saveOrUpdate()
我通过调用删除实体delete()
。
在所有这些情况下,时间戳缓存会跟踪已修改的表,并让查询缓存使其无效,这些表的任何缓存查询结果?
谢谢!
mysql - 同时使用 MySQL Query Cache 和 Memcached
我认为它们都很棒,我想知道是否可以同时使用两个缓存系统?有没有经验?
web-services - EF 1 Web 服务应用程序中的内存使用量在每次调用时不断增长 - 查询缓存问题?
希望你们中的一些聪明人可以在这里帮助我!
我们有一个使用 Entity Framework 1 和 EFPocoAdapter 的 ASP.NET Web 服务应用程序。运行此 Web 服务的应用程序池的内存使用量在每次 Web 服务调用时都在不断增长。我们目前监控它的内存使用情况,一旦它开始超过 1GB,我们就会回收应用程序池以释放内存。
我们在“using”语句中实例化每个 web 方法中的对象上下文,这样就不会留下开放的对象上下文(用 efprof 观察)。
所以我使用 Ants 内存分析器 7 来跟踪正在发生的事情,在第一次调用 Web 服务之后(此时 EF 框架生成它的视图等),我拍摄了一个快照。然后进行相同的调用并拍摄另一个快照。Ants 显示,自上次快照以来创建的新对象几乎都与 System.Data.Common.QueryCache.QueryCacheManager 相关。
我知道缓存的目的是提高性能,但在我们的例子中,我认为我们不需要缓存每个查询计划,因为由于我们的主要应用程序/业务的性质,重复这些调用的可能性很小。
所以,我的问题.....有没有办法关闭这种缓存,或者我在这里吠叫错误的树并且还有其他事情我不知道?
我在网上搜索了这个问题的答案,我能找到的只是 MergeOption 属性,它似乎与实体跟踪有关,以提高速度/性能。
hibernate - Hibernate、二级缓存和查询缓存
我将 Hibernate 与 Ehcache 一起使用(不认为这很重要)。当用户登录时,我通过他的电子邮件识别他,并将他的电子邮件用于所有后续呼叫。现在,由于电子邮件不是我的“休眠 ID”(我用 注释的那个@Id
),我必须使用查询加载它,因此将其存储在查询缓存中。但是,当用户注销时,我无法明确地将他从缓存中逐出,因为他存储在与其他已登录用户共享的区域内。
我的问题是:我可以将用户加载到二级缓存中(从而使驱逐更容易),而无需使用该session().get(user)
方法再次访问数据库吗?这里还有一点,如果用户被更新,查询缓存对于这个用户来说是错误的。我希望在更新用户时更新它