Введение - Adminka.info

advertisement
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИМЕНИ В.И.УЛЬЯНОВА-ЛЕНИНА
Отчет о прохождении
преддипломной практики
Выполнила студентка
5 курса факультета
ВМК группы 916
Габидинова Айгуль
Руководитель
к.т.н. Биряльцев Е.В.
Казань 2006 г.
Введение
Компания Auriga Inc (www.auriga.com), специализирующаяся на разработке системного и
заказного программного обеспечения, работает на рынке ИТ-аутсорсинга с 1990 года.
Среди клиентов Auriga такие компании как Hewlett-Packard, Motorola, Siemens, Toshiba,
IBM и другие. Auriga имеет штаб-квартиру в городе Амхерст (штат Нью-Гэмпшир, США) и
центры разработки программного обеспечения в Москве и Казани.
При прохождении преддипломной практики была поставлена задача изучения и освоения
методов оптимизации серверов Oracle. Данная задача является актуальной для практической
работы компании, так как в производственном процессе используются значительные объемы
данных.
Прохождение практики
Приступила к практике 1 декабря 2005г. в организации ООО "Аурига-Казань" под
руководством её директора к.т.н. Биряльцева Е.В.
В первый день работы на предприятии были оформлены все документы, необходимые
для выполнения работы.
В ходе прохождения практики был проведён первичный инструктаж по технике
безопасности, пожарной профилактике и внутренним правилам поведения. Было проведёно
ознакомление с рабочим местом и правилами эксплуатации оборудования.
Все должностные обязанности выполнялись в полном объеме. За время пребывания на
предприятии был получен опыт работы как в профессиональной деятельности, так и в сфере
отношений в коллективе.
За время пребывания на предприятии был проделан большой объем самостоятельной
работы, так как по решению поставленной задачи конкретная литература отсутствует, а
информация о методах и средствах её решения рассеяна по фирменной документации и
интернет-ресурсам.
Выбыла с места практики 2 марта 2006г.
Поставленная задача
Управление большими и сверхбольшими базами данных, проектирование и разработка
приложений для них имеет свои особенности. Чтобы не допустить ухудшения характеристик
как отдельных приложений, так и всей системы в целом, требуется использование
специальных методов, повышающих скорость доступа к данным.
Было необходимо использование комплексного подхода, оптимизация всех звеньев
системы — серверной, клиентской и сетевой части.
Настройка производительности осуществлялась несколькими способами: настройка
рабочих станций клиентов, сетевого транспорта, оптимизация клиентских приложений,
оптимизация серверного PL/SQL-кода и SQL-выражений. Для настройки клиентских
компьютеров и сети было произведено обновление аппаратной части и системного
программного обеспечения. Для улучшения работы клиентских приложений был
переработан их исходный код и применялись специальные средства оптимизации программ
для конкретной аппаратной конфигурации.
По разным оценкам, общая производительность системы на 15-20% зависит от настройки
базы данных, а остальные 80-85% приходятся на приложение.
Для оптимизации серверной части производились настройки параметров базы данных
Oracle, частичное перепроектирование структуры базы данных и переработка серверного
кода. Настройка базы данных выполнялась на основе статистики из словаря данных.
Решение проблем производительности
Оптимизации серверов Oracle осуществлялась следующими этапами:
1. Выделение “ключевым” параметрам Oracle достаточной памяти (из наличных
физических ресурсов). Память для Oracle выделяется через файл INITsid.ORA.
1.1.
Настройка установок системы и ключевых параметров INIT.ORA
select name, value
from v$parameter
where name in (‘db_block_buffers’,...и т.д.);
1.2.
Обращаясь к v$parameter, либо используя Server Manager или Oracle Enterprise
Manager, можно найти параметры, которые оказывают влияние на
производительность Oracle.
DB_BLOCK_BUFFERS (буферы блоков БД),
SHARED_POOL_SIZE (размер разделяемого пула) и
SORT_AREA_SIZE (размер области сортировки).
2. Достижение кэширования наиболее важных данных в памяти, используя динамическую
таблицу x$bh и параметр CACHE оператора ALTER TABLE.
2.1.
Проверка использования буферов SGA с помощью X$BH:
select state, count(*)
from x$bh
group by state;
2.2.
Использование параметра CACHE оператора ALTER TABLE:
CREATE TABLE TEST_TAB (COL1 NUMBER)
TABLESPACE USERS
CACHE;
3. Нахождение запросов, которые засоряют память и служат причиной избыточного вводавывода. Поиск проблемных областей с помощью динамической таблицы v$sqlarea.
3.1.
Поиск запросов с наибольшим объемом физических чтений
select disk_reads, sql_text
from v$sqlarea
where disk_reads > 10000
order by disk_reads desc;
3.2.
Поиск запросов с наибольшим объемом логических чтений)
select buffer_gets, sql_text
from v$sqlarea
where buffer_gets > 200000
order by buffer_gets desc;
4. Настройка проблемных запросов с использованием Parallel Query Option (опция
параллельных запросов). И настройка при помощи индексов на базе функций (Function
Based Indexes) и материализованных представлений (Materialized Views).
Узнать, где система работает медленно можно у пользователей. Так же помогает
взаимодействие с другими разработчиками, которые работают над похожими системами.
4.1.
Использование для оптимизации ключевых подсказок:
FULL – Форсировать полный просмотр таблицы (Full Table Scan)
SELECT /*+ FULL(имя_таблицы) */ столбец1, столбец2 ...
INDEX - Форсировать поиск по индексу (Indexed Search)
SELECT /*+ INDEX(имя_таблицы имя_индекса1 имя_индекса2...) */
ORDERED - Форсировать ведущую таблицу из предложения FROM
SELECT /*+ ORDERED */ столбец1, столбец2 ...
FROM таблица1, таблица2
ALL_ROWS – Явно выбрать способ оптимизации по стоимости с целью
достижения лучшей пропускной способности
Select /*+ ALL_ROWS */ ...................
ALL_ROWS – Явно выбрать способ оптимизации по стоимости с целью
достижения лучшего времени отклика
Select /*+ FIRST_ROWS */ ...................
4.2.
Ведущая таблица. Для управления её назначением можно воспользоваться
подсказкой ORDERED. Ключевым моментом является использование этой
подсказки для изменения порядка запроса таблиц с позиций производительности.
select tabA.col_1, tabB.col2
from tabA, tabB
where tabB.col2 = ‘ANL’;
select /*+ ORDERED */
tabA.col_1, tabB.col2
from tabA, tabB
where tabB.col2 = ‘ANL’;
4.3.
Опция параллельных запросов Oracle (Parallel Query Option) открывает новые
возможности повышения производительности. Сейчас АБД могут распределять
отчеты с интенсивным потреблением времени ЦП по нескольким процессорам,
получая выгоду от полной скорости всего “ящика”. В SQL*Loader можно также в
режиме DIRECT=TRUE (прямая загрузка) использовать параметр
PARALLEL=TRUE (параллельная загрузка). Общий синтаксис и использование
подсказки PARALLEL (степень параллелизма равна 4):
SELECT /*+ FULL(CUST) PARALLEL(CUST, 4) */
ENAME, JOB
FROM CUST
WHERE TABLE_NAME = 'EMP';
4.4.
Индексы на базе функций (Oracle8i) могут включать в себя столбцы,
арифметические выражения, функции PL/SQL или C.
Создание индекса на базе функций:
CREATE INDEX emp_idx ON emp (UPPER(ename));
Создан индекс по столбцу ename с функцией UPPER.
Запрос таблицы emp с использованием индекса на базе функций:
select ename, job, deptno
from emp
where upper(ename) = ‘ELLISON’;
4.5.
Материализованные представления (Materialized Views) - для создания и
автоматического обновления таблиц суммарных данных. Перезапись запросов
(Query Rewrite) позволяет оптимизатору Oracle модифицировать запросы больших
детальных таблиц, которые могут быть полностью удовлетворены меньшей
суммарной таблицей, что может существенно повысить производительность.
Для их использования необходимо установить следующие параметры INIT.ORA:
query_rewrite_enable = true
query_rewrite_integrity = trusted
Заключение
В ходе прохождения практики углубила общие знания о базах данных, об индексах,
кластерах, секционировании, ранжировании методов доступа и т.п. Приобрела навыки
администрирования Oracle.
Собрала информацию, проанализировала имеющиеся в данной области материалы и
разработки, изучила методы настройки серверов Oracle и приспособила их для повышения
производительности работы с конкретными данными имеющейся уникальной системы.
Related documents
Download