본문 바로가기

카테고리 없음

ORACLE TDE PERFORMANCE TEST v1.0

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

보다 정확한 성능 테스트를 위해서는 실제의 데이터를 가지고 실제의 워크로드에 근접한 환경을 사용해야 할 것이다.

 

위 정보는 어디까지나 단순화 한 테이블, 데이터를 가지고 응답시간만 따져 산술 비교한 결과이다.

어디까지나 참고 자료 정도로 활용하기 바란다.