2011-03-23 4 views
0

DB에 한 번만 액세스하고 결과를 로컬 메모리/캐시에 저장하여 향후 작업을 수행하려고합니다. 예 :이 쿼리를 먼저 실행하고 싶습니다.storig DB 결과가 로컬 작업/캐시에 저장됩니다.

$query = "select * from songs"; 

결과를 로컬에 저장하면 나중에이 쿼리를 실행할 때 사용할 수 있습니다.

$query1 = "select * from songs order by song_id asc"; 
    $query2 = "select song_name from songs where song_id='5'"; 

PHP를 사용하여 DB에 액세스하고 있습니다.

+2

"왜"물어볼 필요가 있습니까? MySQL은 이러한 유형의 쿼리 (합리적인 데이터 크기 가정)에 대해 매우 높은 성능을 제공하며 성능을 더욱 향상시킬 수있는 쿼리 캐시가 내장되어 있습니다. 특정 문제로 인해 해결되지 않는 한 추가로 사용하지 않는 것이 좋습니다. 특정 문제가있는 경우 여기에 게시하여 조언을 구하십시오. – gahooa

+0

오 .. 미안 해요. 나는 몰랐다. 여기서 MySQL이 어떻게 작동하는지에 대해 더 자세히 알 수 있습니다. 고마워, 오늘 너에게서 무언가를 배웠다. :) – Maggie

답변

1

는 여기에 몇 가지 아이디어가 있습니다 :

  1. SQLite으로 "로컬"에서 프로세스 SQL 데이터베이스를 사용합니다. SQLite는 매우 빠름 (많은 경우에 MySQL, PostgreSQL 또는 Firebird보다 더 빠른 성능을 제공함) SQL-92 구문의 우수한 하위 집합을 지원하지만 "데이터 집합"을 채우는 데 추가 오버 헤드가 발생합니다 (SQLite DB)이 방법은 큰 유연성을 허용하고 끈기를 허용합니다.

  2. memcached 또는 이와 유사한 것을 사용하십시오. 그러나 memcached 으로 구상 된 모델에 맞지 않습니다. memcached가 작동하는 모델에서는 이와 같은 접근 방식이 실제로 잘 작동 할 수 있습니다.

  3. 개체/행을 "저장"한 다음 SQL 구문없이 수동으로 메모리 내 배열을 통해 쿼리를 수행 할 수 있습니다.

  4. the MTCache research project과 같은 일부 투명 시스템 캐싱 시스템이있을 수 있습니다. 나는 이들에 대한 경험이 없으며 [PHP를위한] 실행 가능한 솔루션이 있는지 알지 못합니다.

위 제안의 모든

실제 성능 및/또는 '올바른 결과'에을 방해 할 수있는 정확한 상황/상황과 에 크게 의존한다. MySQL은 실제로 데이터 페이지/캐시가 '뜨겁다'는 것을 보장하기 위해 내부 작업을 수행하고 적합하다고 판단되는 다른 캐싱을 수행 할 수 있음을 기억하십시오. 좋은 인덱스와 결합하여 나는 "오프라인"작업 또는 성능 분석functional requirements을 충족해야한다는 것을 나타내는 경우를 제외하고는 위의 것을 실제로 추천 할 수 없었습니다.

해피 코딩.

+0

당신의 귀중한 의견을 진심으로 감사드립니다 ... 나는 이곳에서 매일 많은 것을 배우고 있습니다 :) – Maggie

관련 문제