В табл.1 резюмируются свойства и характеристики современных систем OLTP (левый столбец), позволяющие удалить из СУБД некоторые функциональные возможности. Эти оптимизации использовались авторами в качестве руководства по модификации Shore. Из-за тесной интеграции всех менеджеров Shore было невозможно точно разделить все компоненты, чтобы их можно было удалять в произвольном порядке. Наилучшим возможным подходом было удаление функциональных возможностей в порядке, диктуемом структурой кода, что обеспечивало некоторую гибкость. Это порядок был следующим:
Таблица 1. Возможный набор оптимизаций для OLTP
Свойства OLTP и новые платформы | Модификация СУБД |
архитектуры без поддержки журнала | удаление журнализации |
разделение, коммутативность | удаление блокировок (когда это возможно) |
поочередное выполнение транзакций | однопотоковый режим выполнения, удаление блокировок, удаление защелок |
хранение в основной памяти | удаление менеджера буферов |
нетранзакционные базы данных | устранение учета транзакций |
Кроме того, авторы обнаружили, что в любой точке процесса удаления компонентов возможны следующие оптимизации:
Далее описывается подход, примененный авторами для реализации упомянутых действий. Вообще говоря, для удаления из системы некоторого компонента либо добавлялись условные операторы, которые позволяют избежать выполнения кода, относящегося к этому компоненту, либо, если добавление условного оператора приводило к ощутимым накладным расходам, методы переписывались целиком для полного устранения вызовов удаляемого компонента.