Особенности использования TimesTen In-Memory Database в высоконагруженной среде Михаил Гранкин, QIWI
Что такое TimesTen РСУБД, работающая полностью в памяти. Закрытый исходный код, коммерческая лицензия Поддерживает SQL в версии 7.05 и PL/SQL в версии 11g Cost-based optimizer JDBC, ODBC в версии 7.05 и OCI в версии 11g Интеграция с Oracle database Устанавливается на Unix/Linux/Windows
Наша нагрузка (на один инстанс) Около 150 таблиц Около 150 млн строк в этих таблицах 1000 подключенных сессий 23Гб загруженных в память данных Commit rate ~ 3000
Управление запуском Размер datastore – Фиксирован – Может только увеличиваться – Формула: Размер = Сколько есть – OS – 2 мб * max_session_amount – temp_size Swapinness в 0 hugepage включить
Уровни изоляции транзакции Read commited – Читатели не блокируют писателей – Писатели не блокируют читателей – Хранится две версии модифицируемой записи: текущая и новая – select sum(value) from tab может вернуть неожиданный результат Serializable – Читатели блокируют писателей – Писатели блокируют читателей – Читатели не блокируют читателей
Способы online агрегации данных Materialized view – не для репликации Все mview в TimesTen – обновляются сразу! Materialized views могут быть вложенные TimesTen ~ 300 tps, Oracle database ~ 3 tps
Механизмы интеграции Oracle database и TimesTen Read-only cachegroup Usermanaged cache group Synchronous cache group Asynchronous cache group Aging feature Passthrough feature DB link Oracle -> TimesTen
Организация хранения и индексирования данных In-line и out-of-line данные Добавление столбца = зло Два типа индексов: t-tree и хэш (хэш быстрее, но он только для pk) Статистика для CBO: количество уникальных значений и гистограммы Типы данных TT меньше Oracle Нет поддержки timestamp with local timezone
Тёмная сторона Datastore corruption за select Disconnect при сложных запросах Нет инструментов анализа производительности Хинты не удобные Особенности управления изменениями (блокировка sys.tables) Нет аналитических запросов Из инструментов работы с базой: ttISQL и плагин к SQL Developer Максимум 24 таблицы в одном запросе
Наши проекты Оптимизация отклика системы Противодействие мошенническим схемам Сбор данных с терминалов
Спасибо за внимание! Гранкин Михаил Заместитель директора департамента разработки