Memcached VS DBMS Performance Comparison

이제는 대부분의 기업들에서 사용하고 있지만, 아직도 모르시는 분들을 위해서 간단하게 정리합니다.

혹시 조금의 비용만 들이고, 당신의 웹사이트나 어플맄케이션의 성능을 10배 이상 올릴 수 있다면

어떻게 하시겠습니까?

가장 손쉬운 방법은 바로 DBMS와 함께 Memcached 를 사용하는 것입니다.

보통 일반적으로 2 Tier , App -> DBMS 이런형태로 사용하게 되는데, 여기에 중간에 Memcached를

집어넣으므로써 굉장히 손쉽게 성능을 향상시킬 수 있습니다.

일단 단순 DBMS Select 쿼리를 했을 때 걸리는 시간입니다.

1. select dbms
[time=0:00:00.035560]

2. get memcached
[time=0:00:00.000415]

입니다. 이것은 극단적인 예이긴 하지만, 거의 100배 정도 차이가 나는걸 볼 수 있습니다.

그렇다면, 어느 부분에 memcached 를 적용하는 것이 좋을까요?

1] Read 작업이 많은 경우!!!
2] 항상 같은 값이나, 일정 동안 같은 값을 가져가는 경우

즉, 단순 select 작업이 많은 경우에는 memcached를 이용하면 바로 위와 같은 성능 향상을
바로 획득할 수 있습니다.

여기서 memcached를 사용할 경우의 Tip 을 몇가지 소개합니다.
1. memcached 서버의 memory가 많을 수록 좋다.
-> 당연한 일이지만, memory 가 클 수록 더 많은 데이터를 Cache 할 수 있으므로 좋습니다.
-> O(1) 알고리즘이니, 데이터가 많아져도 속도의 저하가 없습니다.

2. memcached 서버와는 Connection Pool 등으로 Connection 작업을 줄인다.
-> 매번 작업할 때 마다, memcached 서버와 Connection 을 맺어야 하면, 배보다 배꼽이
-> 큰 경우가 발생합니다. 즉 한번 맺으면 쭈욱 계속 사용하는 것이 성능상 향상이 있습니다.

3. -f 옵션을 잘 사용하자.
-> memcached 는 slab allocator 를 사용하는 slab의 크기는 이 -f 옵션의 팩터를 이용해서ㅇ해서
-> 증가합니다. 즉 n 바이트 이하는 전부 n 이라는 chunk를 생성하게 됩니다. 그리고 이 n보다
-> 커지는 크기는 n*factor 크기 단위로 증가합니다. 즉 memory 를 적절히 사용하려면 이 -f를
-> 적절히 이용하면 효율적으로 사용할 수 있습니다.