Операции шифрования и дешифрования потребляют время центрального процессора, поэтому вы должны рассмотреть их влияние на производительность. Когда вы обращаетесь к незашифрованным столбцам таблицы, производительность нисколько не отличается от производительности при работе с таблицами, для которых не используются средства TDE. Когда же вы обращаетесь к зашифрованным столбцам, возникают небольшие накладные расходы на дешифрование во время выборки данных и шифрование во время вставки, так что вы можете захотеть шифровать столбцы выборочно. Если вам больше не нужно шифровать столбец, вы можете выключить шифрование следующим образом:
alter table account modify (ssn decrypt);
Также проанализируйте использование индексов. Предположим, в вышерассмотренном примере есть индекс столбца SSN с именем in_accounts_ssn. Если запрос к таблице ACCOUNTS имеет предикат равенства:
select * from accounts where ssn = '123456789';
то индекс in_accounts_ssn используется. Если же в запросе указан предикат LIKE:
select * from accounts where ssn like '123%';
то индекс будет игнорироваться и будет использоваться полный просмотр таблицы. Причина проста. Структура B-дерева индекса гарантирует, что значения с совпадающими первыми символами физически размещаются близко друг от друга. Обрабатывая предикат LIKE, сервер Oracle Database 10g ищет записи индекса, сопоставимые с образцом, и физическая близость помогает ускорить поиск по индексу, который выполняется быстрее полного просмотра таблицы.
Однако если столбец зашифрован, фактические значения в индексе будут совсем другими (поскольку они зашифрованы), и, следовательно, разбросаны по всему индексу. Это делает просмотры индекса более дорогими по сравнению с полными просмотрами таблиц. Поэтому в этом примере запроса с предикатом LIKE сервер Oracle Database 10g будет игнорировать индекс и выполнять полный просмотр таблицы.
В случае предикатов равенства ищется конкретная запись индекса, а не множество значений, соответствующих образцу. Поэтому план выполнения с использованием индекса быстрее плана с полным просмотром таблицы, и оптимизатор решает использовать индекс. Когда вы принимаете решение, какие столбцы шифровать, учитывайте влияние шифрования на индексы и знайте, что вам, возможно, придется переписать некоторые запросы, в которых используются зашифрованные столбцы.