Нефть и песок О стали Компрессор - подбор и ошибки Из истории стандартизации резьб Соперник ксерокса - гектограф Новые технологии производства стали Экспорт проволоки из России Прогрессивная технологическая оснастка Цитадель сварки с полувековой историей Упрочнение пружин Способы обогрева Назначение, структура, характеристики анализаторов Промышленные пылесосы Штампованные гайки из пружинной стали Консервация САУ Стандарты и качество Технология производства Водород Выбор материала для крепежных деталей Токарный резец в миниатюре Производство проволоки Адгезия резины к металлокорду Электролитическое фосфатирование проволоки Восстановление корпусных деталей двигателей Новая бескислотная технология производства проката Синие кристаллы Автоклав Нормирование шумов связи Газосварочный аппарат для тугоплавких припоев
Главная страница / Архитектура отрасли

Мемуары «настройщика»

Однажды, лет восемь назад, один опытный администратор почтенного возраста сравнил работу администратора Oracle с работой пожарного. Тогда мне эта идея не пришлась по душе.

Когда в марте 2006 г. меня пригласили на проект в «ВымпелКом», то под конец одного из первых рабочих дней мне было поручено устранить дефект первого приоритета по производительности – важный для бухгалтерии отчет выводился неожиданно долго.

В переводе это означало «никто не уходит домой, пока проблема не будет решена». К 11 часам вечера техническое решение было найдено. Но подход к решению проблем производительности в стиле «пожарного» не выглядел привлекательным.

Эта статья о том, как в проекте «ВымпелКома» строился процесс по оптимизации производительности Oracle E-Business Suite (EBS).

Через два года после внедрения системы стало очевидно, что решать проблемы по мере их возникновения опасно для бизнеса клиента. Поначалу, еще в апреле 2006 г., мы старались прежде всего устранять проблемы на продуктивных серверах, создающие наиболее серьезные неприятности и при этом требующие наименьших трудозатрат. Прежде всего, был налажен ежедневный анализ отчетов STATSPACK с целью выявления наиболее «тяжелых» запросов с точки зрения количества логических и физических чтений.

Использовались различные методы ускорения обработки запросов. Мы понимали, что находимся не на олимпиаде по оптимизации, а в стремительно развивающемся проекте, где ежеквартально добавляется новый регион. Именно поэтому в первую очередь исправлялись запросы, которые оптимизировались наиболее просто.

Уже через пару месяцев картина как по отчету STATSPACK, так и по дефектам производительности изменилась к лучшему. Вот некоторые из применявшихся методов ускорения «тяжелых» запросов:

сбор гистограмм по некоторым колонкам;

- удаление неправильных хинтов и «кастомизированного» кода. Хинты в SQL-запросах, поставленные в 2004 г., на тот момент были эффективными. Но по прошествии нескольких лет картина данных в БД поменялась, и зачастую от таких «подсказок для оптимизации» было больше вреда, чем пользы. Большинство подобных «оптимизированных» запросов исправлялись простым удалением хинта. Конечно, предварительно был налажен регулярный сбор статистики для оптимизатора Oracle;

переписывание запросов. Обнаружив плохо написанный запрос, мы назначали его на автора этого запроса. Это позволило «убить двух зайцев»: проблема производительности у пользователей устранялась еще до того, как пользователь успевал завести инцидент, а разработчик волей-неволей учился на своих ошибках, опять же, без вреда для клиента;

замена переменных привязок их литеральными значениями и наоборот – с целью объяснения этого способа впоследствии были организованы семинары для всех разработчиков проекта;

поиск и установка исправлений (patches) для EBS, улучшающих производительность, – этот метод применим только к стандартному (не «кастомизированному») коду;

создание индексов. Стоит отметить, что к созданию «кастомизированных» индексов в проекте относились крайне неприветливо. Однако результаты первого подобного опыта были охарактеризованы фразой «два индекса, которые перевернули STATSPACK». Всего парой индексов размером 65 кбайт удалось значительно ускорить около десятка самых «тяжелых» «кастомизированнных» запросов модуля «Запасы». Тем не менее, мы по-прежнему не приветствуем подобных решений по оптимизации, если предварительно не проверены другие способы.

Главная страница / Архитектура отрасли