ORACLE TDE PERFORMANCE TEST v1.0
1. TDE
오라클의 TDE 를 이용해 Column-level encryption 을 테스트 하였다.
테스트 내용은 Encrypted columns 을 가진 Table 에 대해 Query, DML 성능을 확인했다.
2. Environment
Linux
Oracle 11.2.0.3.0
RAM 53g
ORACLE - SGA_MAX_SIZE : 28G
ORACLE – PGA_AGGREGATE_TARGET : 9G
DATA : SYSTEM.TEST_TEMP, 9,515,634 ROWS, 696 MB
순수하게 TDE 를 위한 테스트만 진행 되었으며, 다른 활동 세션은 없는 장비이다.
RAM 이나 메모리 관련 파라미터를 기재했으나 암호화에 따른 RESPONSE TIME 만 보려기에 큰 의미는 없다.
3. TABLE NAMING RULE
l TEST_TEMP : 데이터 원본
l TEST : 암호화 컬럼이 없는 테이블
l TEST_EMAIL
l TEST_EMAIL_ADDR
l TEST_EMAIL_ADDR_TLPN
l TEST_EMAIL_SALT
l TEST_EMAIL_ADDR_SALT
l TEST_EMAIL_ADDR_TLPN_SALT
TEST_TEMP, TEST 를 제외한 나머지 테이블은 Column-level encryption 을 사용했다.
TEST_* 뒤에 오는 이름은 암호화 한 컬럼을 의미하며, *_SALT 는 SALT 옵션을 사용한 테이블이다.
4. Direction of testing
기본 전제로 다음을 가정하였다.
암호화 대상 컬럼이 많아질수록 응답시간은 느려질 것이다.
암호화 컬럼을 많이 엑세스 할수록 응답시간은 느려질 것이다.
전 테이블 모두 인덱스 없이 테스트 했으며, 힌트를 사용해 실행플랜을 고정하였다.
더불어 전 테이블은 모두 동일한 데이터를 가진다.
또 정확도를 위해 QUERY, DML 을 6회씩 테스트 한 평균을 이용했다.
5. QUERY, DML
l QUERY
n SELECT
TEST_TEMP 데이터 원본을 선행 테이블로 암호화 된 테이블을 해시조인했다.
이 과정에서 조건절을 다음의 4가지 경우로 시간을 측정했다.
u ID = ID
u ID = ID AND EMAIL = EMAIL
u ID = ID AND EMAIL = EMAIL AND ADDR = ADDR
u ID = ID AND EMAIL = EMAIL AND ADDR = ADDR AND TLPN = TLPN
4가지 경우를 측정한 이유는 암호화 된 컬럼이 조건에 추가 될수록 응답시간이 길어진다를 보기 위해서이다.
l DML
n INSERT
INSERT-SELECT 로 데이터를 입력하였다.
응답시간에 대해서는 암호화 컬럼이 많아질수록 INSERT 수행시간이 길어진다고 가정하였다.
n UPDATE
UPDATE (암호화 된 테이블) SET 전컬럼 = 전컬럼
위와 같이 전 컬럼을 UPDATE 하도록 WHERE 조건 없이 수행했다.
암호화에는 CPU TIME 이 소모되고, 더불어 그 대상 컬럼이 많아질수록 수행시간이 길어진다고 가정했다.
n DELETE
IN 절을 사용해 전 컬럼을 비교하도록 했다.
암호화 된 데이터를 복호화 해야 하기에 암호화를 했냐 여부와, 몇 개 컬럼에 대해 이 작업이 필요한가가 응답시간에
영향을 줄거라 가정하였다.
6. RESULT SUMMARY
위 내용은 암호화 컬럼이 없는 TEST 테이블에 대한 QUERY, DML 응답시간과,
암호화 컬럼이 있는 6개 테이블의 응답시간과 비교한 RESPONSE TIME 증감률 (%) 이다.
SELECT #1 ~ SELECT #4 의 의미는 소스 테이블 TEST_TEMP 와의 조인 시 WHERE 절 조건 케이스를 의미한다.
SELECT #1 -> ID = ID
SELECT #2 -> ID = ID AND EMAIL = EMAIL
SELECT #3 -> ID = ID AND EMAIL = EMAIL AND ADDR = ADDR
SELECT #4 -> ID = ID AND EMAIL = EMAIL AND ADDR = ADDR AND TLPN = TLPN
#1 ~ #4 로 갈수록 WHERE 절이 증가한다.
위에서 얻은 간단한 결론은 다음과 같다.
l 암호화 컬럼을 사용하면 QUERY, DML 성능이 다운된다.
l 암호화 컬럼이 많아질수록 응답시간이 느려진다.
반대로 확신할 수 없는 내용은 다음과 같다.
l SALT 옵션 사용으로
응답시간이 꼭 길어지지는 않는다.
è 테스트 과정으로 패턴을 발견하진 못 했다.
7. RESULT OF INSERT
(세로축 단위는 초 이다.)
INSERT 는 단순히 INSERT – 조건절 없는 SELECT 를 수행하였다.
각 테이블의 차이는 암호화 된 컬럼이 어떤 것이냐 차이밖에 없다.
위 표에서는 암호화 컬럼이 많아질수록 응답시간이 길어지는게 잘 확인 된다.
SALT 옵션 사용 여부에 대해서는 TEST_EMAIL_ADDR_TLPN_SALT 가 오히려 빠른 응답시간을 보여줬다.
8. RESULT OF SELECT
4개 그래프가 한 테이블에 대한 그룹이다.
한 테이블에 대해 4개 그래프가 나오는데 이는 순서대로 다음과 같은 의미를 가진다.
l ID = ID 의 케이스
l ID = ID AND EMAIL = EMAIL 의 케이스
l ID = ID AND EMAIL = EMAIL AND ADDR = ADDR 의 케이스
l ID = ID AND EMAIL = EMAIL AND ADDR = ADDR AND TLPN = TLPN 의 케이스
여기서도 암호화 컬럼이 많아질수록 응답시간이 길어진다.
다만 TEST_EMAIL_SALT 의 경우에는 컬럼이 증가해도 비슷한 응답시간을 보여줬다.
9. RESULT OF UPDATE
UPDATE 는 WHERE 절 없이 SET 에 ID 를 제외한 전 컬럼을 업데이트 하도록 쿼리를 수행하였다.
그 결과 암호화 컬럼이 많을수록 긴 응답시간을 보여줬다.
다만 여기서는 SALT 옵션을 사용한 경우가 사용하지 않은 경우보다 대체로 긴 응답 시간을 보인다.
예외로 TEST_EMAIL 의 경우는 SALT 사용 여부와 상관없이 비슷한 응답시간을 보여줬다.
10. RESULT OF DELETE
DELETE 의 경우 WHERE 절에 소스 테이블을 IN 으로 받아 삭제하였다.
결과적으로 모든 데이터가 삭제되었고, 실행플랜은 해시조인으로 고정해 진행했다.
여기서도 TDE 를 적용한 테이블이 적용하지 않은 경우보다 수행타임이 길게 나타났다.
11. Conclusion
보다 정확한 성능 테스트를 위해서는 실제의 데이터를 가지고 실제의 워크로드에 근접한 환경을 사용해야 할 것이다.
위 정보는 어디까지나 단순화 한 테이블, 데이터를 가지고 응답시간만 따져 산술 비교한 결과이다.
어디까지나 참고 자료 정도로 활용하기 바란다.