memcached快取效能優勢何在

2021-08-29 21:13:29 字數 1517 閱讀 8761

使用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)

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服務深度原理及實戰 深度掌握核心運維及dba技術,成就自己的it人生!本課程適合人群 開發領域 運維領域 dba領域 課程列表 01 memcached是什麼.mp4 02 memcached的作用.mp4 03 網際網路常見快取軟體對比說明.mp4 04 老男孩老師的發...

高效能快取Memcached服務深度原理及實戰

高效能快取memcached服務深度原理及實戰 深度掌握核心運維及dba技術,成就自己的it人生!本課程適合人群 開發領域 運維領域 dba領域 課程列表 01 memcached是什麼.mp4 02 memcached的作用.mp4 03 網際網路常見快取軟體對比說明.mp4 04 老男孩老師的發...

Memcached 快取體系

關於memcached的博文太多了,以下是個人學習的收集整理。本節討論問題 一 介紹與應用 關於memcached以下為摘自博文 客戶端的版本比較多,並且不能互用,因為採用了壓縮機制,日誌等功能,所以在選擇客戶端時要注意這些。a.windows下 直接使用memcached.exe 程式就可以了,也...