DB 7

PostgreSQL Vacuum 관련 쿼리 간단 모음

PostgreSQL를 사용하는 프로젝트에서 DevOps 업무를 맡았을 때 자주 사용했던 쿼리들을 간단히 정리해보았다. -- t_product 테이블의 Auto VACUUM 설정을 비활성화 ALTER TABLE public.t_product SET (autovacuum_enabled = false); -- 가장 오래된 20개의 테이블들의 목록 조회 SELECT c.oid::regclass AS table_name, greatest(age(c.relfrozenxid), age(t.relfrozenxid)) AS age, pg_size_pretty(pg_table_size(c.oid)) AS table_size FROM pg_class c LEFT JOIN pg_class t ON c.reltoastrelid..

DB/PostgreSQL 2024.02.07

[MySQL 8.0] 중복된 인덱스 및 거의 사용되지 않는 인덱스 조회하기

데이터베이스 성능 향상을 위해 모든 엔지니어가 가장 먼저 고려하는 것이 바로 인덱스의 적용이다. 적절한 인덱스를 추가하는 것만으로 왠만하면 성능이 개선되기 때문에 인덱스 추가는 DB 성능 관련해서는 빠질수가 없는 솔루션이다. 인덱스는 성능에 있어 필요하지만 때때로 엔지니어들은 너무 과도하게 인덱스를 사용하는 경우가 있다. 이러한 경우, 중복 인덱스가 발생해서 오히려 전체 성능이 크게 저하되기 마련이다. 인덱스가 많아지게 되면 각 인덱스에 필요한 용량이 늘어나기 때문에 역설적으로 각 인덱스가 사용할 수 있는 가용 메모리의 크기가 줄어들게 된다. 또한, INSERT 등의 write 요청에 대해 고려해야 하는 인덱스의 수가 늘어나게 되면 해당 쿼리의 성능이 점점 떨어지게 된다. MySQL 5.x에서는 중복 인..

DB/MySQL 2024.02.07

MySQL where문에서 boolean 체크 관련 성능 튜닝

MySQL에서 boolean 타입의 플래그를 추가하기 위해 보통 BOOLEAN 타입을 사용하게 된다. 이 boolean 타입은 사실 tinyint(1)과 유의하다고 볼 수 있다. MySQL에서 제공해주는 false나 true와 같은 상수를 사용해서 where문에 조건을 추가해 줄 수가 있게 된다. 이 불린 값 체크를 위해서 아래와 같이 많은 방법이 있을 수 있다: -- is문 사용 SELECT * FROM TABLE WHERE flag is true; -- boolean값 자체를 조건문으로 사용 SELECT * FROM TABLE WHERE flag; -- '='을 사용해서 값을 비교 SELECT * FROM TABLE WHERE flag = true; 논리적인 관점에서 위의 3가지 타입의 쿼리는 모두 ..

DB/MySQL 2024.01.17

데이터베이스 정규화

정규화(Normalization) 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 조금 더 이론적으로 접근해 보면 함수적 종속성을 이용해서 연관성 있는 속성들을 분류하고, 각 릴레이션들에서 이상현상이 생기지 않도록 하는 과정을 말한다. 정규화 된 정도를 정규형(Normal Form) 으로 표현하는데, 정규형에는 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF 까지 있다. 비공식적 표현으로는 3NF 가 되었으면 정규화 되었다고 말한다. 3NF 테이블의 대부분이 삽입, 변경, 삭제 이상이 없으며, 3NF 테이블의 대부분이 BCNF, 4NF, 5NF이다. 각 정규형이 되기 위해서는 만족시켜야 할 제약조건들이 있다. 높은 차수의 정규형으로 갈 수록 ..

DB 2022.03.31

E-R 모델 (E-R Model)

E-R 모델 (E-R Model) E-R 모델은 데이터를 개체(Entity), 속성(Attribute), 관계성(Relationship)으로 나타내는 데이터 모델이다. 1. 개체 (Entity) 개체란 단독으로 존재하는 객체를 의미한다. 하나의 E-R 모델에서는 동일한 객체가 둘 이상 존재하지 않는다.E-R 다이어그램에서는 개체를 네모로 표시한다. 개체중에는 약한 개체(Weak Entity)라고 불리는 것이 있다. 이 약한 개체란, 스스로 존재할 수 없으며, 반드시 상위 개체가 존재해야 존재할 수 있는 개체이다. 약한 개체는 E-R 다이어그램에서 2개의 네모 (네모 안에 네모가 있는 형태)로 표시한다. 2. 속성 (Attribute) 개체가 갖는 속성이다. E-R 다이어그램에서 속성은 원(혹은 타원)으로..

DB 2018.10.22

관계형 모델 (Relational Model)

관계형 모델 (Relational Model) 1. 관계형 모델 "관계형 모델"은 함수 종속(Functional Dependency)에 의해 정규화(Normalization)된 모델이다. "함수 종속"이란, 어떤 릴레이션 R에서 X, Y가 릴레이션 R의 부분 속성(Attribute)이라고 할 때 속성 X의 도메인 값 각각에 대해 시간에 관계 없이 항상 속성 Y의 도메인 값이 오직 한개만 연관된다면 Y는 X의 함수 종속이라고 하고, X(결정자) -> Y(종속자)로 표시한다. 함수 종속과 정규화에 대해서는 나중에 자세히 다루도록 하겠다. 관계형 모델은 데이터를 컬럼(column = 열)과 로우(row = 행)를 이루는 하나 이상의 테이블(또는 관계)로 정리하며, 고유 키(Primary key)가 각 로우(r..

DB 2018.10.22

데이터베이스 기본 지식

데이터베이스와 파일 시스템 1. 데이터베이스란? 데이터베이스는 체계화된 데이터의 모임이다. 즉, 작성된 목록으러써 여러 응용시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용데이터들의 묶음이다. 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합이다. 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조화함으로써 검색과 갱신의 효율화를 꾀한 것이다. 즉, 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있다. 2. 파일 시스템이란? 파일 시스템(file system)은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말이다. 파일 시스템은 통상 하..

DB 2018.10.07