[SQL Server에서의 연결 관리 ]
SQL Server는 Dedicated Server Mode와 유사하게 동작하며, 기본적으로 각 클라이언트 연결은 자체적인 서버 프로세스를 갖습니다.
SQL Server는 다중 스레드 아키텍처를 사용하여 클라이언트 요청을 처리합니다. 각 클라이언트 요청은 스레드 풀에서 스레드를 할당받아 처리됩니다.
SQL Server는 리소스 거버너(Resource Governor)를 사용하여 세션 및 워크로드 그룹 간에 서버 리소스를 제한하고 관리할 수 있습니다. 이 기능은 Oracle의 Shared Server Mode와 같은 자원 관리의 역할을 수행하지만, 보다 구체적이고 유연하게 리소스 사용을 제어할 수 있습니다.
[PostgreSQL의 연결 관리 방식]
PostgreSQL은 기본적으로 각 클라이언트 연결마다 별도의 프로세스가 생성되는 방식으로 동작합니다.
이 프로세스는 Postgres Backend라고 불리며, 클라이언트와 서버 간의 통신을 전담합니다.
각 클라이언트는 연결 시 고유한 Postgres Backend 프로세스를 할당받아, 이 프로세스가 클라이언트 요청을 처리하게 됩니다.
PostgreSQL에서는 연결 풀링을 위해 PgBouncer나 pgpool-II와 같은 외부 도구를 사용할 수 있습니다.
PgBouncer는 특히 가볍고 빠른 연결 풀링을 제공하며, pgpool-II는 추가적으로 로드 밸런싱, 쿼리 캐싱 등 다양한 기능을 제공합니다.
PostgreSQL은 쿼리 실행 시 여러 CPU 코어를 활용할 수 있는 병렬 쿼리 기능을 제공합니다
PostgreSQL은 세션 및 트랜잭션별로 리소스를 제어하는 다양한 설정을 제공합니다.
예] work_mem이나 maintenance_work_mem 등의 설정을 통해 메모리 사용량을 제어할 수 있습니다.
[MariaDB의 연결 관리 방식]
MariaDB는 기본적으로 Thread-per-Connection 모델을 사용합니다. 이 모델에서는 각 클라이언트 연결이 서버에서 별도의 스레드를 할당받아 처리됩니다. 즉, 클라이언트가 MariaDB 서버에 연결할 때마다 서버는 새로운 스레드를 생성하여 해당 클라이언트의 요청을 처리합니다.
MariaDB에는 Oracle의 Shared Server Mode와 같은 여러 클라이언트가 서버의 동일한 프로세스 또는 스레드를 공유하는 기능은 기본적으로 제공되지 않습니다.
MariaDB에서는 연결 풀링을 위해 외부 애플리케이션 또는 mysqlnd와 같은 연결 풀링 기능을 사용할 수 있습니다.
MariaDB는 Thread Pool 기능을 통해 다수의 클라이언트 연결을 보다 효율적으로 처리할 수 있습니다. 이 기능을 활성화하면, 모든 연결이 새로운 스레드를 생성하는 대신, 한정된 수의 스레드가 다수의 클라이언트 연결을 처리하도록 합니다.
MariaDB는 Query Cache를 사용하여 반복되는 쿼리 결과를 캐싱하고, 이를 통해 서버의 부하를 줄일 수 있습니다.
또한, 세션별 메모리 사용량을 조절하는 다양한 설정(join_buffer_size, sort_buffer_size 등)을 통해 특정 작업의 성능을 최적화할 수 있습니다.
'DB & SQL' 카테고리의 다른 글
[DB2] 실행계획 (1) | 2024.09.24 |
---|---|
[MS SQL Server ] 실행계획 (0) | 2024.09.24 |
[oracle] MATERIALIZED VIEW (0) | 2024.08.13 |
MS-SQL Server , PostgreSQL, MariaDB Connection (0) | 2024.08.12 |
오라클 사용자를 위한 DB2 가이드 (0) | 2024.02.09 |