개발자

mysql pool에서 connection.release 명령어 필요한 이유

2023년 05월 18일조회 135

mysql 관련 포스팅을 보다가 궁금한 점이 생겼습니다. pool을 생성할 때 이미 커넥션 limit을 걸어두는데 왜 connection.release 명령어를 쳐야 하나요? limit 넘는 커넥션이 생성되면 오래된 커넥션은 자동으로 끊어지게 되는 것 아닌가요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

인기 답변

김대현님의 프로필 사진

DB커넥션은 꽤 비싼 자원인데요, 연결할 때 초기화 시간이 오래걸려서 최초 연결 시간이 길고, 또, 총 연결 수를 적정수로 가져가기 위해 애플리케이션 수준에서 커넥션 풀링을 하고는 합니다. 풀 수준에서 5개의 리밋을 걸었다고 했을 때, 여러 곳(스레드)에서 커넥션을 가져가서 쓰고, 사용이 끝나면 반납을 해야 하겠지요. 기본적으로는 limit에 다다르면 오래된 커넥션을 끊는 게 아니라, 누군가 반납할 때까지 기다리게 됩니다. 그럼 나중에 연결하고자 했던 시도는 꽤 오래 기다려야 할 테고, 반납하는 녀석이 없다면 타임아웃시까지 영영 기다리게 됩니다. 풀마다, 가져가서 너무 오랫동안 쓰이지 않는 커넥션을 강제로 반환하는 경우가 있을 수도 있으나, 어쨌건 기본은 사용이 끝났으면 정리를 해야 하겠죠. DB 연결, 네트워크 연결, 파일 여닫기 등 한정된 자원을 활용할 때는 뒷정리 작업이 필요합니다. 오래전에야 메모리조차 다쓰고 나면 해제를 개발자가 했었지만, 요새야 GC덕분에 그런 일까지야 하지 않습니다만, 다른 자원들은 여전히 사용후 반납이나 정리작업을 해야 합니다. 내가 호텔을 운영하는 매니저고, 객실이 10개 있을 때, 숙박객이 10명이 찼다고 해서, 가장 오래된 숙박객을 그냥 내쫓고 새로 객실을 줄 수야 없는 노릇이죠. 정해진 체크아웃시간까지 고객이 나갈 때까지는 기다려야 하는 꼴입니다. 만약 고객이 체크아웃을 빨리 해주면, 호텔 입장에서는 객실을 더 알차게(?)활용 할 수 있습니다. 호텔과 고객을 모두 주체적으로 운영하는 개발자 입장에서는, 고객 볼 일(?) 끝났으면 빨랑빨랑 즉시즉시 빼먹지 말고 체크아웃을 해주면, 객실 활용율이 알차게 올라갈 터입니다. 그런 전체 주체적 입장이 백엔드 개발자의 입장입니다.

커리어리 AI 봇님의 프로필 사진

MySQL의 커넥션 풀을 사용할 때 'connection.release()' 명령어를 사용하는 이유는 다음과 같습니다: 1. 리소스 관리: 'connection.release()'를 호출하여 커넥션을 풀로 반환하면 해당 커넥션은 다른 클라이언트에서 재사용할 수 있게 됩니다. 커넥션을 계속 유지하는 것보다 풀로 반환하여 리소스를 효율적으로 관리할 수 있습니다. 풀에 반환되는 커넥션은 다른 클라이언트가 요청할 때 재사용됩니다. 2. 커넥션의 안정성: 'connection.release()'를 호출하면 커넥션 풀은 커넥션 상태를 재설정하고 초기화하여 이전 클라이언트와의 연결 및 트랜잭션 상태를 올바르게 설정할 수 있습니다. 이를 통해 다음 사용자가 안정적이고 일관된 커넥션 상태에서 작업을 시작할 수 있습니다. 3. 커넥션 누수 방지: 'connection.release()'를 사용하지 않고 커넥션을 명시적으로 해제하지 않는 경우, 커넥션은 계속해서 유지될 수 있습니다. 이는 커넥션 풀에서 제공하는 리소스를 비효율적으로 사용하고, 풀에 사용 가능한 커넥션 수를 제한할 수 있는 문제를 일으킬 수 있습니다. connection.release()를 호출하여 커넥션을 풀로 반환함으로써 커넥션 누수를 방지할 수 있습니다. 커넥션 풀을 사용하면서 'connection.release()'를 호출하여 커넥션을 반환하는 것은 좋은 관행입니다. 이를 통해 리소스를 효율적으로 관리하고, 안정성을 확보하며, 커넥션 누수를 방지할 수 있습니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!