MySQL

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

MySQL은 1994년 스웨덴 회사 MySQL AB에서 개발을 시작한 관계형 데이터베이스 관리 시스템(RDBMS)이다. 2008년 썬 마이크로시스템즈에 인수된 후 2010년 오라클에 인수되었으며, 현재 오픈 소스인 MySQL Community Server와 상업용인 MySQL Enterprise Server 두 가지 에디션으로 제공된다. MySQL은 ANSI SQL 99 표준을 지원하며, 다양한 스토리지 엔진을 제공하여 트랜잭션 관리 및 데이터 복제를 지원한다. 주요 특징으로는 멀티 스토리지 엔진, 다양한 프로그래밍 언어 API 지원, MySQL Workbench와 같은 GUI 도구 제공 등이 있으며, 미디어위키, 드루팔, LAMP 플랫폼 등에서 널리 사용된다. MySQL은 GPL과 상업용 라이선스를 사용하며, 마리아DB, 페르코나 서버 등 파생 프로젝트가 존재한다. 또한 한국어 처리를 위해 다양한 문자 집합을 지원한다.

MySQL - [IT 관련 정보]에 관한 문서
개요

이미지 준비중입니다.

MySQL 로고
이름MySQL
발음 (마이 에스 큐 엘)
유래공동 창립자 Monty Widenius의 딸 My의 이름에서 유래함.
종류RDBMS
상세 정보
개발자MySQL AB
개발오라클
최초 릴리스1995년 5월 23일
프로그래밍 언어C, C++
운영 체제리눅스, 솔라리스, macOS, 윈도우, FreeBSD
언어영어
라이선스GPLv2 또는 proprietary
📚 더 읽어볼만한 페이지
  • 워드프레스 - 워드프레스닷컴
    워드프레스닷컴은 오토매틱에서 2005년 출시한 블로그 호스팅 서비스로, 무료 및 유료 요금제를 제공하며 블로그 운영을 위한 가입이 필요하지만 2024년 사용자 데이터 판매 논란이 있었다.
  • 워드프레스 - 그라바타
    그라바타는 이메일 주소를 기반으로 사용자의 아바타를 웹 상에서 표시하는 서비스로, 다양한 플랫폼에서 지원되며 여러 메타데이터 표준을 통해 프로필 데이터를 제공한다.
  • 1995년 소프트웨어 - 김프
    김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다.
  • 1995년 소프트웨어 - 인터넷 익스플로러
    마이크로소프트가 개발한 웹 브라우저인 인터넷 익스플로러는 윈도우 운영 체제와의 통합으로 높은 시장 점유율을 유지했으나, 웹 표준 문제와 보안 취약점으로 비판받으며 2015년 엣지에 자리를 내주고 2022년 지원이 종료되었지만, 엣지의 IE 모드로 레거시 호환성을 유지하고 있다.
  • 오라클 소프트웨어 - 자바 데스크톱 시스템
  • 오라클 소프트웨어 - 스타오피스
    스타오피스는 1985년 스타라이터에서 시작하여 다양한 플랫폼으로 확장되고 썬 마이크로시스템즈에 인수되어 OpenOffice.org의 기반이 되었던 오피스 스위트였으나, 오라클에 인수 후 오라클 오픈 오피스로 변경되었다가 판매가 중단되었으며, 워드 프로세서, 스프레드시트, 프레젠테이션 프로그램 등을 포함하고 있었다.

2. 역사

MySQL은 1994년 스웨덴 회사 MySQL AB에서 마이클 비데니우스와 데이비드 악스마크가 개발을 시작했다. 1995년 5월, MySQL의 첫 번째 내부 버전이 출시되었다. 초기에는 저수준 언어 ISAM을 기반으로 한 mSQL에서 개인적인 용도로 만들어졌으나, ISAM이 너무 느리고 유연하지 않다고 생각하여 mSQL과 동일한 API를 유지하면서 새로운 SQL 인터페이스를 만들었다.

1998년 윈도우 95 및 NT용 버전이 출시되면서 대중적인 인지도를 얻기 시작했다. 2001년에는 NuSphere가 MySQL AB를 상대로 소송을 제기했으나, 2002년에는 MySQL AB가 Progress NuSphere를 상대로 저작권 침해 및 상표권 침해 소송을 제기하여 합의했다.

2008년, 썬 마이크로시스템즈가 MySQL AB를 인수했다. 2010년, 오라클썬 마이크로시스템즈를 인수하면서 MySQL은 오라클의 소유가 되었다. 오라클 인수 이후에도 MySQL은 지속적으로 발전하여, 2018년에는 버전 8.0이 출시되었다.

오라클의 인수 과정에서 MySQL의 창립자인 마이클 비데니우스는 오라클의 인수에 반대하며 MySQL을 "구하기 위한" 운동을 벌이기도 했다. 그는 오라클 인수 이전에 GPL 전용 포크인 MariaDB를 시작했으며, MariaDB는 MySQL 서버 5.5와 동일한 코드 베이스를 기반으로 하여 오라클에서 제공하는 버전과의 호환성을 유지하는 것을 목표로 한다.

2.1. 버전 별 주요 특징

다음은 MySQL 버전 별 주요 특징이다.

* 3.23 (2001년): 안정적인 첫 번째 상용 버전이다.
* 4.0 (2003년): 유니온(UNION) 기능이 추가되었다.
* 4.1 (2004년): R 트리B 트리, 서브쿼리, prepared statements를 지원한다.
* 5.0 (2005년): 커서, 저장 프로시저, 트리거, 뷰, XA 트랜잭션을 지원한다.
* 5.1 (2008년): 이벤트 스케줄러, 파티셔닝, 플러그인 API, 열 기반 복제, 서버 로그 테이블을 지원한다.
* 5.5 (2010년): 기본 스토리지 엔진으로 InnoDB를 채택하고, 성능이 향상되었다.
* 5.6 (2013년): 쿼리 옵티마이저 개선, InnoDB 성능 향상, NoSQL 스타일 API가 추가되었다.
* 5.7 (2015년): JSON 데이터 유형을 지원하고, 성능 및 안정성이 개선되었다.
* 8.0 (2018년): NoSQL Document Store 지원, 윈도우 함수, CTE (공통 테이블 식)가 추가되었다.

3. 특징

MySQL은 CC++(C++)로 작성된 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이다. ANSI SQL 99 표준의 상당 부분을 지원하며, 확장 기능도 제공한다. SQL 파서는 yacc를 사용하여 작성되었지만, 자체 제작한 어휘 분석기를 사용한다.

MySQL은 크로스 플랫폼을 지원하여, AIX, BSDi, FreeBSD, HP-UX, ArcaOS, eComStation, IBM i, IRIX, 리눅스, macOS, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, OS/2 Warp, QNX, Oracle Solaris, 심비안, SunOS, SCO OpenServer, SCO UnixWare, Sanos 및 Tru64 등 다양한 운영 체제에서 작동한다. OpenVMS로 포팅된 버전도 존재한다.

MySQL은 오픈 소스 버전인 MySQL Community Server와 상용 버전인 Enterprise Server 두 가지 에디션으로 제공된다. Enterprise Server는 서버 플러그인 형태로 제공되는 여러 독점 확장 기능을 포함하지만, 버전 번호 체계는 공유하며 동일한 코드베이스를 기반으로 한다.

MySQL 5.6 버전의 주요 기능은 다음과 같다:

* ANSI SQL 99 표준의 상당 부분 및 확장 기능 지원
* 크로스 플랫폼 지원
* 저장 프로시저 지원 (SQL/PSM 표준을 따르는 절차적 언어 사용)
* 트리거 지원
* 커서 지원
* 업데이트 가능한 뷰 지원
* InnoDB 스토리지 엔진 사용 시 온라인 데이터 정의 언어(DDL) 지원
* 정보 스키마 지원
* 서버 실행 및 쿼리 성능 통계 수집 및 집계를 위한 Performance Schema 제공
* SQL 표준 준수를 위한 엄격 모드를 포함한 다양한 SQL 모드 옵션 제공
* X/Open XA 분산 트랜잭션 처리 (DTP) 지원 (기본 InnoDB 스토리지 엔진을 사용한 2단계 커밋 포함)
* 기본 InnoDB 스토리지 엔진 사용 시 세이브포인트를 포함하는 트랜잭션 지원 (NDB Cluster 스토리지 엔진도 트랜잭션 지원)
* InnoDB 및 NDB Cluster 스토리지 엔진 사용 시 ACID 속성 준수
* SSL 지원
* 쿼리 캐싱 지원
* 하위 SELECT (예: 중첩 SELECT) 지원
* 내장 복제 지원
* 비동기 복제: 하나의 마스터에서 여러 슬레이브로 또는 여러 마스터에서 하나의 슬레이브로마스터-슬레이브 복제
* 반 동기 복제: 마스터가 복제를 기다리는 마스터-슬레이브 복제
* 동기 복제: MySQL Cluster를 통한 멀티 마스터 복제
* 가상 동기: Galera Cluster 또는 내장 Group Replication 플러그인을 사용한 자체 관리형 MySQL 서버 그룹
* 전체 텍스트 인덱싱 및 검색 (처음에는 MyISAM에서만 지원되었으나, MySQL 5.6부터 InnoDB에서도 지원)
* 내장 데이터베이스 라이브러리
* 유니코드 지원 (MySQL 5.5.3 이전에는 UTF-8 및 UCS-2 인코딩 문자열이 BMP로 제한되었으나, MySQL 5.5.3부터는 utf8mb4를 사용하여 전체 유니코드 지원)
* 옵티마이저에서 파티션을 제거하는 파티션 테이블
* 공유 없음 MySQL Cluster를 통한 클러스터링
* 다양한 스토리지 엔진 지원: 애플리케이션의 각 테이블에 가장 적합한 엔진 선택 가능 (MySQL 5.0에서는 스토리지 엔진을 컴파일해야 했지만, MySQL 5.1부터는 런타임에 동적으로 로드 가능)
* 기본 스토리지 엔진: InnoDB, MyISAM, Merge, Memory (heap), Federated, Archive, CSV, Blackhole, NDB Cluster
* 커밋 그룹화: 여러 연결에서 여러 트랜잭션을 함께 수집하여 초당 커밋 수 증가

MySQL은 스토리지 엔진이 SQL 파서와 분리되어 있어, 사용 목적에 따라 적합한 스토리지 엔진을 선택할 수 있는 "멀티 스토리지 엔진" 방식을 채택하고 있다.

* [[InnoDB]]: Innobase사에서 개발한 오픈 소스 스토리지 엔진으로, 높은 안정성과 MVCC를 통한 높은 동시성을 제공하여 다양한 애플리케이션에서 널리 사용된다. InnoDB는 MySQL 서버나 운영 체제 오류로부터의 복구(크래시 복구)를 지원한다.
* [[MyISAM]]: InnoDB 이전부터 사용되던 스토리지 엔진으로, 빠른 검색 속도를 제공하며, 갱신보다 참조 빈도가 높은 웹 애플리케이션 등에서 활용된다. 전체 텍스트 검색 및 공간 검색 기능도 MyISAM의 장점이었으나, 최근 MySQL에서는 InnoDB에서도 지원한다.

과거에는 MyISAM이 더 빠르거나 다양한 기능을 제공한다고 여겨졌지만, InnoDB의 성능 및 기능 개선으로 인해 MyISAM을 사용하는 경우는 줄어들고 있다.

MySQL에서 트랜잭션 관리는 스토리지 엔진의 역할이며, 트랜잭션을 사용하려면 해당 스토리지 엔진을 사용해야 한다. InnoDB는 ACID를 준수하는 트랜잭션을 지원하지만, MyISAM은 트랜잭션을 지원하지 않는다. 최근에는 트랜잭션이 필요하지 않은 경우가 줄어들면서 MyISAM의 사용 빈도도 감소하고 있다.

MySQL은 버전 4.1부터 부차적 쿼리(서브 쿼리)를 지원하며, 버전 5.0부터는 SQL99 표준 저장 프로시저, 뷰, 트리거가 구현되어 다른 RDBMS(관계형 데이터베이스 관리 시스템)와 기능 면에서 유사해졌다. 버전 8.0에서는 윈도우 함수와 CTE(공통 테이블 식, Common Table Expression)가 구현되었다.

MySQL은 기본적으로 마스터-슬레이브 방식의 복제 기능을 제공하여, 비교적 쉽게 안정적인 데이터 스토리지를 구축할 수 있다. MySQL은 스토리지 엔진에 의존하지 않는 바이너리 로그(과거의 갱신 로그)를 구현하여 논리적 복제를 지원한다. MySQL 5.7.17 이후, MySQL 8.x에서는 그룹 복제 기능을 플러그인으로 제공한다. 또한, 본체와 플러그인 GR(그룹 복제), MySQL Shell, MySQL Router를 조합한 MySQL InnoDB Cluster 구성도 가능하다.

4. 인터페이스

MySQL은 자체적인 GUI 관리 도구를 내장하고 있지 않지만, MySQL 워크벤치를 비롯한 다양한 그래픽 사용자 인터페이스(GUI) 도구를 통해 데이터베이스를 시각적으로 관리할 수 있다. MySQL 워크벤치오라클에서 개발한 공식 GUI 도구로, 데이터베이스 설계, 모델링, SQL 개발, 관리 기능을 제공한다.

명령 줄 인터페이스(CLI) 도구도 제공되어, 텍스트 기반으로 데이터베이스를 관리할 수 있다. 주요 인터페이스는 `mysql` 클라이언트이다. MySQL 유틸리티는 일반적인 유지 관리 및 관리 작업을 수행하도록 설계된 유틸리티 모음이다. 원래 MySQL Workbench의 일부로 포함되었던 유틸리티는 Oracle에서 다운로드할 수 있는 독립 실행형이다.

Perl로 개발된 MySQL용 크로스 플랫폼 툴킷인 Percona Toolkit은 복제가 올바르게 작동하는지 증명하고, 손상된 데이터를 수정하고, 반복적인 작업을 자동화하고, 서버 속도를 높이는 데 사용할 수 있다. Percona Toolkit은 CentOS 및 Debian과 같은 여러 리눅스 배포판에 포함되어 있으며, 페도라 및 우분투에서도 패키지를 사용할 수 있다. Percona Toolkit은 원래 Maatkit로 개발되었지만, 2011년 말부터 Maatkit은 더 이상 개발되지 않는다.

MySQL 셸은 MySQL 데이터베이스의 대화형 사용 및 관리를 위한 도구이다. JavaScript, Python 또는 SQL 모드를 지원하며 관리 및 액세스 목적으로 사용할 수 있다.

4.1. 주요 GUI 도구

윈도에서 작동하는 MySQL 워크벤치
윈도에서 작동하는 MySQL 워크벤치

MySQL Workbench가 macOS에서 실행 중
MySQL Workbench가 macOS에서 실행 중

MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터베이스를 관리하거나 자료를 관리하기 위한 GUI 관리 툴은 내장되어 있지 않다. 따라서 이용자들은 명령 줄 인터페이스 도구를 이용하거나 MySQL 프론트엔드 데스크톱 소프트웨어나 웹 애플리케이션을 사용하여 데이터베이스를 만들고, 관리하고, 데이터를 백업하고, 상태를 검사하고, 데이터베이스 구조를 생성하고, 데이터 레코더를 작성해야 한다. 오라클이 개발한 공식 MySQL 프론트엔드 툴인 MySQL 워크벤치는 자유롭게 사용할 수 있다.

MySQL과 통합되어 사용자가 데이터베이스 구조 및 데이터를 시각적으로 작업할 수 있게 해주는 타사 독점 및 무료 그래픽 관리 애플리케이션 (또는 "프런트 엔드")이 있다. 다음은 주요 GUI 도구 목록이다.

* MySQL 워크벤치
* phpMyAdmin
* Navicat for MySQL
* Sequel Pro
* Adminer
* Database Workbench
* DBeaver
* HeidiSQL
* LibreOffice Base
* Navicat
* OpenOffice.org Base
* SQLBuddy
* SQLyog
* Toad for MySQL
* Webmin
* phpMyBackupPro
* MySQL Administrator
* Database Master
* DBEdit

5. 지원 프로그래밍 언어

MySQL은 다양한 프로그래밍 언어를 지원하여 응용 프로그램에서 데이터베이스에 접근할 수 있도록 한다. 공식적으로 지원하는 언어는 다음과 같다.

👆
좌우로 밀어서 보기
지원 프로그래밍 언어


MyODBC라고 불리는 ODBC 인터페이스를 통해 ASP, 콜드퓨전 등 다른 프로그래밍 언어도 지원한다.

C, C++, Eiffel, Smalltalk, Java (JNI), LISP, Perl, PHP, Python, Ruby, Tcl은 MySQL의 API를 통해 데이터베이스에 접근할 수 있다. 또한 ODBC 인터페이스 (Connector/ODBC, 구: MyODBC)도 지원된다.

6. 사용 사례

MySQL은 미디어위키, 드루팔과 같은 인기있는 웹 애플리케이션에 사용된다. LAMP, MAMP, WAMP (리눅스/매킨토시/윈도-아파치-MySQL-PHP/펄/파이썬) 플랫폼의 데이터베이스 구성 요소로 작동하며, 버그질라와 같은 오픈 소스 버그 추적 도구에도 사용된다. PHP와의 높은 호환성으로 인해 웹 애플리케이션 개발에 널리 사용되며, '다이내믹 듀오'라는 별칭으로도 불린다.

LAMP 소프트웨어 번들, 여기서는 Squid와 함께 표시됩니다.
LAMP 소프트웨어 번들, 여기서는 Squid와 함께 표시됩니다.


SUN 인수 이후, 위키백과, 구글(검색 엔진은 제외), 페이스북, 트위터, 플리커, 노키아닷컴, 유튜브 등 대규모 웹 서비스에서도 널리 사용되고 있다.

MySQL은 초기에는 저가형 데이터베이스로 시작했지만, 점차 발전하여 대규모 요구 사항도 지원하게 되었다. 중소 규모의 단일 서버 배포 환경에서는 LAMP 기반 웹 애플리케이션의 구성 요소 또는 독립형 데이터베이스 서버로 주로 사용된다. phpMyAdmin과 같은 오픈 소스 도구들을 통해 쉽게 사용할 수 있다.

더 큰 규모에서는 다중 서버 MySQL 배포를 통해 성능과 안정성을 향상시킬 수 있다. 일반적인 고급 구성에는 데이터 쓰기 작업을 처리하고 모든 읽기 작업을 처리하는 여러 슬레이브로 복제되는 강력한 마스터 데이터베이스가 포함될 수 있다. memcached를 사용하거나, 샤드를 통해 데이터를 분산하여 성능을 더욱 향상시킬 수 있다.

MySQL은 마이크로소프트 애저, 아마존 일래스틱 컴퓨트 클라우드, 오라클 클라우드 인프라와 같은 클라우드 컴퓨팅 플랫폼에서도 실행할 수 있다. 클라우드 환경에서는 가상 머신 이미지 또는 서비스형 MySQL 형태로 배포될 수 있다. 서비스형 MySQL의 대표적인 예로는 아마존 릴레이셔널 데이터베이스 서비스, 오라클 MySQL HeatWave 데이터베이스 서비스, MySQL용 애저 데이터베이스, 랙스페이스, HP 컨버지드 클라우드, 헤로쿠, 젤라스틱 등이 있다.

가장 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나로, 시장 점유율에서 PostgreSQL과 같은 다른 오픈 소스 데이터베이스를 압도하고 있다. 야후!, 페이스북, 트위터 등 거대한 웹 사이트에서의 적용 예도 많고, 웹 애플리케이션인 XOOPS, 워드프레스, SugarCRM 등 CMS도 백엔드 데이터베이스로 MySQL을 이용하고 있다. 또한 위키백과를 위한 소프트웨어인 미디어위키에서도 이 소프트웨어를 사용하고 있다.

👆
좌우로 밀어서 보기
이용 기업 수 비율
지역MySQLPostgreSQL조사 기관
세계82.1%27.1%451 Group (2009년)
일본60.5%51.9%정보처리추진기구(IPA) (2009년)

7. 라이선스

MySQL은 GPL과 상업용 라이선스의 이중 라이선스 방식으로 제공된다. 기본적으로 MySQL 서버 본체와 클라이언트 라이브러리는 GPL로 제공된다. 이 때문에 MySQL을 개조하여 재배포하는 경우에는 GPL을 따라야 한다.

GPL 클라이언트 라이브러리를 이용하여 MySQL에 접속하는 애플리케이션을 개발한 경우, 해당 애플리케이션도 GPL 라이선스로 해야 할 가능성이 있다. 단, 클라이언트 라이브러리에 관해서는 애플리케이션이 기존의 오픈 소스 라이선스로 공개되는 경우, GPL 이외의 오픈 소스 라이선스로 재배포하는 것도 가능하다.

지원 및 도구가 제공되는 유료 구독 방식의 MySQL Standard Edition, Enterprise Edition에서는 상업용 라이선스 버전의 바이너리가 제공된다. 상업용 라이선스 버전에서는 GPL에 의한 제약을 받지 않는다.

8. 파생 프로젝트

MySQL의 파생 프로젝트는 MySQL 소스 코드를 기반으로 개발된 여러 갈래의 프로젝트를 의미한다. 오라클이 MySQL을 인수한 후, 여러 개발자들과 기업들이 자신들의 필요에 맞춰 MySQL을 수정하거나 개선하여 새로운 프로젝트를 시작했다.

마이클 "몬티" 비데니우스는 오라클의 MySQL AB 인수에 앞서 2010년 1월에 MariaDB를 시작했다. MariaDB는 GPL 전용 포크이며, MySQL 서버 5.5와 동일한 코드 베이스를 기반으로 하고 오라클에서 제공하는 버전과의 호환성을 유지하는 것을 목표로 한다.

8.1. 현재 진행 중인 프로젝트

마리아DB는 GNU GPL 하에 자유롭게 유지되도록 고안된 MySQL 관계형 데이터베이스 관리 시스템의 커뮤니티 개발 포크이다. 오라클의 MySQL 인수에 대한 우려로 MySQL의 원래 개발자 중 한 명인 마이클 "몬티" 비데니우스가 주도했다. MariaDB는 MySQL 서버 5.5와 동일한 코드 베이스를 기반으로 하며 오라클에서 제공하는 버전과의 호환성을 유지하는 것을 목표로 한다.

MySQL용 페르코나 서버는 페르코나에서 포크되었으며, 공식 MySQL 릴리스와의 높은 호환성을 유지하는 것을 목표로 한다. MySQL용 페르코나 서버에는 InnoDB의 XtraDB도 포함되어 있다.

8.2. 중단된 프로젝트

드리즐은 MySQL 6.0 개발 브랜치에서 파생된 자유 소프트웨어/오픈 소스 관계형 데이터베이스 관리 시스템(DBMS)이었다. MySQL과 마찬가지로 드리즐은 클라이언트/서버 아키텍처를 가졌으며, 주요 명령어SQL을 사용했다. 드리즐은 GNU 일반 공중 사용 허가서(GPL) 버전 2 및 3에 따라 배포되었으며, 프로토콜 드라이버 및 복제 메시징을 포함한 일부는 BSD 라이선스에 따라 배포되었다. 그러나 현재는 개발이 중단되었다.

웹스케일SQL(WebScaleSQL)은 MySQL 5.6의 소프트웨어 브랜치였으며, 2014년 3월 27일에 페이스북, 구글, 링크드인 및 트위터가 서버 팜에서 실행되는 대규모 복제 데이터베이스 구축과 같이 대규모 배포에 특화된 새로운 기능을 MySQL에 추가하기 위한 공동 노력으로 발표했다. 웹스케일SQL은 각 회사가 자체 MySQL 브랜치를 유지 관리하는 데 들이는 노력을 중복 제거하고 더 많은 개발자를 모으는 것을 목표로 했다. 이 프로젝트의 소스 코드는 GNU 일반 공중 사용 허가서 버전 2에 따라 라이선스가 부여되었으며, 깃허브에서 호스팅된다. 그러나 이 프로젝트 역시 현재는 개발이 중단되었다.

9. 한국어 처리

MySQL은 다양한 문자 집합을 지원하며, 한국어 처리를 위해 sjis, cp932, utf8(UTF-8 (3바이트까지)), utf8mb4(UTF-8 (4바이트까지/MySQL 5.5 이후 지원)) 등을 사용할 수 있다.

sjis는 JIS X 0201JIS X 0208을 준수하지만, 동일한 "Shift_JIS"에서도 윈도우 환경에서 사용되는 일부 문자를 제대로 처리하지 못하는 경우가 있다. 이는 윈도우에서 앞서 언급한 규격 이외의 확장 문자를 포함하는 확장된 Shift_JIS를 사용하기 때문이다. 이러한 문자를 MySQL에서 올바르게 처리하려면 sjis 대신 cp932를 지정해야 한다.

예를 들어, Microsoft Access에서 UTF-8로 저장하는 테이블에 ODBC 링크를 통해 접근하는 경우, MyODBC의 문자 집합 설정을 cp932로 해두면 올바르게 입출력할 수 있다.

MySQL 4.1.12부터 cp932가 지원되었으며, 그 전까지는 "sjis로 저장하고 sjis로 입출력"하는 설정을 하고, 입출력 시 문자 코드 변환을 피함으로써 윈도우의 확장 시프트 JIS에서 문제가 발생하지 않도록 하는 것이 일본 내에서 "상식"이었다. cp932 지원 전에도 유니코드가 지원되었지만, 적극적으로 사용하는 사람은 많지 않았다. 유니코드로 저장하는 테이블에 sjis로 입출력을 하면 윈도우 환경에서 확장 문자가 제대로 변환되지 않아 깨짐 현상이 발생했고, 이는 "유니코드 대응이 불완전하다", "유니코드는 아직 쓸모가 없다"라는 평가를 낳는 원인이 되었기 때문이다.

최근에는 UTF-8(utf8mb4)이 가장 널리 사용되는 문자 집합이다. Ruby on Rails, CakePHP의 기본값은 utf8이지만, 데이터베이스 연결 설정에서 encoding을 utf8로 명시적으로 사용 선언해야 한다.