inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bắt đầu Supabase, Next full-stack (kết hợp 슈파베이스 OAuth, nextjs 14)

1.10 Kết nối supabase bằng DBeaver

Direct connection / Transaction pooler / Session pooler 차이가 무엇인가요?

Đã giải quyết

702

parkoon4819

11 câu hỏi đã được viết

1

image.png

Supabase 가 업데이트 되면서, 강의 화면과 다른 부분이 있어서 질문드립니다.

Direct connection / Transaction pooler / Session pooler 차이가 무엇인가요?

강의를 따라가기 위해 Transaction pooler 를 사용해서 연결은 하긴 했습니다.

react 클론코딩 next.js supabase

Câu trả lời 2

1

dodocoding

질문 주셔서 감사합니다. ~

강의에서 사용하는 방법은 : Direct connection 방법 입니다.

1.DB에 직접 연결하는 전통적인 방식은 Direct connection 입니다.

  • 아래와 같은 프로토콜을 따르죠.

  • postgresql://postgres:[PASSWORD]@db.[PROJECT REF].supabase.co:5432/postgres

2.근데 위 방식은 max_connections의 제한도 있으니, 확장성에 문제가 있죠.

하나의 커넥션(연결 고리를 가지고) 여러 클라이언트가 공유하는 방식 으로 해결가능해요.

  • Transaction Pooler 방식입니다.

  • DB에 작업을 끝내면 다른 사람이 커넥션을 이어 받아, 작업이 가능합니다.

Session pooler 는 조금 더 장기적으로 커넥션을 빌려간다라고 생각하면 됩니다.

 

명확하게는 아래 요약을 참고해주세요.!


Direct connection / Transaction pooler / Session pooler 차이점

 

1. Direct Connection (직접 연결)

• 애플리케이션이 PostgreSQL 데이터베이스에 직접 연결하는 방식이에요.

• 연결이 많아지면 데이터베이스의 max_connections 제한에 도달할 수 있어요.

• 고부하 환경에서는 비효율적일 수 있어요.

 

2. Transaction Pooler (트랜잭션 풀러)

• 여러 클라이언트가 동일한 데이터베이스 연결을 공유하는 방식이에요.

• 트랜잭션이 끝나면 즉시 다른 클라이언트가 같은 연결을 사용할 수 있어요.

• PostgreSQL의 연결 수를 절약할 수 있어서 대량의 짧은 요청 처리에 유리해요.

• Supabase에서 포트 6543을 사용해요.

• 단점: 트랜잭션이 끝날 때마다 상태가 초기화되므로, SET 같은 세션 기반 설정은 유지되지 않아요.

 

3. Session Pooler (세션 풀러)

• 하나의 클라이언트가 하나의 연결을 독점적으로 사용하는 방식이에요.

• 연결이 유지되는 동안 동일한 클라이언트만 해당 연결을 사용해요.

• 트랜잭션이 끝나도 세션 상태(SET 변수 등)가 유지돼요.

• Supabase에서 포트 5432를 사용해요.

• 단점: 연결을 다른 클라이언트가 즉시 재사용할 수 없어서 비효율적일 수 있어요.

요약 비교

image.png

 

방식

연결 공유

사용 사례

장점

단점

Direct Connection

❌ (없음)

낮은 연결 수, 고성능 DB

간단한 설정, 세션 유지

max_connections 제한 초과 가능

Transaction Pooler

✅ (트랜잭션 단위)

대량의 짧은 요청 처리

연결 수 절약

세션 상태 유지 불가

Session Pooler

✅ (세션 단위)

장기 실행 쿼리, 세션 유지 필요

세션 상태 유지 가능

연결 사용 비효율적

어떤 방식을 선택할지는 애플리케이션의 특성에 따라 달라요. 짧고 많은 요청이면 트랜잭션 풀러, 세션 유지가 필요하면 세션 풀러, 연결이 적으면 직접 연결이 적합해요.

 


 

참고 자료 : https://supabase.com/docs/guides/troubleshooting/supavisor-and-connection-terminology-explained-9pr_ZO

 

 

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 박종혁님께서 Supabase의 연결 옵션 중 Direct Connection, Transaction Pooler, Session Pooler의 차이에 대해 궁금해 하셨군요. 이 각 옵션은 사용 용도와 성능 최적화 측면에서 차이가 있습니다.

Direct Connection

  • 용도: 장기간 지속되는 연결을 필요로 하는 애플리케이션에 적합합니다.
  • 특징: 데이터베이스에 직접 연결하여 사용하며, 이는 서버 리소스를 더 많이 요구할 수 있습니다.
  • 예시: 보안 처리나 대량의 데이터 전송이 필요한 서버 환경에서 활용될 수 있습니다.

Transaction Pooler

  • 용도: 무상태(stateless) 애플리케이션에 적합하며, 각 트랜잭션이 독립적인 환경입니다.
  • 특징: PREPARE 명령을 사용할 수 없으며, 짧은 연결 시간과 빠른 응답을 제공합니다.
  • 주로 사용되는 경우: 많은 사용자 요청이 독립적으로 빠르게 처리되어야 하는 상황에서 유리합니다.

Session Pooler

  • 용도: Session Pooler는 direct connection을 대체할 수 있는 경우에 추천됩니다.
  • 특징: Direct Connection과 유사하게 동작하지만, 장기 유지보다는 세션의 효율적 관리를 목표로 합니다.
  • 예시: 여러 작업을 한 이벤트나 세션이 끝나기 전까지 유지해야 할 때.

Supabase의 데이터베이스 연결 옵션들은 성능과 자원의 최적화를 지원하기 위해 설계된 것입니다. 조사 필요성이 드는 경우, 데이터베이스 사용 패턴과 리소스 요구사항을 고려하여 적절한 옵션을 선택하는 것이 중요합니다.

유사한 질문에 대한 답변:

아래 링크에서는 유사한 질문과 흥미로운 논의를 확인할 수 있습니다:
- 서버 컴포넌트에서 API 호출 시 Supabase의 클라이언트/서버 클라이언트 차이점이 궁금합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

타입 에러 관련 질문입니다.

1

70

2

vsCode 대신 커서를 사용

0

148

2

mac 터미널 설정이 궁금합니다

0

120

1

DBeaver와 supabase connection

0

404

2

가상환경 같은건 없나요?

0

168

3

serverComponent=false일 때 쿠키 세팅을 하는 이유?

0

160

2

getUser 에 갑자기 serverComponent가 추가된 이유?

0

130

2

getUser 에 갑자기 serverComponent가 추가된 이유?

0

128

2

useCallback의 디펜던시 배열에 supabase 넣는 이유?

0

127

2

수파베이스 인증 토큰에서 개인정보 지우는 법?

0

229

2

Server Actions CRUD 로직, RLS 테스트 권한 error

2

157

2

DBeaver로 supabase connection해보기

0

488

2

Supabase CRUD 하기 또는 REST API화 하기 중 질문이 있습니다.

1

329

2

LiveDemo 페이지 정상작동하나요?

2

180

2

서버 컴포넌트에서 API 호출 시 Supabase의 클라이언트/서버 클라이언트 차이점이 궁금합니다.

0

379

2

7.2 구글 로그인 1 - AuthUI 구현 구글 로그인 관련 질문드립니다.

0

467

2

7.2 강 구글 로그인 1 강좌에서 redirectTo 로 설정해도 이동이 안되요.

0

466

3

로딩에 대한 질문

1

229

1

DBeaver는 왜쓰는 건가요?

2

767

1

혹시 ssr과 csr을 병행하여 사용하고 싶을 땐

1

332

2

타입에러에 관해 질문있습니다

0

352

4

9.1 강의에서 생긴 servercomponent 변수

2

319

2

3:07에 const result = 입력하는 부분은 복붙인가요??

0

206

1

{10.2장] 로그인 후 새로고침 해야 todolist가 보입니다

0

267

1