使用memcached作为orm缓存实现已经有一段时间了,
今天写了一段测试代码,想看看缓存对系统性能到底有多大提升,结果出乎意料。
测试方法 getById(String id),根据记录id从数据库中查出对象。
1. jdbc版本实现:直接用jdbc执行select方法,代码大致如下
PreparedStatement pst = null;
ResultSet set = null;
sql = "select " + TABLECOLUMN + " from " + TABLENAME + " where "
+ IDCOLUMN + " = '"+id+"'";
pst = con.prepareStatement(sql);
set = pst.executeQuery();
BizObject b = helpSetValue(set); //从set到orm业务对象数据拷贝
return b;
2.memcached实现,使用whalin客户端实现
mcc.setCompressEnable( true );
mcc.setCompressThreshold( 64 * 1024 );
BizObject o = (BizObject)mcc.get(mccid);
if (o==null){
o = loadObject(id); //调用jdbc查询,并set到memcached server
}
return o;
具体测试就是循环调用 getById方法 取出指定id,测试结果如下:
执行10次:
jdbc耗时:haoshi 31毫秒
memcached耗时:haoshi 109毫秒
执行100次:
jdbc耗时:haoshi 188毫秒
memcached耗时:haoshi 406毫秒
执行1000次:
jdbc耗时:haoshi 1579毫秒
memcached耗时:haoshi 2435毫秒,
memcache和oracle11g都安装在同一IBMx3650服务器上,
测试结果是在另外一台客户机上运行得到的。
改用jcs本地缓存后,测试1000次循环只需要94毫秒。
oracle和memcached在同一台服务器上(生产机),网络状况应该都一样,排除这个差别,
memcached性能表现竟然比直接jdbc访问要差,我无法理解,
采用memcached意义何在,难道用性能下降的方式来分担数据库压力吗?
或者是说memcached要在大压力下才能获得性能优势?
倒是本地jvm缓存性能提升很大,就是不支持集群。
请教各位,是否我的测试场景有问题?memcached是否适用于企业erp应用?
分享到:
相关推荐
Memcached 是一款高性能的分布式内存缓存系统,用于在Web应用中减轻数据库负载。它将数据存储在内存中,以键值对的形式提供快速访问,尤其适用于高并发场景。Memcached 使用简单,可移植性强,广泛应用于多种编程...
例如,可以将频繁访问但计算成本高的数据存储在Memcached中,减少对数据库的依赖。或者,通过设置缓存过期时间,实现动态数据的缓存,提高响应速度。 ### 6. 扩展功能 除了基础操作,驱动包还可能包含其他高级功能...
memcached,redis性能测试,内存缓存系统的性能测试;
分析每个slabs的内存使用情况,浪费了多少内存,可用内存等信息。 使用说明: memcached.py 172.16.1.1:11211 # shows slabs memcached.py 172.16.1.1:11211 start...memcached.py 172.16.1.1:11211 get key # get key
**memcached** 是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。它将数据存储在内存中,以键值对的形式提供快速的数据检索服务。memcached的设计目标是简洁和...
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载,很好的提高了Web性能。Memcached需要有缓存服务端,采用java编程的话还需要memcached.jar,这就是java中实现memcached服务的...
1. **下载Memcached**:首先,你需要从官方网站获取最新版的Memcached源码,或者在Windows环境下,可以直接下载编译好的`memcached.exe`。将`memcached.exe`放在一个方便的位置,例如`C:\Program Files`,并确保该...
Memcached是一款高性能、分布式内存对象缓存系统,用于加速动态Web应用程序的速度,减轻数据库负担。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站性能。 #### 二、Linux环境下Memcached安装...
2. **缓存替换策略**:内核态的memcached需要实现一种高效的缓存替换策略,如LRU(最近最少使用)或LFU(最不经常使用),以便在有限的内存资源中保持最佳的数据访问性能。 3. **锁和并发控制**:由于在内核环境中...
Memcached 的主要特点是可以将数据存储在内存中,从而减少对数据库的访问次数,提高系统的性能。 在服务集成平台中,Memcached 可以用来实现访问频率控制和访问次数控制。通过使用 Memcached 的计数器功能,可以...
Memcached的工作原理是将数据存储在内存中,避免了频繁读写硬盘导致的I/O延迟,从而提高了数据访问速度。由于其简单的设计和高效的性能,Memcached在许多高流量网站和应用中被广泛应用。 **64位系统的优势** 在64...
本文将详细比较这两种技术在可靠性、数据一致性、内存管理、内存使用率、应用场景、性能以及数据恢复等方面的不同之处。 #### 二、可靠性 - **Redis** 支持两种持久化方式:快照(snapshotting)和追加文件(Append ...
标题中的“Windows下memcached+memcached.dll 5.3.8”指的是在Windows操作系统上安装和使用Memcached...通过安装和配置Memcached,可以显著提升基于PHP的Web应用程序的性能,减少对数据库的直接访问,提高响应速度。
Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载。它通过在内存中存储数据来提供快速的数据访问,从而提高应用的性能。本篇文章将详细讲解如何安装和配置memcached,...
Memcached是一款高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的性能。它通过在内存中存储数据来快速访问,避免了反复读取硬盘上的数据,从而提高了应用程序的响应速度。 标题“memcached...
在性能上,Redis和Memcached相对比较接近,并且通常高于MongoDB。这主要是因为它们简单的设计和对内存的直接操作,减少了延迟。 操作的便利性: Memcached的数据结构相对单一,仅支持key-value形式的数据,这意味着...
在SSM项目中,它可以缓存经常访问的数据,减少对数据库的直接查询,从而提升应用性能。 5. **整合过程**:整合SSM和Memcached通常包括以下几个步骤: - 配置Memcached客户端库,如spymemcached或xmemcached,这些...
Apache通过PHP或其他后端语言与memcached通信,将频繁访问的数据存储在内存中,减少对数据库的直接请求,从而降低服务器响应时间,提高整体性能。 安装和配置memcached for Windows通常包括以下步骤: 1. 下载并...