使用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应用?
另外以前看到有人优化memcache client的文章,在前段再加入一层本地Jvm缓存,这样做有何意义呢,性能当然会有很大提升,不过主要就是用本地jvm缓存了,mem成了空架子,而且也不支持集群了。
分享到:
相关推荐
Memcached是一种高性能的缓存服务器,通常用于加速动态网页和减少数据库的负载。在本文中,我们将详细介绍如何搭建Memcached缓存服务器。 标题解释 Memcached缓存服务器是一种流行的缓存解决方案,它可以将频繁访问...
在PHP开发中,缓存是提高网站性能的关键技术之一,Memcached是一款广泛应用的分布式内存对象缓存系统。这个“php memcached缓存操作类”旨在简化开发者对Memcached的使用,提供一个方便、高效的接口来处理数据缓存。...
Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。它通过将数据存储在内存中,使得数据的读取速度大大提高,尤其在处理高并发请求时表现卓越。 ### ...
Memcached是一款分布式内存对象缓存系统,广泛应用于高性能网站和应用中。它设计的目标是简化并加速动态Web应用程序的数据存储,通过将数据存储在内存中,避免频繁读取或写入数据库,从而提高系统响应速度。 二、...
`memcached`是一个高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载。它通过将数据存储在内存中来加速读取操作,而不是每次请求都去查询数据库。由于其轻量级的设计和简单易用的接口,memcached被...
Memcached是一款高性能、分布式的内存对象缓存系统,主要用于加速Web应用程序,通过将数据存储在内存中,减少对数据库的直接访问,从而提高系统的响应速度和效率。Memcached的设计理念是简单、快速,它支持多种编程...
Memcached是一种高性能、分布式内存对象缓存系统,用于在动态应用中减少数据库负载,提高网站性能。它通过在内存中存储数据,使频繁访问的数据能够快速获取,从而减少了对硬盘I/O操作的依赖。在本示例中,我们将探讨...
标题 "使用Spring AOP对Web应用数据进行Memcached缓存" 涉及到的关键技术是Spring AOP(面向切面编程)和Memcached,这是一种常见的高性能、分布式内存对象缓存系统。在Web应用程序中,使用缓存可以显著提高数据访问...
memcached 缓存 jar包,tomcat共享缓存可用,java开发数据库缓存也可用。
.NET C# Memcached 缓存获取所有缓存键的方法步骤 ...本文详细介绍了如何使用 .NET C# 语言实现 Memcached 缓存获取所有缓存键的方法步骤,该方法可以帮助开发者快速实现 Memcached 缓存机制,并提高系统性能。
这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键做分区存储,而这个区就是Memcached服务端的一个或者多个...
Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。这个“memcached缓存服务器”压缩包提供的版本是1.2.1,适用于Windows 32位系统。 **一、...
Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高网站的响应速度。PHP与Memcached的结合,使得开发者能够轻松地在PHP应用中实现数据缓存。 ### Memcached的...
Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库负载,提高页面加载速度,从而显著提升网站的整体性能。Memcached的设计理念是简单而高效,它将数据存储在内存中,通过...
Memcached是一款轻量级的分布式内存对象缓存系统,用于减少数据库负载,提高应用程序性能。在SSM项目中集成Memcached,可以显著提升数据读取速度,降低对数据库的依赖。 首先,让我们深入了解一下SSM框架: 1. ...
memcached缓存服务器 ,64位安装包 ,内有简单的使用说明
Memcached 是一个高性能的缓存系统,通过减少数据库的查询次数和降低系统的负载来提高网站的性能。Memcached 可以与多种编程语言集成,包括 Java、PHP、Python 等。 Memcached Java 客户端 Memcached Java 客户端...
Memcached是一款高性能的分布式内存对象缓存系统,它被广泛应用于Web应用中,用于缓解数据库的压力,提高数据访问速度。本文将深入探讨Memcached的基本概念、工作原理、安装配置、使用方法以及源码分析。 **一、...
Memcached 缓存安装配置 Memcached 是一个自由开源的高速缓存系统,可以用来加速动态Web应用程序中的数据访问速度。本文将指导您如何安装和配置 Memcached,并介绍 Memcached 的基本概念和参数。 一、安装 ...