The Main Features of MySQL

숭맹이·2025년 4월 24일
0

🔧 아키텍처 및 이식성 (Internals & Portability)

  • 멀티스레드 기반 커널 스레드 구조: CPU 코어를 최대한 활용할 수 있도록 설계되어 병렬 쿼리 처리에 강합니다.
  • 모듈화된 설계: 스토리지 엔진을 모듈처럼 쉽게 추가할 수 있어, 상황에 맞는 커스터마이징이 가능합니다.
  • CMake 기반 구성: 다양한 플랫폼에서 손쉽게 빌드 가능. 실제로 윈도우, 리눅스, macOS 등에서 모두 운영해본 경험상 호환성 문제는 거의 없습니다.

📦 스토리지 엔진

  • InnoDB: 트랜잭션 지원, 외래 키, MVCC, 충돌 복구 기능 포함.
  • MyISAM: 빠른 읽기 성능, 풀텍스트 인덱싱 가능. 트랜잭션은 미지원.
  • 기타 엔진: MEMORY, ARCHIVE 등 필요에 따라 선택 가능.

📌 대규모 트랜잭션 처리나 복잡한 비즈니스 로직이 필요한 경우는 무조건 InnoDB 추천.


📊 데이터 타입 및 표현력

  • 정수, 부동소수점, 문자열, 날짜/시간, BLOB, TEXT, ENUM, SET 등 다양한 타입 지원.
  • OpenGIS 공간 데이터 타입도 제공되어 위치 기반 데이터 저장 가능.

🧠 SQL 기능 및 쿼리 최적화

  • GROUP BY, ORDER BY, JOIN, 서브쿼리, 윈도우 함수 등 거의 모든 SQL 기능 지원.
  • EXPLAIN으로 쿼리 실행 계획 분석 가능.
  • SHOW 및 INFORMATION_SCHEMA를 통해 내부 상태 점검 및 모니터링 가능.

🧪 실제 운영 중에도 EXPLAIN + ANALYZE 조합은 슬로우 쿼리 튜닝 시 가장 많이 쓰는 방법입니다.


🔐 보안과 접근 제어

  • 호스트 기반 인증비밀번호 암호화 전송.
  • GRANT 문을 통한 정교한 권한 분리 가능.

실무에서는 서비스 계정에 최소 권한만 부여하는 것이 중요합니다 (Principle of Least Privilege).


📈 확장성과 성능

  • 수천만 ~ 수십억 레코드도 무리 없이 처리 가능.
  • 테이블당 최대 64개 인덱스, 각 인덱스는 최대 16개 컬럼 포함 가능.

운영 중이던 로그성 테이블에서 20억 행 이상 저장해도 쿼리 튜닝만 잘하면 충분히 쓸 수 있었습니다.


🔌 연결성 및 프로토콜

  • TCP/IP, 유닉스 도메인 소켓, Windows Named Pipe 등 다양한 프로토콜 지원.
  • JDBC, ODBC, .NET, Python, PHP 등 거의 모든 언어에서 연결 가능.

다양한 언어의 API 지원은 마이크로서비스 환경에서 큰 장점입니다.


🌍 로컬라이제이션 및 다국어 지원

  • 다양한 문자셋 및 정렬(collation) 지원.
  • 서버 및 클라이언트별 타임존 설정 가능.

여러 지역 사용자 데이터를 다룰 때, UTF-8과 타임존 설정은 정말 중요합니다.


🛠️ 클라이언트 툴 및 유틸리티

  • CLI 도구: mysql, mysqldump, mysqladmin, mysqlcheck, myisamchk
  • GUI 도구: MySQL Workbench

스크립트 자동화할 때는 CLI 도구를, ERD 작성이나 시각적 쿼리 작성엔 Workbench를 애용합니다.

profile
👨🏻‍💻 Backend Developer

0개의 댓글