분류 전체보기
-
Rows Removed by Join Filter ??란 무엇인가?데이터베이스/postgresql 2024. 10. 21. 16:30
PostgreSQL의 EXPLAIN ANALYZE 결과에서 조인 과정 중 필터링된 레코드 수를 나타내는 항목입니다. 이는 조인 필터가 어떤 역할을 하는지를 보여주는 부분으로, 조인을 수행할 때 특정 조건을 만족하지 않아 제외된 레코드들의 수를 의미합니다.1. Join Filter란?Join Filter는 조인할 때 조인 조건 외에 추가적으로 필터링을 적용하는 조건을 의미합니다. 조인 시 두 테이블에서 조인 조건을 만족하는지 여부를 평가한 뒤, 그 조건 외의 추가 조건에 따라 데이터를 더 걸러낼 수 있습니다.조인 조건: 테이블 간의 관계를 설정하는 기본 조건입니다. 예를 들어 ON a.id = b.a_id는 두 테이블을 연결하는 조인 조건입니다.조인 필터: 조인 후에 추가로 레코드를 걸러내는 조건입니다. ..
-
NL조인시 드라이빙테이블 100개 드리븐 1000개, 드라이빙테이블1000개 드리븐 100개가 성능 차이가 나는이유데이터베이스 2024. 10. 21. 16:16
겉으로 보기에는 두 경우 모두 비교 연산이 같은 수(100,000번)처럼 보이지만, 실제로는 성능 차이가 발생할 수 있습니다. 그 이유는 드라이빙 테이블이 먼저 읽힌 이후, 드리븐 테이블에서 데이터를 검색하는 방식과 그 과정에서의 인덱스 사용 여부에 있기 때문입니다. 이를 좀 더 자세히 설명해볼게요.1. Nested Loop Join의 실행 방식드라이빙 테이블: 조인 시 먼저 읽히는 테이블로, 바깥쪽 루프의 역할을 합니다.드리븐 테이블: 드라이빙 테이블의 각 레코드에 대해 조회를 수행하는 테이블로, 안쪽 루프에서 사용됩니다.2. 두 경우의 차이점두 가지 케이스를 다시 살펴볼게요:케이스 1: 드라이빙 테이블이 100개, 드리븐 테이블이 1,000개인 경우.드라이빙 테이블에서 100개의 레코드를 순차적으로 ..
-
mysql 에서 for update를 통해 lock을 걸경우와 postgres에서 걸경우 같을까?데이터베이스/postgresql 2024. 10. 18. 10:03
*MySQL (특히 InnoDB)**와 PostgreSQL는 행 잠금과 쓰기 락 처리 방식에서 차이가 있습니다. MySQL과 PostgreSQL은 모두 **MVCC (Multi-Version Concurrency Control)**를 사용하여 데이터의 일관성을 유지하면서 동시성을 처리하지만, 행 잠금(ROW-level locking) 방식에 차이가 있습니다.MySQL (InnoDB)에서의 행 잠금InnoDB는 인덱스를 사용한 쿼리에 대해 인덱스 기반의 잠금을 사용합니다. 즉, 특정 인덱스를 통해 WHERE 절에 의해 필터링된 모든 행에 잠금이 걸리며, 이 잠금은 다음과 같은 특성을 가집니다:인덱스 기반 락: InnoDB는 인덱스를 사용하는 쿼리에 대해 잠금을 걸기 때문에, 해당 인덱스를 사용하는 범위 내..
-
aws 보안그룹설정할떄 인바운드 규칙에 사용자 지정을 클릭하고 보안그룹을 넣는이유클라우드/aws 2024. 10. 16. 17:40
AWS 보안 그룹에서 인바운드 규칙을 설정할 때, 사용자 지정 옵션을 클릭하고 다른 보안 그룹을 지정하는 것은 특정 보안 그룹에 속한 인스턴스나 리소스로부터만 접속을 허용하겠다는 의미입니다. 이는 주로 AWS 네트워크 내에서의 접근을 제어할 때 사용되며, 보안 그룹 간의 트래픽 허용을 설정할 수 있습니다.자세한 설명:보안 그룹(Security Group):보안 그룹은 AWS에서 가상 방화벽 역할을 하며, 인스턴스(예: EC2, RDS 등)로 들어오거나 나가는 트래픽을 제어합니다.인바운드 규칙: 인스턴스로 들어오는 트래픽을 제어.아웃바운드 규칙: 인스턴스에서 나가는 트래픽을 제어.사용자 지정을 클릭하고 보안 그룹을 넣는 경우:인바운드 규칙에서 **"사용자 지정(Custom)"**을 선택하고 특정 보안 그룹..
-
CloudFront를 통한 HTTPS 통신 과정클라우드/aws 2024. 10. 16. 16:38
CloudFront를 통한 HTTPS 통신 과정:1. CloudFront 구성 요소:클라이언트: 웹 페이지에 접속하는 사용자의 브라우저 또는 애플리케이션.CloudFront Distribution: CloudFront에서 설정한 배포(Distribution)로, 도메인 이름에 따라 클라이언트의 요청을 처리하고, 캐시된 콘텐츠를 전달하거나 원본 서버로 요청을 전달함.원본 서버(Origin Server): S3 버킷, EC2 인스턴스, ALB, 또는 사용자 정의 서버 등 클라이언트에게 실제 웹 콘텐츠를 제공하는 서버.SSL/TLS 인증서: CloudFront에 적용된 인증서로, HTTPS 연결을 통해 클라이언트와 CloudFront 간의 통신을 암호화하는 데 사용.2. HTTPS를 사용한 CloudFront..
-
Bastion Host란? aws public ec2 -> private ec2로 터널링클라우드/aws 2024. 10. 16. 16:10
**Bastion Host(배스천 호스트)**는 프라이빗 네트워크에 위치한 리소스(예: 서버, 데이터베이스)에 접근하기 위한 중간 지점 역할을 하는 보안 강화된 서버입니다. 일반적으로, 외부의 관리자가 내부 네트워크에 있는 서버에 접근할 때, 직접 접속하지 않고 Bastion Host를 통해 접근하는 방식으로 보안성을 높입니다.Bastion Host의 주요 개념:역할:Bastion Host는 외부 인터넷과 프라이빗 네트워크 사이의 게이트웨이 역할을 합니다. 외부에서 프라이빗 서브넷의 리소스에 직접 접근하는 것을 막고, 대신 Bastion Host를 통해 간접적으로 접근하게 합니다.관리자가 원격으로 SSH(리눅스) 또는 RDP(윈도우)를 통해 Bastion Host에 접속한 다음, 거기서 다시 프라이빗 서..
-
-
postgresql 에서 FSM 은 무엇인가?데이터베이스/postgresql 2024. 10. 14. 16:48
**FSM (Free Space Map)**은 PostgreSQL에서 테이블 및 인덱스의 사용되지 않은 공간을 추적하기 위한 데이터 구조입니다. FSM은 디스크 페이지 내에서 아직 사용 가능한 여유 공간을 기록하며, 데이터베이스 성능을 최적화하는 데 중요한 역할을 합니다.FSM의 역할빈 공간 관리: PostgreSQL의 테이블에 새로운 데이터를 삽입하거나 기존 데이터를 수정할 때, 새롭게 할당된 디스크 페이지 대신 기존의 빈 공간을 활용하는 것이 효율적입니다. FSM은 테이블 내에서 사용되지 않은 공간(빈 페이지 또는 일부 공간이 사용 중인 페이지)을 추적하여, 필요할 때 이 빈 공간을 사용할 수 있게 도와줍니다.데이터 삽입 효율성: 새로운 데이터가 삽입될 때, PostgreSQL은 FSM을 참고하여 빈..