728x90
반응형
오라클에서 문자열을 저장할 때 사용하는 데이터 타입 중 VARCHAR와 NVARCHAR는 헷갈리기 쉬운 개념입니다. 이 두 가지 타입의 차이를 이해하면 데이터베이스 설계 및 성능 최적화에 도움이 됩니다.
1. VARCHAR vs NVARCHAR 개요
데이터 타입 설명
VARCHAR2(n) | 가변 길이 문자열을 저장하며, 한글 등 멀티바이트 문자는 인코딩 방식에 따라 차지하는 바이트 수가 다를 수 있음. |
NVARCHAR2(n) | 유니코드(UTF-16)를 지원하는 가변 길이 문자열. 한 글자가 항상 2바이트(UTF-16)로 저장됨. |
※ 오라클에서는 VARCHAR 대신 VARCHAR2를 사용하며, VARCHAR2가 권장됩니다.
2. 주요 차이점
2.1 저장 방식
- VARCHAR2: 데이터베이스의 문자셋(Character Set)에 따라 한 글자가 차지하는 바이트 수가 달라짐.
- NVARCHAR2: 유니코드(UTF-16)로 저장되므로, 한 글자가 항상 2바이트(서로 다른 문자라면 최대 4바이트)를 차지.
2.2 문자셋(Character Set)
- VARCHAR2는 데이터베이스의 기본 문자셋을 따름.
- NVARCHAR2는 항상 NLS_NCHAR_CHARACTERSET을 사용하여 저장됨.
2.3 국제화 지원
- VARCHAR2는 데이터베이스의 문자셋에 따라 특정 언어의 문자를 표현하지 못할 수도 있음.
- NVARCHAR2는 유니코드를 지원하여 다국어 데이터 저장이 가능.
2.4 성능 및 저장 공간
- VARCHAR2는 기본 문자셋에 따라 문자당 1~3바이트를 사용하며, 공간 활용이 유리할 수 있음.
- NVARCHAR2는 유니코드로 저장되므로, 기본 문자셋이 싱글 바이트일 경우 더 많은 공간을 차지할 수 있음.
- 국제화 지원이 필요하지 않다면 VARCHAR2를 사용하는 것이 성능 면에서 유리할 수 있음.
3. 언제 사용할까?
상황 추천 데이터 타입
단일 언어(예: 영어) 또는 DB 문자셋과 동일한 언어 사용 | VARCHAR2 |
다국어 데이터 저장 필요(예: 한국어, 중국어, 아랍어 등) | NVARCHAR2 |
데이터가 유니코드로 저장될 필요가 있을 경우 | NVARCHAR2 |
4. 예제 코드
VARCHAR2 사용 예제
CREATE TABLE users (
id NUMBER PRIMARY KEY,
name VARCHAR2(100) -- DB 문자셋 기준 최대 100바이트 저장
);
NVARCHAR2 사용 예제
CREATE TABLE multilingual_users (
id NUMBER PRIMARY KEY,
name NVARCHAR2(100) -- 최대 100글자(유니코드) 저장
);
5. 정리
- VARCHAR2: 데이터베이스의 기본 문자셋을 사용, 성능이 유리하며 일반적으로 사용됨.
- NVARCHAR2: 유니코드(UTF-16)로 저장되며 다국어 데이터 처리에 적합.
- 데이터베이스에서 국제화를 고려하지 않는다면 VARCHAR2를, 다국어 데이터를 저장해야 한다면 NVARCHAR2를 선택하는 것이 좋음.
NVARCHAR2로 하면 특수문자도 잘 들어감
728x90
반응형
LIST
'Database > Oracle' 카테고리의 다른 글
[ORACLE] 오라클 DB 사용자 계정 생성 및 TS 생성 (0) | 2023.01.02 |
---|---|
ORACLE DB JDBC 연결 테스트 jsp (0) | 2022.05.10 |
[오라클] 사용자 정의 특정 값 기준으로 정렬 ORDER BY DECODE() (0) | 2022.03.22 |
[Oracle]JAVA와 오라클 JDBC 연동하기 (ojdbc6.jar 위치) (0) | 2022.01.15 |
[Oracle] 윈도우10 오라클11g 설치 방법 및 접속 확인 테스트 (0) | 2022.01.15 |