[DB-MySQL] 쿼리 처리방식 - 스트리밍과 버퍼링 (Streaming & Buffering) MySQL

Mysql의 쿼리 처리방식은 크게 2가지가 존재한다.

먼저 각 방식의 정의를 알아보자

1. 스트리밍 방식 : 서버 쪽에서 처리해야 할 데이터가 얼마나 될지에 관계 없이 조건에 일치하는 레코드가 검색될 때마다 바로바로 클라이언트로 전송해주는 방식을 의미. 클라이언트 입장에서는 첫번째 레코드가 도착하는 즉히 결과를 조회할 수 있게 되고 마지막쿼리를 언제 전달받기 될지는 몰라도 바로바로 도착하는 데이터에 대한 다음 작업을 할 수 있다. LIMIT 조건을 추가하면 가져오는 전체 레코드 수를 줄일 수 있어 상당한 시간을 감축할 수 있다.

2. 버퍼링 방식 : ORDER BY 혹은 GROUP BY 같은 처리는 쿼리의 결과 스트리밍을 불가능하게 한다. 우선 WHERE 조건에 일치하는 모든 레코드를 가져온 후, 정렬이나 그룹핑을 해서 차례대로 내보내야 하기 때문이다. 그리하여 MYSQL 서버가 모든 레코드를 검색 > 정렬(그룹핑) 하는동안 클라이언트는 아무것도 못한 채 기다려야 하기 때문에 응답속도가 느려지는 것이다. 이러한 방식을 버퍼링이라 한다.

자 그럼 일단 각 정의를 알아보았다.
쉽게 간추려 보면 스트리밍은 응답속도가 빠르고, 버퍼링은 느리다.

이것인데 이것은 작성한 쿼리안에 최종 결과 출력을 위한 전체 레코드를 바탕으로 한
처리가 필요한 경우와 그렇지 않은 경우로 나눌 수 있겠다.

※ 스트리밍 처리는 어떤 클라이언트 도구나 API를 사용하느냐에 따라 방식에 차이가 있을 수 있다.
    JDBC 라이브러리 같은 경우 MYSQL 이 스트리밍하여 주는 데이터를 버퍼링하여 준다.
    그 이유는 JDBC는 불필요한 네트워크 요청을 최소화 하고 결과적으로는 시간당 처리량(Through put)이 뛰어나기 때문이다.



통계 위젯 (블랙)

4246
720
199892

GoogleAdsenseResponsive

Cluster map