MySQL의 테이블의 종류
MySQL에서 사용하는 테이블의 종류에는 크게 세 가지 주요 유형이 있음. (MyISAM, InnoDB, Memory)
이 테이블 스토리지 엔진들은 각기 다른 성능 특성과 기능을 가지고 있음.
사용하는 어플리케이션의 요구 사항에 따라 적절한 엔진을 선택할 수 있음.
1. MyISAM
1.1 구조
MyISAM은 MySQL의 기본 테이블 유형 중 하나였음.
특히 읽기 위주의 작업에서 높은 성능을 제공함.
각 MyISAM 테이블은 세 개의 파일로 구성되어 있음.
데이터 파일, 인덱스 파일, 그리고 테이블 메타데이터를 저장하는 프라그먼트 파일임.
1.2 특징
테이블 단위의 락을 사용함.
즉, 하나의 쿼리가 테이블을 사용 중이면 다른 쓰기 작업은 대기 상태가 됨.
트랜잭션을 지원하지 않음.
외래 키를 지원하지 않음.
데이터 압축이 가능하여 디스크 공간을 절약할 수 있음.
1.3 적합한 사용 사례
단순한 웹 기반 읽기 위주의 어플리케이션, 로깅, 데이터 웨어하수으 등
2. InnoDB
2.1 구조
InnoDB는 MySQL에서 가장 많이 사용되는 트랜잭션 지원 테이블 엔진임.
각 테이블은 하나의 파일에 저장되거나, 옵션에 따라 파일 시스템의 여러 파일에 걸쳐 저장될 수 있음.
2.2 특징
트랜잭션을 완벽하게 지원함.
행 단위의 락을 제공하여 고성능의 동시성 처리가 가능함.
외래 키를 지원함.
자동 복구 기능을 제공하여 시스템이 비정상적으로 종료되었을 경우 데이터 손실을 최소화함.
2.3 적합한 사용 사례
금융 서비스, 전자상거래, 기타 다양한 온라인 트랜잭션 처리 시스템 등
3. Memory
3.1 구조
Memory 테이블은 모든 데이터를 메모리 내에 저장함.
서버가 재시작될 때 데이터가 소멸됨.
따라서 임시 데이터 저장용으로 적합함.
3.2 특징
매우 빠른 데이터 액세스를 제공함.
데이터와 인덱스 모두 메모리에 저장되므로 디스크 I/O가 필요 없음.
트랜잭션 지원이 없으며, 테이블 락을 사용함.
3.3 적합한 사용 사례
임시 테이블, 캐시 데이터, 세션 관리 등
MySQL의 테이블 종류 정리
다양한 스토리지 엔진이 개발되어 왔음.
각각의 특성에 따라 선택할 수 있음.
사용자는 MySQL 서버의 설정 파일(my.cnf 또는 my.ini)에서 기본 스토리지 엔진을 선택할 수 있음.
테이블을 생성할 때 스토리지 엔진을 지정할 수 있음.
이러한 선택은 어플리케이션의 요구사항과 성능 목표에 따라 결정됨.
표준 SQL
표준 SQL은 데이터베이스 시스템에서 데이터를 정의, 조작 및 제어하기 위해 사용되는 프로그래밍 언어임.
SQL의 표준화는 데이터베이스 간의 상호 운용성을 증진하고, 다양한 데이터베이스 관리 시스템 간의 일관된 데이터 접근 방식을 제공하기 위해 중요함.
이 표준은 주로 ANSI와 ISO에 의해 정의됨.
다양한 버전이 시간이 지남에 따라 발표됨.
표준 SQL의 발전
1. SQL-86/SQL-87 (SQL-1)
첫 번째 공식 SQL 표준
2. SQL-89
SQL-1에 소규모 수정을 추가함.
3. SQL-92 (SQL-2)
매우 중요한 확장을 포함, SQL 언어의 핵심 기능을 확립.
4. SQL:1999 (SQL-3)
객체 지향 특성과 함께 상당한 확장을 도입, 복잡한 데이터 타입과 객체와의 호환성을 제공.
5. SQL:2003
XML 지원 추가, 시퀀스 및 윈도우 함수 도입.
6. SQL:2008
정보 및 관리 기능의 소규모 개선
7. SQL:2011
시간적 데이터(Temporal Data) 처리에 대한 개선
8. SQL:2016
JSON 데이터의 지원 추가
SQL의 주요 구성 요소
1. 데이터 정의 언어 (DDL)
CREATE : 데이터베이스, 테이블, 뷰 등을 생성
ALTER : 기존 데이터베이스 구조 수정
DROP : 데이터베이스 객체 삭제
2. 데이터 조작 언어 (DML)
SELECT : 데이터 조회
INSERT : 데이터 삽입
UPDATE : 데이터 수정
DELETE : 데이터 삭제
3. 데이터 제어 언어 (DCL)
GRANT : 사용자에게 권한 부여
REVOKE : 사용자 권한 회수
4. 트랜잭션 제어 언어 (TCL)
COMMIT : 모든 변경 사항을 영구적으로 저장
ROLLBACK : 트랜잭션의 변경 사항을 되돌림
SAVEPOINT : 트랜잭션 내에서 롤백 지점 설정
표준 SQL의 중요성
1. 상호 운용성
다양한 데이터베이스 시스템 간에 데이터를 교환하고 통합하는 데 중요함.
2. 표준화
개발자들이 다양한 DBMS에서 일관된 방식으로 작업할 수 있도록 지원함.
3. 교육 및 문서화
표준에 대한 광범위한 문서와 교육 자료가 존재하여 학습과 구현이 용이함.
표준 SQL 정리
표준 SQL은 대부분의 상업적 및 오픈 소스 데이터베이스 시스템에서 지원됨.
많은 시스템은 특정 기능과 최적화를 제공 하기 위해 SQL의 확장을 추가로 제공함.
이러한 확장은 때로는 특정 데이터베이스에 종속된 코드를 작성하게 만들 수 있음.
표준 SQL과 시스템별 확장의 차이점을 이해하는 것이 중요함.
'Database > SQL' 카테고리의 다른 글
[DB] 데이터 모델링, NoSQL (1) | 2024.06.08 |
---|---|
[MySQL] MySQL 및 MariaDB 차이 (0) | 2024.06.07 |
[MySQL] Transactional Outbox Pattern, 비동기 통신 (0) | 2024.06.06 |
[MySQL] 인덱스 유형 종류 (1) | 2024.06.06 |
[MySQL] 스토리지 엔진 종류, B-Tree 인덱스 (0) | 2024.06.06 |