백엔드 공부하면서 계속 헷갈리는 게 있어서 여쭤봅니다. 스프링이든 노드든 DB 설정 보면 커넥션 풀(connection pool) 사이즈를 정하는 옵션이 꼭 있더라고요. 저는 그냥 요청 들어올 때마다 DB에 연결하고 쿼리 날리고 닫으면 되는 거 아닌가 싶었는데, 다들 풀을 미리 만들어두고 쓰던데 왜 그런 건가요.


지금 제가 쓰는 코드는 대충 이런 식이에요.


conn = connect(db_url)
result = conn.query("SELECT ...")
conn.close()


이렇게 매 요청마다 연결 열고 닫는 거랑, 풀에서 미리 만들어둔 연결을 빌려다 쓰는 거랑 실제로 뭐가 그렇게 차이가 나나요. 연결 하나 만드는 게 그렇게 비싼 작업인가요? 그리고 풀 사이즈는 무슨 기준으로 잡아야 하는지도 모르겠어요. CPU 코어 수에 맞춰라, 그냥 크게 잡아라 말이 다 달라서요. 너무 크게 잡으면 오히려 안 좋다는 얘기도 봤는데 왜 그런지 감이 안 옵니다. 실무에서 어떻게 정하시는지 궁금해요.