ак узнать, что работа завершена
Один из самых серьезных недостатков традиционного метода настройки Oracle заключается в том, что отсутствует критерий завершения. В результате основанные на этом методе проекты могут длиться до тех пор, пока не иссякнет терпение или деньги (по причине возникновения маниакально-настроечного психоза (CTD), упоминавшегося в главе 3). В методе R, наоборот, условие завершения определено:
Если даже наиболее действенные мероприятия не дают достаточного улучшения, отложите оптимизацию производительности до лучших времен.
Как определить, что самые эффективные мероприятия не дают достаточного улучшения? Если можно точно предсказать прибыль, получаемую от проекта повышения производительности, то это элементарная задача финансового анализа. Компания должна вкладывать средства в деятельность, способствующую одновременному повышению прибыли, возврата инвестиций и притока денежных средств. Если финансовая эффективность проекта превышает эффективность всех остальных путей вложения денег компанией, то проект должен быть реализован.
В действительности большинство проектов повышения производительности вполне могут обходиться без формального финансового анализа. В штате многих компаний имеется персонал, решающий задачи повышения производительности там, где в этом возникает необходимость. Во многих случаях штатные аналитики еженедельно несколько часов посвящают вопросам производительности. Расходы, вызванные наличием у аналитика даже острой формы синдрома CTD третьей степени настолько незначительны, что остаются незамеченными в большинстве компаний.
Даже в тех ситуациях, когда аналитики по производительности располагают свободным временем, неудобства доставляет отсутствие возможности определить, действительно ли пользовательская операция оптимизирована, т. е. выполняется так быстро, как это возможно. Это практически нельзя выяснить, измеряя производительность по общесистемной статистике, как это практикуется в обычных методах настройки. В то же время время отклика, положенное в основу метода R, позволяет узнать, есть ли еще у пользовательской операции резервы повышения производительности. По профилю ресурсов и данным расширенной трассировки, по которым он построен, очень просто определить, есть ли возможность дальнейшего улучшения времени отклика операции.
В примере 10.7 показано, как выглядит профиль ресурсов, когда пользовательская операция оптимизирована. Обратите внимание на следующие характерные моменты:
Общее время отклика невелико. Это обязательное условие. Если общее время отклика недостаточно мало, значит, работа не закончена и не имеет значения, что остальные параметры в норме. «Достаточно малое» значение определяется бизнесом, об этом рассказывалось в главе 4.
В общем времени отклика преобладает процессорное время (обычно более 80% общего времени отклика), но приложение не расходует его понапрасну.
Операции чтения и записи файлов базы данных отнимают времени больше, чем любой другой компонент времени отклика, за исключением процессорного времени. Количество вызовов чтения и записи мало.
Операции, не связанные с использованием процессора и доступом к файлам, занимают очень незначительное время.
Если профиль ресурсов похож на приведенный в примере 10.7 и общее время отклика (О) достаточно мало, то работа закончена. Если общее время отклика недостаточно мало, а остальные показатели (©, © и О) в норме, то заметно повысить производительность можно только путем замены процессора на более быстрый.
Почему в оптимальном профиле ресурсов работа процессора и физический ввод/вывод занимают верхние строчки? Это естественно. Конечно, что-то должно быть наверху, если общее время отклика отлично от нуля. Что вы хотели бы там увидеть? В действительности база данных выполняет очень простую работу: управляет данными, находящимися в долговременном хранилище. База данных читает, обрабатывает и записывает данные. В оптимальном профиле ресурсов процессорная обработка опережает физический ввод/вывод по той причине, что проблемы производительности ввода/вывода решаются проще и дешевле (обычно путем оптимизации SQL в приложении). Если решение проблемы стоит недорого, она, скорее всего, будет решена, что уменьшит затрачиваемое из-за нее время, и в верхних строках профиля окажется другое событие. Таким образом, по мере оптимизации производительности системы, процессорное время перемещается в начало профиля ресурсов. Даже если длительность процессорной обработки мала, она обычно занимает верхнюю строчку, т. к. большинство приложений требуют от Oracle значительно больше времени на обработку данных, чем на их чтение и запись.
Вся прочая активность базы данных обычно «необходима, но нежелательна». Например, событие latch free сигнализирует об использовании ресурса, призванного предотвратить повреждение ряда внутренних структур данных Oracle в условиях высокой конкуренции [Millsap (2001c)]. Нам необходима эта возможность «сделать паузу, пока защелка недоступна», но наши приложения будут выполняться быстрее, если мы сможем добиться того, чтобы они ожидали события latch free как можно реже. Подавляющее большинство так называемых событий ожидания Oracle относятся к категории «необходимая возможность, которой следует избегать».
Основным ресурсом, потребляемым хорошо отлаженным запросом, будет, скорее всего, процессорное время. Однако из этого не следует, что если основной потребляемый запросом ресурс -процессорное время, то он хорошо отлажен. Вполне возможно, что запрос мог бы расходовать гораздо меньше процессорного времени и возвращать при этом верный результат. Наиболее подходящий способ для этого... (барабанная дробь) ...исключение лишних вызовов LIO.
Работа заканчивается, когда расходы на сокращение количества и продолжительности вызовов начинают превышать выигрыш от прироста производительности.
< Предыдущая | Следующая > |
---|