본문 바로가기

컴퓨터공학/데이터베이스3

[MySQL] Query 성능 높이는 팁 Query 튜닝 Index 전략을 사용하기 인덱스는 데이터베이스 성능 최적화에 필수적인 요소다. PK나 JOIN, WHERE 자주 사용되는 컬럼 같은 컬럼에 반드시 인덱스를 생성하자. 하지만 과도한 인덱스는 부정적인 영향(쓰기 성능 느려짐, 메모리 낭비)을 주기 때문에 전략적으로 필수적인 인덱스를 만들어 사용해 관리하자. Predicate 절에서 함수 사용을 피하라 SELECT * FROM TABLE1 WHERE UPPER(COL1)='ABC' UPPER() 같은 함수를 사용하게 되면 데이터베이스는 인덱스를 사용하지 못하게 된다. 함수 기반 인덱스를 생성하거나, 컬럼 커스텀을 이용해야 한다. Predicate 절에서 와일드카드(%)로 시작하는 조건을 피하라 SELECT * FROM TABLE1 WHERE.. 2023. 9. 8.
[데이터베이스] DBMS와 옵티마이저 MySQL 기준 사용할 땐 하더라도 내부 엔진을 알고 사용하자클라이언트-서버 아키텍처 클라이언트 층 서버에 명령, GUI Connection Handling : 클라이언트가 서버에 접속하면 연결을 클라이언트는 위한 스레드를 얻음 Authentication : Mysql에 연결할 때 서버쪽에서 수행, username과 password로 인증 Security : 서버와 연결된 후 특정 사용자에게 쿼리 권한이 있는지 확인 서버 층 (a.k.a “Brain of MySQL Architecture”) RDB의 논리적인 기능을 책임짐 Thread Handling : 연결된 클라이언트가 스레드를 할당받을 때 그 스레드를 제공, 스레드로 실행되는 클라이언트 쿼리들을 핸들링 Parser : SQL을 분석해 문법 검사, .. 2023. 8. 20.
[데이터베이스] 트랜잭션과 ACID 성질 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위, 하나의 트랜잭션은 Commit 또는 Rollback 된다. ACID 데이터의 무결성과 안정성을 보장하기 위해 트랜잭션이 지녀야 하는 성질! Atomicity 원자성 : All or Nothing 트랜잭션 결과가 데이터베이스에 모두 반영되거나 반영되지 않아야 하는 성질 Consistency 일관성 : 트랜잭션 수행 전후 데이터베이스는 일관된 상태를 가져야 하는 성질 Isolation 독립성 : 모든 트랜잭션은 다른 트랜잭션부터 독립되야 하는 성질 Durability 영속성 : 트랜잭션이 성공적으로 수행되었다면 그 결과는 영구적으로 기록되는 성질 永續性 영속성 : 영원히 지속되는 성질이나 능력 無缺性 무결성 : 데이터의 정보가 변경되거나 오염되지 .. 2023. 8. 19.