Технические аспекты проекта в ТД «Копейка» Наталья Яковлева консультант по программным продуктам Oracle Центра технической поддержки Компании РДТЕХ
Проблемы и пути их решения Большой объем базы данных Секционирование и сжатие таблиц Сжатие индексов Низкая производительность Оптимизация SQL запросов Рекомендации по доработке ABAP кода, алгоритмов построения отчетов
Секционирование таблиц Секционированы 10 таблиц Все индексы для секционированных таблиц – локально секционированы Ключ секционирования должен присутствовать в запросах
Сжатие таблиц Сжатие секций с историческими данными (до 2011 г.) Данные за 2010 г. сжаты в 5.5 раз (от 2.3 до 8 раз)
Сжатие таблиц в Oracle 10g Сжатие таблиц работает для массовых вставок SQL*Loader в режиме прямой загрузки CTAS ALTER TABLE MOVE, ALTER TABLE MOVE PARTITION INSERT с APPEND, PARALLEL В каждом блоке данных строится таблица символов (symbol table) В строке указывается короткая ссылка на таблицу символов
Сжатие таблиц. Таблица MSEG 179 столбцов, 2.2 млрд. строк, средняя длина строки столбцов NOT NULL + значения по умолчанию, 0…0, 0 88 столбцов 1 уникальное значение = значению по умолчанию, не используются в запросах (col_usage$) 45% от средней длины строки 46 столбцов число уникальных значений < 20 секция за 2010 г.: 400 Гб сжаты до 51 Гб
Оптимизация кода. Оптимизация SQL запросов Время выполнения запроса: 2.67 сек Число выполнений в час: 4500 Elapsed time: 9.74% DB time CPU time: 9.74% DB time Buffer gets: 22.19% Проведена оптимизация запросов. Время выполнения запросов сократилось до сек.
Оптимизация кода. Доработка ABAP кода, алгоритмов Время выполнения запроса: сек Число выполнений в час: 40 млн. Elapsed time: 5.10% DB time CPU time: 5.10% DB time Buffer gets: 1.84% Разработчиками доработан алгоритм построения отчетов. Отчеты не попадают в число ресурсоемких.
Есть вопросы? Наталья Яковлева консультант по программным продуктам Oracle Центра технической поддержки компании РДТЕХ Тел.: +7 (495)