전에 다니던 회사에서 sql 호출이 6초 이상걸려 사용자들의 불편함이 계속 해서 발생하는 문제가 있었다.
파일 전송을 하기 위해 파일 전송을 원하는 직원들을 선택하는 부분이었는데, 사용자 리스트 출력이 너무 오래걸리는 문제가 있었다.
데이터를 확인해보니, clob이라는 데이터 타입의 컬럼이 있었는데 이 컬럼의 용량이 굉장히 크다는 것을 확인 할 수 있었다. 그리고 메일 리스트를 호출하는데, clob이라는 컬럼은 사용되지 않는 다는 것도 확인 할 수 있었다.
해당 컬럼을 호출 할 때 배제하였다. 그러니 속도가 월등히 빨라졌다.
clob이란 lob데이터 타입에 대해서 알아야 한다는 걸 알 수 있었다.
그러면 lob데이터 타입은 무엇일까?
| 타입 | 설명 | 예시 |
|---|---|---|
| CLOB | 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원 | html, txt |
| NCLOB | 유니코드를 지원하는 문자형 대용량 객체 | 대용량 텍스트 파일 |
| BLOB | 이진형 대용량 객체 | 이미지, 동영상 |
| BFILE | OS에 저장되는 이진 파일의 이름과 위치를 저장. 읽기 전용 모드로만 액세스 가능. |
여기서 CLOB과 NCLOB 의 차이가 궁금해졌다. 오라클 공식 문서에서 찾은건데 나도 참 모르는 단어가 많다.
CLOB은 데이터베이스의 Character Set으로 데이터를 저장하는 반면, NCLOB은 National Character Set으로
데이터를 저장하는데, 9i 이상 버전에서는 UNICODE를 사용하여야만 합니다.
CLOB과 NCLOB는 charsetform에 의해 차이가 발생합니다.
character set 과 nation character set 간단하게 말해서 사용하고자 하는 다른 언어들이 있다면 베트남어나 중국어를 그냥 저장하면 글자가 깨지는 문제가 발생할 수 있기 때문에, 그런 경우를 방지하고자 사용한다! 라고 이해했다.
회사에서 clob에 저장되는 것은 html 파일이였다. 메일 전송을 위해서 미리 준비한 템플릿과 그 안의 내용들을 포함하고 있었다. 예전부터 이미지와 동영상 같은 바이너리 파일들의 저장방식에 대해서 궁금했는데 clob과 blob을 통해서 알 수 있어서 유익했고, 대용량 데이터를 가지고 오는 경우에 반드시 where 조건을 넣어서 사용해야된다는 것을 알 수 있었다.