
ACID를 알아가기전에 트랜잭션부터 알아봅시다.여러개의 SQL 작업을 하나의 논리적 단위로 묶는 것더이상 쪼갤 수 없는 업무 처리의 최소 단위입니다.구성: BEGIN COMMIT ROLLBACK긴 트랜잭션은 피합시다. 극단적으로 1시간짜리 작업이 59분에 터지면 롤백작
사실 데이터베이스는 논리적인 표가 아니라 물리적인 파일입니다.성능 최적화의 본질은 디스크 I/O 최소화에 달렸습니다.내부는 데이터를 Page단위로 묶고, 효율적인 길찾기를 위해 인덱스와 heap이라는 구조를 사용합니다.DB는 디스크와 대화할 때 '바이트'가 아닌 '페이

generate_series()와 random()을 조합하면 단 한 줄의 SQL 쿼리로 100만 개의 랜덤 데이터를 생성할 수 있습니다.응용: 문자열이 필요하다면 CHR() 함수와 ASCII 코드를 활용하여 랜덤한 이름이나 주소 등도 충분히 만들어낼 수 있습니다.인덱스
더 이상 사용하지 않는 데이터를 정리하여 성능과 용량을 최적화하는 작업입니다.PostgreSQL에서는 데이터를 수정하거나 삭제할 때 파일을 즉시 지우지 않고 '더 이상 유효하지 않음'이라고 표시만 해두는 방식을 사용하는데, 이를 정리해주는 과정이 VACUUM입니다.MV

일반적인 이진 탐색 트리는 데이터가 한쪽으로 쏠리면 탐색 성능이 급격히 떨어지며, 노드 하나당 하나의 데이터만 가질 수 있어 데이터가 많아질수록 트리가 매우 깊어집니다.B-Tree는:디스크 I/O 최적화: 하드디스크나 SSD 같은 보조기억장치는 데이터를 블록 단위로 읽
파티셔닝은 논리적으론 하나의 큰 테이블이지만, 물리적으론 여러 개의 작은 조각으로 나눠 저장하는 기법입니다.크게 두 가지로 나뉩니다.수평 파티셔닝행 기준으로 나눔수직 파티셔닝열 기준으로 나눔인덱스 크기 최적화: 테이블이 너무 커지면 인덱스조차 무거워져 검색 속도가 떨어

Date 관련 현재 날짜/시간 구하기 날짜 포맷 변환 날짜 추출 함수 날짜 더하기 / 뺴기 날짜 차이 구하기 조건 필터링 요일 관련 NULL NULL 대체 비트 연산자 비트마스크 필터링 (WHERE절) Pivot 테이블 행(row)에 있던 값을 열