ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL Buffered , Unbuffered Query
    Technique/RDBMS 2016. 12. 27. 12:29
    반응형



    php 메뉴얼에 나와 있는 내용.


    정리하자면


    1.buffered query 

    ​쿼리의 결과는 MySQL 서버로 부터 바로 PHP쪽 서버에 전송되어 PHP 프로세서 메모리상에 결과를 보존해둔다.

    이 결과를 가지고 쿼리의 행수를 계산한다던지 결과 값의 포인터를 이동시키던지 등의 조작이 가능하다.

    또 같은 접속상의 쿼리를 발행하면서 동시에 현재 가지고 있는 결과 값을 이용한 작업도 가능하다

    결과 세트에 대한 참조가 없어지거나 결과 셋트를 명시적으로 해방하기전 까진 메모리상에 남겨져 있다. 

    결과를 저장하는 쿼리 라고도 불려진다. 

     

    약점 - 결과 세트의 량이 많아 질수록 메모리를 소모한다


    2.unbuffered query

    비버퍼쿼리는 쿼리를 실행하여 리소스를 돌려주지만 그 시점에서 아직 데이터가 MySQL서버상에 있어 대기상태가 되어 있다

    PHP상에서의 메모리 사용량이 적지만 서버의 부하가 올라간다

    결과를 사용하는 쿼리 라고도 불린다. 

     

    단점 - 현재 진행중인 쿼리의 작업이 끝나기 전까진 다른 작업은 불가능하다.

     

    MySQL라이브러리 중에 libmysqlclient를 사용하는 경우엔 결과 세트의 데이터를  PHP변수에 대입 할 때 까지 결과 세트의 메모리 이용량이 PHP의 메모리 제한에 카운트 되지 않는다.

    mysqlnd의 경우 결과 세트의 메모리가 모두 PHP의 메모리에 포함된다. 

     

     

    특징들을 살펴보면 비버퍼쿼리를 사용하는 것은 결과 쿼리의 양이 한정되어 있다던지 사전에 결과의 행수가 예측되는 경우에만 행해야 한다. 결과가 예측되지 않거나 대량으로 돌아올 경우 비버퍼 모드를 사용하면 안된다고 생각 한다

     


    반응형

    'Technique > RDBMS' 카테고리의 다른 글

    문자셋( Character set )과 콜레이션( Collation )  (0) 2016.12.27
    MySQL Index 기초지식  (0) 2016.12.22
    MySQL INET 함수  (0) 2016.11.17
    트랜잭션(Transaction)  (0) 2016.06.06
    슬로우 쿼리 로그  (0) 2016.06.06

    댓글

Designed by Tistory.