在查询缓存里面,我这么处理一条查询sql:
select o from table where x
重点是 o 和 x
o是查询结果,x是查询条件
查询结果不重要,查询条件需要判断你能否处理得了查询条件。
目前,查询条件中带函数的sqlfreyja处理不了。原因很简单,如:select * from user where date_format(createTime,'%y%m') > '....'
这条sql处理不了的原因是 date_format是sql特有函数。不能被表达式语言处理,在维护查询缓存的时候根本就处理不了。
select count(*),xx from user where ....这类其实也不好处理。使用缓存就是为了减少数据库的连接次数,并且提高效率。类似于 count(*)这种函数,如果不能在内存中计算 就需要直接查询数据库结果。
使用查询缓存和使用场景是息息相关的,他能决定查询缓存是否真的提高了效率。一般的公共数据比较适合使用查询缓存,这类数据的特点是:量少、查询多、更改少。当然,量的多少和查询缓存没太大关系,满足后面2个条件就行了。
------前面几篇我提到的被我否定的no update方式缓存,我最近又有了一点新的想法。
我发现,一张表的字段可以分为2类:孤立的和群聚的。注意,他们和update频率无关
孤立的就是那类很少被用在查询语句里面
群聚的正好相反。
如,有时候你有没有想过,为什么用户就这么的操作一次就一定要去update数据库呢? 如果有,那么说明这个字段属于孤立的字段。因为,这个字段的改变实际上不需要频繁update,只需要在任意一个时间“处理”掉就行了。
好可怜啊,这类字段。你不怎么去关心他们什么时候会序列化到数据库,只用确保最终序列化到数据库就行了。与之相反,如果这个字段涉及到RMB你就不会这么怠慢了。
新的no update方案就要从这些字段下手。另外,带来的提升的要求比较苛刻。即便是孤立的,如果字段update次数过少,很显然看不出什么提升。能看出显著提升的必定是孤立的、update频繁的字段。
只有满足这2个条件,你才会觉得值了。
这个功能推出还需要等待另外一个功能:动态update。 虽然hibernate里面不建议开启动态update,但是我想不明白一个问题:为什么我仅仅修改user的level 1改为2 却需要update整条记录?
分享到:
相关推荐
在CMT处理器中,不同线程并行执行,优化代码以使它们同时访问不同的缓存行,可以最大化利用缓存带宽,避免资源争抢。 七、软件缓存管理 通过编程手段,开发者可以对缓存进行更精细的控制。例如,使用特定的内存...
基于用户行为特征的BitTorrent代理缓存模式,是为了最大化利用缓存空间和提高缓存命中率。这种模式会分析用户的行为模式,并将这些数据用于预测哪些数据块更有可能被请求,从而将这些数据块预加载到缓存中。这样,...
2. **分区模式**:不同的缓存节点存储不同的数据集,这种方式可以最大化利用缓存资源。 ##### 2.4 Memcached应用编程示例 使用Java语言编写一个简单的Memcached客户端示例: 1. **添加依赖**:在项目中添加...
为了最大化利用缓存的优势,可以在聚合层实现缓存机制,并利用本地缓存和远程缓存的组合来提高整体响应速度。 3. **数据一致性处理**:在使用缓存的同时,需要注意数据的一致性问题。可以采用版本控制等技术来确保...
在Windows Forms(Winform)开发中,`CacheDuration`属性通常与数据绑定和缓存策略有关,用于控制数据从服务器...在实际项目中,根据具体需求进行调整,平衡数据新鲜度和性能之间的关系,才能最大化利用缓存的优势。
在实际应用中,为了最大化缓存的效果,开发者需要根据应用程序的具体情况选择合适的缓存策略,并在适当的时候采用多种缓存技术的组合。例如,可以在页面级别实现输出缓存的同时,在数据层使用缓存API缓存数据库查询...
通过代码布局、数据对齐和循环展开等技术,可以最大化利用缓存,减少内存访问延迟。此外,理解局部性和数据访问模式也是优化内存性能的关键。 6. 程序员能做什么:多线程优化(Part 6) 在多核系统中,多线程编程...
这种方式在连续访问同一列元素时具有优势,因为这样可以最大化利用缓存。 在3D图形学中,矩阵经常被用来表示几何变换,如旋转、平移和缩放。这些变换通常需要高效的矩阵乘法操作。矩阵乘法在行主序和列主序下有不同...
- 通过这种方式,可以根据系统的实际内存情况来最大化利用缓存,从而提高浏览器的性能。 6. **禁用IPv6 DNS解析** - 将`network.dns.disableIPv6`设置为`true`,可以避免浏览器尝试解析IPv6地址,从而减少不必要...
- **数据库缓冲区缓存(Database Buffer Cache)** 的配置也很关键,适当的大小设置可以最大化利用缓存的优势,减少磁盘I/O操作,从而提升性能。 - **重做日志缓冲区(Redo Log Buffer)** 的大小选择也会影响性能,过小...
例如,在编写高并发、高性能的代码时,开发者可以利用缓存友好的数据结构和算法来最大化缓存利用率,减少缓存未命中的情况。此外,工具如缓存分析器可以帮助开发者评估和优化代码的缓存性能。 在源码层面,开发者...
文件缓存是一种常见的本地缓存策略,它通过将数据持久化到设备的文件系统中,实现数据的快速访问。 首先,我们需要了解Android的存储结构。Android系统提供了多种存储方式,包括内部存储、外部存储、SQLite数据库和...
**正文** Ehcache是Java平台上的一个开源、高性能的分布式缓存系统,它在处理大量用户访问主页或频繁...在实际项目中,根据业务需求选择合适的缓存策略和配置,可以最大化发挥Ehcache的优势,提升用户的使用体验。
为了解决这一问题,本文提出了一种利用缓存机制来提高XML文件数据读取效率的方法。该方法通过在内存中缓存已解析的XML数据,并在后续请求时检查文件是否已被更新来决定是否重新解析文件,从而实现快速的数据访问。 ...
通过以上步骤,我们可以成功地将Redis集成到MyBatis中,利用其作为二级缓存,极大地提高了系统的性能和响应速度。需要注意的是,在实际应用中还需要根据具体业务需求调整缓存策略,比如选择合适的缓存淘汰策略、调整...
这种智能化的管理方式,使得缓存空间得到最大化利用,同时降低了无效数据的存储。 在实际应用中,云更新缓存工具还具备易安装、易管理的特点。用户可以在Windows 2008 R2上快速部署,无需复杂的配置过程,简化了...
基于强化学习的任务缓存和计算卸载效益最大化算法是一种用于优化任务调度和计算资源利用的算法。该算法结合了强化学习方法和任务缓存、计算卸载技术,旨在实现任务执行的高效性和资源利用的最大化。
二级缓存需要提供并发访问策略以确保事务隔离级别,同时也需要设定数据过期策略,如最大内存数量、存活时间等,以防止缓存数据过时或占用过多资源。二级缓存还可以将超出内存限制的数据写入硬盘,形成持久化的缓存。...
ASP.NET缓存是微软开发的ASP.NET...总结起来,ASP.NET缓存与SQL数据库结合使用,可以有效减少数据库查询次数,提高Web应用响应速度,通过合理配置和管理缓存策略,可以在保障数据准确性的前提下,实现性能的最大化。
本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava的Cache组件是其核心特性之一,它提供了一种高效、自动化的缓存机制。定时缓存功能允许我们存储计算结果或从远程服务...