SlideShare ist ein Scribd-Unternehmen logo
1 von 6
Memcached + PHP + MySQL
Lowy Shin
日本語バージョンのご希望の方はお気軽にご連絡ください。
(最後ページのLinked Inプロフィールにメッセージをください。:) )
Basic Structure
Web Server
Web Server
Web Server
memcached
memcached
MySQL
memcached 는 MySQL 서버에 부하를 발생시키는 것을 줄이기 위해 만들어진 DB Cache 서버입니다.
위의 구조로 보면 웹서버는 유저에 따라서 무한히 늘리면 되고, memcached 서버는 자체 허용량에 맞추
어 늘리거나 이중화 구성을 하는 용도로 늘립니다.
memcached의 목적은 DB엑세스를 줄이기 위해 자주 요청하는 Query 의 결과 셋을 memcached의 메모
리에 저장하여 빨리 보여줌으로서 DB의 부하를 줄여주기 위함입니다.
Web Server
Web Server
Web Server
memcached
memcached
MySQL
memcached
웹서버에 같이 memcached를 설치하는 방법도 있는데 나쁜 것 같진 않네요.
Supported Language
(Web) Server memcached MySQL
일반적으로 Linux위에 memcached를 설치하는데 윈도우 버전은 개인이 만들어서 no promise, no
support 라고 적혀 있습니다. memcached.org에서는 리눅스 버전만 다운로드 받을 수 있습니다.
설치 방법은 너무 많이 나와있고 설치가 간단하므로 설치는 생략합니다.
간단한 설정으로 다음 두 언어로 호출이 가능합니다.
- PHP
- Python
호출하는 포인트는 위 그림의 첫 번째인 (Web) Server에서 입니다. 웹서버에 memcached, MySQL을 전
부 설치여 동일 서버에서 호출하는 경우도 있지만, 서비스용 보다는 테스트용일 때 그렇게 구축하겠죠.
.net(닷넷) 기반의 클라이언트가 있긴 하지만 역시 memcached.org에서 제공하지 않는 개인이 만든 클라
이언트 입니다.
python 예제 :
http://code.openark.org/blog/mysql/using-memcached-functions-for-mysql-an-automated-alternative-to-
query-cache
PHP 예제 :
http://pureform.wordpress.com/2008/05/21/using-memcache-with-mysql-and-php/
mysql_query_cache Architecture
SQL send
FInd SQL statement
from memcache
SQL exist?
execute SQL
Get from memcached
Set SQL statement and
Data to memcached
Return Data
Web Server에서 SQL을 실행시키려 합니다.
이 때 memcached에서 동일한 SQL문이 메모리상에 남아있는지 확인합니다.
memcached에 동일한 SQL문이 있다면, 해당 SQL문의 Data를 메모리에서 추출하며 리턴합니다. MySQL
DB를 거치지 않는 것이죠.
만약 memcached에 SQL문이 없다면 DB에서 SQL을 실행합니다.
그 결과값을 memcached에 저장하고 결과를 웹서버에 제공합니다.
결국 같은 SQL이라면 memcached를 이용하게 되므로 횟수만큼 MySQL에 부하가 줄어들 수 있습니다.
하지만, 가장 중요한 것은 위 알고리즘대로 PHP소스를 만들어야 한다는 것입니다.
전 페이지의 URL에서의 소스가 바로 위 알고리즘의 Select만을 구현 한 것입니다. 이제 여러분이 Insert,
Update, Delete를 구현해야겠지요.. ^^;;
Exception
DB Data ChangedFlush relatied queries
Query값이 변경되지 않았지만, 다른 query로 인해 DB의 데이터가 변경된 경우가 종종 발생합니다.
이미 개발 설계에서도 memcached를 사용하는 경우 이 경우까지 생각해서 처리함수를 만들어야 겠지요.
우선 DB data가 변경되는 경우, row베이스로 flush할 것인지, table베이스로 flush할 것인지를 결정합니다.
그리고 DB의 data가 변경 된 다음 변경이 있을 법한 query statement를 찾아서 flush를 해주어야 합니다.
memcached의 flush 명령은 해당 데이터를 메모리상에서 지우는 명령입니다.
즉, 메모리에서 지워지면 자연히 값이 없으므로 같은 query가 오더라도 MySQL을 거쳐가게 되겠죠.
Epilogue
memcached는 APM, LAMP베이스의 서비스에 상당히 많이 사용되어지고 있습니다.
간단하고, 관리가 편리하기 때문이죠.
요즘같은 하이브리드 클라우드(Hybrid Cloud)환경에서는 더할 나위없이 훌륭한 서비스 입니다.
하지만 위의 내용처럼 예외처리 및 memcached의 용량 초과로 인해 memcached를 늘렸을 때 서로의 정
합성 문제등을 충분히 고려하여 설계, 개발을 하지 않으면 데이터의 정합성 문제가 반드시 나타납니다.
어떤 용도로 사용할 것인지를 미리 확인하고, 그에 대한 시스템 설계, 개발 모듈 설계를 통해서 잘 만들어
지기만 한다면 상당한 퍼포먼스를 얻을 수 있을 것입니다.
author : Lowy Shin
Profile :
https://www.linkedin.com/pub/lowy-shin/23/700/211
Global Infrastructure Information Management Platform :
http://msp.littleworld.net
Personal linkbook management :
http://link.littleworld.net

Weitere ähnliche Inhalte

Mehr von Lowy Shin

AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.ILowy Shin
 
Giip kb-hadoop sizing
Giip kb-hadoop sizingGiip kb-hadoop sizing
Giip kb-hadoop sizingLowy Shin
 
クラウドビズネスを始めようとしているホスティング企業様へのご提案
クラウドビズネスを始めようとしているホスティング企業様へのご提案クラウドビズネスを始めようとしているホスティング企業様へのご提案
クラウドビズネスを始めようとしているホスティング企業様へのご提案Lowy Shin
 
giip service brochure (en) 150705
giip service brochure (en) 150705giip service brochure (en) 150705
giip service brochure (en) 150705Lowy Shin
 
giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701
giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701
giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701Lowy Shin
 
Giip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanualGiip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanualLowy Shin
 
Sas 와 sata의 기술적인 성능차이.pptx
Sas 와 sata의 기술적인 성능차이.pptxSas 와 sata의 기술적인 성능차이.pptx
Sas 와 sata의 기술적인 성능차이.pptxLowy Shin
 
Clip2Linkの登録から楽々ページ登録マニュアル
Clip2Linkの登録から楽々ページ登録マニュアルClip2Linkの登録から楽々ページ登録マニュアル
Clip2Linkの登録から楽々ページ登録マニュアルLowy Shin
 
ブックマークバーをリンクブックで管理
ブックマークバーをリンクブックで管理ブックマークバーをリンクブックで管理
ブックマークバーをリンクブックで管理Lowy Shin
 
NetDrive2でクラウドストレージ間ファイルコピー
NetDrive2でクラウドストレージ間ファイルコピーNetDrive2でクラウドストレージ間ファイルコピー
NetDrive2でクラウドストレージ間ファイルコピーLowy Shin
 

Mehr von Lowy Shin (10)

AI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.IAI = SE , giip system manage automation with A.I
AI = SE , giip system manage automation with A.I
 
Giip kb-hadoop sizing
Giip kb-hadoop sizingGiip kb-hadoop sizing
Giip kb-hadoop sizing
 
クラウドビズネスを始めようとしているホスティング企業様へのご提案
クラウドビズネスを始めようとしているホスティング企業様へのご提案クラウドビズネスを始めようとしているホスティング企業様へのご提案
クラウドビズネスを始めようとしているホスティング企業様へのご提案
 
giip service brochure (en) 150705
giip service brochure (en) 150705giip service brochure (en) 150705
giip service brochure (en) 150705
 
giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701
giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701
giip システム管理自動化ツール紹介 service brochure-jp-for customer-150701
 
Giip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanualGiip doc1411-01-notification servicemanual
Giip doc1411-01-notification servicemanual
 
Sas 와 sata의 기술적인 성능차이.pptx
Sas 와 sata의 기술적인 성능차이.pptxSas 와 sata의 기술적인 성능차이.pptx
Sas 와 sata의 기술적인 성능차이.pptx
 
Clip2Linkの登録から楽々ページ登録マニュアル
Clip2Linkの登録から楽々ページ登録マニュアルClip2Linkの登録から楽々ページ登録マニュアル
Clip2Linkの登録から楽々ページ登録マニュアル
 
ブックマークバーをリンクブックで管理
ブックマークバーをリンクブックで管理ブックマークバーをリンクブックで管理
ブックマークバーをリンクブックで管理
 
NetDrive2でクラウドストレージ間ファイルコピー
NetDrive2でクラウドストレージ間ファイルコピーNetDrive2でクラウドストレージ間ファイルコピー
NetDrive2でクラウドストレージ間ファイルコピー
 

Lw nb1411-01-memcached+php+my sql

  • 1. Memcached + PHP + MySQL Lowy Shin 日本語バージョンのご希望の方はお気軽にご連絡ください。 (最後ページのLinked Inプロフィールにメッセージをください。:) )
  • 2. Basic Structure Web Server Web Server Web Server memcached memcached MySQL memcached 는 MySQL 서버에 부하를 발생시키는 것을 줄이기 위해 만들어진 DB Cache 서버입니다. 위의 구조로 보면 웹서버는 유저에 따라서 무한히 늘리면 되고, memcached 서버는 자체 허용량에 맞추 어 늘리거나 이중화 구성을 하는 용도로 늘립니다. memcached의 목적은 DB엑세스를 줄이기 위해 자주 요청하는 Query 의 결과 셋을 memcached의 메모 리에 저장하여 빨리 보여줌으로서 DB의 부하를 줄여주기 위함입니다. Web Server Web Server Web Server memcached memcached MySQL memcached 웹서버에 같이 memcached를 설치하는 방법도 있는데 나쁜 것 같진 않네요.
  • 3. Supported Language (Web) Server memcached MySQL 일반적으로 Linux위에 memcached를 설치하는데 윈도우 버전은 개인이 만들어서 no promise, no support 라고 적혀 있습니다. memcached.org에서는 리눅스 버전만 다운로드 받을 수 있습니다. 설치 방법은 너무 많이 나와있고 설치가 간단하므로 설치는 생략합니다. 간단한 설정으로 다음 두 언어로 호출이 가능합니다. - PHP - Python 호출하는 포인트는 위 그림의 첫 번째인 (Web) Server에서 입니다. 웹서버에 memcached, MySQL을 전 부 설치여 동일 서버에서 호출하는 경우도 있지만, 서비스용 보다는 테스트용일 때 그렇게 구축하겠죠. .net(닷넷) 기반의 클라이언트가 있긴 하지만 역시 memcached.org에서 제공하지 않는 개인이 만든 클라 이언트 입니다. python 예제 : http://code.openark.org/blog/mysql/using-memcached-functions-for-mysql-an-automated-alternative-to- query-cache PHP 예제 : http://pureform.wordpress.com/2008/05/21/using-memcache-with-mysql-and-php/
  • 4. mysql_query_cache Architecture SQL send FInd SQL statement from memcache SQL exist? execute SQL Get from memcached Set SQL statement and Data to memcached Return Data Web Server에서 SQL을 실행시키려 합니다. 이 때 memcached에서 동일한 SQL문이 메모리상에 남아있는지 확인합니다. memcached에 동일한 SQL문이 있다면, 해당 SQL문의 Data를 메모리에서 추출하며 리턴합니다. MySQL DB를 거치지 않는 것이죠. 만약 memcached에 SQL문이 없다면 DB에서 SQL을 실행합니다. 그 결과값을 memcached에 저장하고 결과를 웹서버에 제공합니다. 결국 같은 SQL이라면 memcached를 이용하게 되므로 횟수만큼 MySQL에 부하가 줄어들 수 있습니다. 하지만, 가장 중요한 것은 위 알고리즘대로 PHP소스를 만들어야 한다는 것입니다. 전 페이지의 URL에서의 소스가 바로 위 알고리즘의 Select만을 구현 한 것입니다. 이제 여러분이 Insert, Update, Delete를 구현해야겠지요.. ^^;;
  • 5. Exception DB Data ChangedFlush relatied queries Query값이 변경되지 않았지만, 다른 query로 인해 DB의 데이터가 변경된 경우가 종종 발생합니다. 이미 개발 설계에서도 memcached를 사용하는 경우 이 경우까지 생각해서 처리함수를 만들어야 겠지요. 우선 DB data가 변경되는 경우, row베이스로 flush할 것인지, table베이스로 flush할 것인지를 결정합니다. 그리고 DB의 data가 변경 된 다음 변경이 있을 법한 query statement를 찾아서 flush를 해주어야 합니다. memcached의 flush 명령은 해당 데이터를 메모리상에서 지우는 명령입니다. 즉, 메모리에서 지워지면 자연히 값이 없으므로 같은 query가 오더라도 MySQL을 거쳐가게 되겠죠.
  • 6. Epilogue memcached는 APM, LAMP베이스의 서비스에 상당히 많이 사용되어지고 있습니다. 간단하고, 관리가 편리하기 때문이죠. 요즘같은 하이브리드 클라우드(Hybrid Cloud)환경에서는 더할 나위없이 훌륭한 서비스 입니다. 하지만 위의 내용처럼 예외처리 및 memcached의 용량 초과로 인해 memcached를 늘렸을 때 서로의 정 합성 문제등을 충분히 고려하여 설계, 개발을 하지 않으면 데이터의 정합성 문제가 반드시 나타납니다. 어떤 용도로 사용할 것인지를 미리 확인하고, 그에 대한 시스템 설계, 개발 모듈 설계를 통해서 잘 만들어 지기만 한다면 상당한 퍼포먼스를 얻을 수 있을 것입니다. author : Lowy Shin Profile : https://www.linkedin.com/pub/lowy-shin/23/700/211 Global Infrastructure Information Management Platform : http://msp.littleworld.net Personal linkbook management : http://link.littleworld.net