ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB POOL 이란?
    DB/Mysql 2014. 6. 13. 15:44
    반응형

    1. DB POOL 이란?

    보통의 경우에는 DB에 연결을 하고 결과를 가져온 후에 

    연결을 끊어 버리게 된다. DB에 연결하는 과정은 시간이 많이 소요되는 Cost가 비싼 연산이다. 물론 퍼포먼스도 많이 떨어진다.

    이러한 문제점을 해결하기 위해 DB Connection Pool 이라는 것을 사용한다.

    DB Connection Pool이란 DB Connection Pool 매니저가 일정의 컨넥션을 연결하고 있다가, 요청이 들어오면 컨넥션을 할당을 해주고 없으면 기다리게 한다. 요청한 클라이언트는 컨넥션을 다쓰면 다시 반납하는 구조로 이루어 진다.

    따라서 속도면이나 퍼포먼스 부분에서  조금은 향상을 바랄수 있을 것이다.


    2. DB POOL 장점

    Connection pool은 매번 새로운 접속을 통해서 쿼리를 통해 DB에서 정보를 가지고 온다. 이는 컴터에게 너무나 큰 무리를 주기 때문에 해당 서버의 cpu점유율을 높이는 직접적인 원인이 될수있다. 그래서 우리는 DB를 제어하기전에 "사용자 지정 갯수만큼 커넥션을 만들어놓고 pool에 넣어놓았다가 필요할때마다 갔다가 쓰고 사용을 다하면 다시 pool에 넣어놓고 사용하는 식"으로 시스템을 효율적으로 운영한다.


    3. DB POOL INIT 코드

    
    var generic_pool = require('generic-pool');
    
    var mysql = require('mysql');
    
    var pool = generic_pool.Pool({
    
            name: 'mysql',
    
            create: function(callback) {
    
                    var config = {
    
                            host : 'localhost',
    
                            port : '3306',
    
                            user : 'rocksea',
    
                            password : '1234',
    
                            database : 'rocksea'
    
                    }
    
                    var client = mysql.createConnection(config);
    
                    client.connect(function (error){
    
                      if(error){
    
                        console.log(error);
    
                      }
    
                      callback(error, client);
    
                    });
    
            },
    
            destroy: function(client) {
    
              client.end();
    
            },
    
            min: 7,
    
            max: 10,
    
            idleTimeoutMillis : 300000,
    
            log : true
    
    });
    
     
    
    process.on("exit", function() {
    
      pool.drain(function () {
    
        pool.destroyAllNow();
    
      });
    
    });
    
    


     

    반응형
Designed by Tistory.