Передовые методы, способствующие более эффективному проектированию, повышению производительности и управляемости DB2

В последние несколько лет было написано много материалов о передовых методах проектирования и реализации баз данных DB2. Среди них много книг и десятки статей, в которых рассказывается о том, как следует проектировать базы данных DB2 и интегрировать их в приложения. Чтобы дать некоторые первоначальные рекомендации клиентам и бизнес-партнерам, которые оказались в этом лабиринте, в данной статье приводится список лучших, по мнению авторов, передовых методов, которые рекомендуется иметь в виду при разработке и реализации приложений с помощью технологии IBM® DB2®. Предполагаемый результат статьи - создание более эффективных реализаций проектов на основе DB2. В задачи статьи не входит подробное описание передовых методов повышения производительности для существующих покупателей DB2 и независимых поставщиков программных продуктов.

Скотт Дж. Мартин, консультант по DB2, IBM Innovation Center for Business Partners, IBM

Скотт Мартин (Scott Martin) в настоящее время является консультантом по DB2 в центре IBM Innovation Center for Business Partners (Центре инноваций IBM для бизнес-партнеров) в городе Уолтхэм, штат Массачусетс. Скотт помогал многим независимым поставщикам программных продуктов по вопросам миграции баз данных, анализа и оптимизации производительности, проектирования баз данных и диагностики проблем в версиях DB2 для платформ Linux, UNIX, Windows и z/OS. Скотт имеет несколько сертификатов по DB2 и z/OS. Ранее он работал в службе Global Technology Services, занимаясь вопросами разработки приложений, администрирования, проектирования и оптимизации баз данных.



Колин Дж. Мейсер, ведущий архитектор, группа CPG Solutions, IBM

Колин Мейсер (Colin Meiser) работает в IBM уже девять лет; он является сертифицированным разработчиком информационных систем и в настоящее время является сотрудником группы разработки решений для производства Consumer Products. Имея более чем 30-летний опыт работы в сфере информационных технологий, он в последние 15 лет занимается крупномасштабными базами данных и реализациями информационных хранилищ. Он имеет несколько сертификатов по DB2 и средствам бизнес-аналитики.



27.10.2008

Введение

DB2 для Linux, UNIX и Windows представляет собой платформу управления базами данных, на которой могут создаваться надежные бизнес-приложения класса "on-demand" (по требованию). DB2 обеспечивает оптимальное управление реляционными данными, а также, начиная с DB2 9, оптимизированное управление XML-данными.

Предполагается, что вы имеете базовые знания о реляционных системах управления базами данных (РСУБД) и опыт разработки и реализации приложений при помощи DB2 или какой-либо другой РСУБД. Здесь представлены передовые методы, которые помогут вам в базовой разработке с учетом производительности и в создании простой в управлении и обслуживании среды СУБД. По существу, за рамками статьи остались целые области проектирования баз данных, такие, как обеспечение безопасности, резервное копирование/восстановление и обеспечение безотказной работы. Кроме того, в статье даются общие советы по некоторым другим вопросам, например, по вопросу производительности, без подробного рассмотрения проблем анализа баз данных и проектирования. В статье упоминаются некоторые дополнительные ресурсы, которые, как нам кажется, смогут дать вам более обширную информацию по всем темам, имеющим отношение к DB2. Надеемся, что передовые методы общего назначения, которые приводятся в данной статье, помогут специалистам, отвечающим за развертывание приложений, уменьшив объем работ по развертыванию, управлению и повышению производительности приложений, работающих с DB2.

Общая рекомендация

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

Раздел Information Management Web-сайта developerWorks, на котором вы найдете как данную статью, так и множество других статей по DB2, огромный массив технических материалов, демонстрационных программ и ознакомительных версий программных продуктов, доступных для загрузки. В технической библиотеке раздела Information Management Web-сайта developerWorks имеются материалы различного содержания, в том числе, технические статьи, документация к программным продуктам и учебные руководства.

Нет недостатка и в печатных изданиях по DB2. Одним из лучших источников публикаций, имеющих отношение к DB2, является издательство IBM Press. Особый интерес могут представлять следующие книги:

Кроме того, просмотрите справочники IBM Redbook, которые содержат технические советы по DB2 и родственным продуктам для управления информацией (Information Management).

Виртуальный центр инноваций IBM Virtual Innovation Center (VIC) может быть очень полезен бизнес-партнерам IBM в качестве источника информации о программных продуктах, в том числе, о DB2. Для доступа к VIC необходимо быть участником программы PartnerWorld. Чтобы перейти к учебным материалам по DB2, необходимо после входа в систему на главной странице VIC выбрать ссылку All courses by product в категории Shortcuts в нижней части страницы справа. После этого вы окажетесь на странице "Выбор продукта". Чтобы перейти к учебным материалам по программному продукту, выполните соответствующие инструкции.


Советы по проектированию и реализации

Работа с инструментарием DB2 Migration Tool Kit

В процессе миграции базы данных из другой РСУБД на DB2 рекомендуется использовать инструментарий DB2 Migration Tool Kit (MTK) для поддерживаемой исходной РСУБД (поддерживаются SQL Server, Oracle, Sybase и MySQL.) При помощи этого инструмента можно осуществить перенос (миграцию) таблиц, представлений, индексов, ограничений ссылочной целостности, определяемых пользователем функций (UDF) и некоторых процедур. Качество переноса UDF и процедур зависит от сложности исходного кода. Чтобы определить, есть ли смысл использовать переносимые UDF или процедуры как основу для уточнения кода, или проще написать код заново, необходим внимательно проанализировать ситуацию. При использовании MTK необходимо учитывать следующие важные моменты, имеющие отношение к типу данных:

  • Всегда устанавливайте соответствие между типами данных столбцов DB2 и типами данных переменных в приложении или используйте метод set JDBC. Это может повысить эффективность доступа к данным и, возможно, предотвратить некоторые ошибки SQL;
  • Используйте тип данных наименьшей длины, удовлетворяющий требованиям приложения. Например, по возможности используйте тип SMALLINT (использующий 2 байта на символ), а не INTEGER (4 байта на символ). В некоторых случаях в процессе миграции MTK переводит исходный тип данных DBMS в DECIMAL (x,0). В целях более эффективной обработки и экономии дискового пространства можно порекомендовать заменить типы данных DECIMAL (x,0) на INTEGER или BIGINT. Однако при этом следует учитывать результирующий тип данных арифметических вычислений значений с типом INTEGER/BIGINT по сравнению с DECIMAL.

Настройка параметров базы данных

  1. Начните с команды AUTOCONFIGURE: Настройку параметров базы данных рекомендуется начинать с компонента Configuration Advisor или команды AUTOCONFIGURE. Определяя конфигурацию, важно понимать, как используется база данных и каковы требования к производительности приложения, которое связано с настраиваемой базой данных;
  2. По возможности используйте автоматическую настройку: Ряд параметров может быть задан автоматически. При выборе автоматической настройки параметров DB2 автоматически настроит параметры так, чтобы они отражали текущие требования к системе;
  3. Измените критически важные параметры так, чтобы они соответствовали вашим потребностям: Принимая решение по поводу изменения первоначальной настройки параметров конфигурации базы данных в соответствии с потребностями конкретной системы, следует иметь в виду следующие важные соображения:
    • Пространство таблиц базы данных, создаваемой DB2 по умолчанию, имеет размер страницы 4 Кбайт. Как минимум, рекомендуется создать буферный пул с размером страницы 32 Кбайт, системное временное пространство таблиц с размером страницы 32 Кбайт и пользовательское пространство таблиц также с размером страницы 32 Кбайт. Это гарантирует, что любые пользовательские таблицы, размер строки которых превышает 4 Кбайт, будут успешно созданы в пространстве таблиц с размером страницы 32 Кбайт;
    • Первоначальные значения параметров для буферного пула обычно слишком малы для типичной производственной системы. Выделение большего объема памяти через буферные пулы в большинстве случаев эффективнее, а значения, которые DB2 выбирает по умолчанию, имеют тенденцию к минимализму. В DB2 9 использование самонастраивающегося диспетчера памяти (self tuning memory manager, STMM) (о котором будет рассказано ниже в разделе Советы по среде выполнения и управляемости) позволяет DB2 выбрать наилучшие значения для параметров буферного пула;
    • Размер списка блокировок по умолчанию (динамически выделяемая память, куча, используемая под блокировки) составляет 100 буферов размером 4 Кбайт каждый в 8 версии DB2. Даже при низкоуровневом тестировании, использующем малое количество соединений и . небольшие объемы данных, это может привести к эскалации блокировки с уровня строки до уровня таблицы, в результате чего не исключены проблемы, связанные с блокировками. В DB2 версии 8 рекомендуется увеличить значение параметра locklist хотя бы до 1000 с помощью команды db2 update db cfg for DBNAME using locklist 1000. В DB2 9 можно просто запустить диспетчер памяти STMM, установив значение параметра locklist на AUTOMATIC, это поможет избежать большинства проблем с памятью из-за блокировок.
    Подробную информацию по вопросам буферного пула и размера пространства таблиц можно найти в материале DB2 Basics: Table Spaces and Buffer Pools (Основы DB2: пространства таблиц и буферные пулы) (developerWorks, декабрь 2002 г.).

Общие рекомендации по повышению эффективности операций select, update и insert

  • По возможности используйте параметр APPEND ON: Чтобы повысить эффективность обработки операции insert , если нет необходимости в физической кластеризации данных в таблице, используйте атрибут APPEND ON в определении таблицы. Учтите, что повторное использование дискового пространства, доступное при операциях delete или update, изменяющих размер строки, не происходит до тех пор, пока таблица не будет реорганизована. Дополнительные советы по разработке операций insert можно найти в материале Tips for improving INSERT performance (Советы по повышению производительности операций INSERT) (developerWorks, март 2004 г.);
  • Проанализируйте использование операций select *в коде: Как правило, рекомендуется избегать использования select *. Это позволит ограничить количество извлекаемых данных только указанными столбцами. Кроме того, если используется select *, то при изменении схемы и определений таблиц может потребоваться изменение кода приложения для обработки и новых, и удаленных столбцов;
  • Группируйте часто обновляемые столбцы: При обновлении строки DB2 записывает в журнал изменения от первого изменяемого столбца до последнего изменяемого столбца, поэтому если поместить столбцы, которые не обновляются часто, до или после часто обновляемых столбцов, объем записей в журналах DB2 уменьшится. Это рекомендация дает небольшой выигрыш в производительности, поэтому не рассматривайте ее, если это требует значительной переделки приложения или базы данных.

Используйте хранимые процедуры SQL, если это снижает нагрузку на сеть

Хранимые процедуры SQL могут снижать нагрузку на сеть за счет минимизации результирующего сетевого трафика в направлении к клиенту; кроме того, хранимые процедуры могут быть более производительными по сравнению со статическим (заранее написанным) SQL-кодом. Еще одним преимуществом хранимых процедур является уменьшение объема операций на стороне клиента (хотя использование ресурсов сервера DB2 при этом возрастает) и передача управления кодом DB2. Некоторые дополнительные советы по использованию хранимых процедур:

  • Старайтесь, чтобы хранимые процедуры были простыми и имели небольшой размер. Каждая процедура должна выполнять что-то одно. Попытка поместить несколько типов бизнес-логики в одну хранимую процедуру усложнит ее оптимизацию, изменение и читаемость;
  • По возможности используйте хранимые процедуры для создания "компонентов" бизнес-логики многократного использования;
  • Публикация DB2 SQL PL: Essential Guide for DB2 UDB on Linux, UNIX, Windows, i5/OS, and z/OS, 2nd Edition (DB2 SQL PL: краткое руководство по DB2 UDB для Linux, UNIX, Windows, i5/OS и z/OS) 2-е издание содержит полезную информацию по разработке и созданию кода хранимых процедур.

Максимизация параллелизма

Максимально возможное использование параллелизма является критически важным моментом в обеспечении высокой производительности базы данных. Вот некоторые подробные рекомендации:

  • На параллелизм влияют три реестровых переменных. Эти переменные могут способствовать повышению параллелизма, но они могут также влиять на поведение приложений. Мы рекомендуем активировать эти реестровые переменные в начале процесса разработки под DB2, чтобы тестирование всех модулей вплоть до полномасштабного тестирования проходило под влиянием этих изменений параллелизма. Дополнительную информацию можно найти в разделах Evaluate Uncommitted Data (Оценка незафиксированных данных) и Performance Variables (Переменные, оказывающие влияние на производительность) информации в IBM DB2 Database for Linux, UNIX, and Windows Information Center (Центр информации по базам данных IBM DB2 для Linux, UNIX и Windows).
    • DB2_EVALUNCOMMITTED=YES: Для версии 8, начиная с V8.1 FP9 (синоним V8.2 FP2), оптимальное значение параметра =YES_DEFERISCANFETCH. В V9 достаточно указать=YES;
    • DB2_SKIPDELETED=ON;
    • DB2_SKIPINSERTED=ON.
  • Выберите уровень изоляции, который обеспечивает самый высокий уровень параллелизма, оставаясь приемлемым для приложения. Существует несколько способов определения уровня изоляции: при помощи инструкции SQL (применяется только к этой инструкции), при помощи особого регистра CURRENT ISOLATION (применяется к текущему подключению) и в объекте подключения JDBC (применяется к текущему подключению);
  • Убедитесь что значения параметров DB2 locklist и maxlocks достаточно велики, выполнив мониторинг событий эскалации блокировок (через модуль DB2 health monitor, файл db2diag.log, инструмент Windows event viewer (Просмотр событий) или другой монитор производительности; можно также использовать диспетчер DB2 STMM). Недостаточная величина locklist может привести к тому, что DB2 будет пытаться повысить уровень многих блокировок на уровне строк до одной блокировки на уровне таблицы, что вызовет взаимоблокировку, если эскалация не произойдет, и в значительной мере повлияет на параллелизм, если эскалация пройдет успешно;
  • Возможно лишь одно исключение из рекомендации по достижению максимального уровня параллелизма - в том случае, если вам точно известно, что в какие-то периоды времени доступ к таблице осуществляется только через одно подключение. Воспользуйтесь командой ALTER TABLE <name> LOCKSIZE TABLE, чтобы получить преимущества от минимизации блокировки (и связанного с ней использования памяти/ресурсов ЦПУ). ИСПОЛЬЗУЙТЕ С ОСТОРОЖНОСТЬЮ.

В статье Lock avoidance in DB2 UDB V8 (Предотвращение блокировок в DB2 UDB версии 8) (developerWorks, сентябрь 2005) рассматриваются многие из описанных концепций.

Минимизация взаимоблокировок

  1. Минимизируйте взаимоблокировки; для этого всегда обращайтесь к ресурсам в одном и том же порядке в рамках одного приложения. Например, если один компонент приложения обращается сначала к таблице A, затем к таблице B и лишь потом к С, а второму компоненту приложения необходимо обратиться к таблицам А и С, то второй компонент должен обратиться к таблицам в такой последовательности: сначала к А, и лишь затем к С;
  2. Распространенной причиной взаимоблокировок в DB2 версии 8 является недостаточная величина конфигурационного параметра locklist, особенно если используется значение по умолчанию. См. раздел Максимизация параллелизма данной статьи. В таком случае необходимо увеличить размер списка блокировок. По умолчанию в DB2 9 используется диспетчер памяти STMM, который оптимизирует размер списка блокировок, чтобы предотвратить попытки эскалации блокировок и взаимоблокировки, которые могут иметь место в результате этого;
  3. Убедитесь, что зависимые таблицы в отношении ссылочной целостности (referential integrity, RI) имеют индексы, соответствующие внешнему ключу.

Использование пулов подключений

  1. Используйте пулы подключений под управлением либо сервера приложений, либо приложения, если последнее выполняется не в среде сервера приложений. Открытие и закрытие подключений - это дорогостоящий процесс, влияющий на производительность приложения или базы данных; использование пулов подключений ликвидирует большую часть этой нагрузки;
  2. Если используется большое количество подключений, изучите функцию DB2 connection concentrator (концентратор подключений). Эта функция экономит ресурсы памяти, разрешая использование некоторых "серверных" подключений DB2 в качестве подключений приложений.

Динамический или статический SQL?

В настоящее время динамический SQL используется гораздо шире, чем статический. Как правило, он проще в реализации, и, благодаря многократному использованию, в принципе, обеспечивает ту же производительность. Однако все же есть ситуации, в которых имеет смысл выбрать статический SQL: обычно это связано с вопросами безопасности и достижения максимальной производительности для определенных рабочих нагрузок OLTP.

Общую документацию по использованию статического SQL можно найти в документации по DB2 в интернете.

Вопросы, имеющие отношение к Java™-средам, включая использование SQLJ для создания статического SQL-кода, можно найти в разделе Introduction to SQLJ (Введение в SQLJ) центра IBM DB2 Database for Linux, UNIX, and Windows Information Center (Центр информации по базам данных IBM DB2 для Linux, UNIX и Windows).

Специфические вопросы по средам CLI/ODBC, в том числе, использование статических профилей для создания статического SQL-кода, рассматриваются в разделе Creating static SQL with CLI/ODBC/JDBC Static Profiling (Создание статического SQL-кода при помощи статических профилей CLI/ODBC/JDBC) центра информации IBM DB2 Database for Linux, UNIX, and Windows Information Center.

Минимизируйте затраты на выполнение оператора PREPARE

Используйте маркеры параметров, чтобы, создав SQL-инструкцию один раз, многократно использовать ее впоследствии. Дополнительную информацию можно найти в разделе Parameter Markers (Маркеры параметров) центра IBM DB2 Database for Linux, UNIX, and Windows Information Center (Центр информации по базам данных IBM DB2 для Linux, UNIX и Windows).

Для очень ресурсоемких инструкций SQL может быть более выгодно, чтобы оптимизатор имел дело с актуальными значениями переменных (литералами), а не с маркерами параметров. Этого можно добиться простым способом - использовать в коде литералы вместо маркеров параметров. Однако это может вызвать чрезмерную insert-активность в кэше инструкции и потенциально негативно повлиять на производительность и использование памяти, поскольку инструкции SQL, различающиеся только значениями литералов, будут считаться разными инструкциями. Для пакетного статического SQL-кода (например, для хранимых процедур SQL) можно использовать маркеры параметров и при этом сохранить возможность оптимизации по значению; этого можно добиться через привязку REOPT ALWAYS или команды предварительной компиляции. В DB2 9 и динамическом SQL также можно задать привязку REOPT ALWAYS через профили оптимизации - глобальный или на уровне инструкции.

Старайтесь использовать JDBC как можно эффективнее

Благодаря применению некоторых базовых принципов можно добиться более эффективного использования интерфейса JDBC. Во-первых, следует убедиться, что привязка данных к маркерам параметров осуществляется при помощи корректного метода setxxx для типа данных столбца. Это позволит избежать непроизводительных затрат на преобразование типов данных и возможные ошибки из-за несоответствия типов данных SQL. Во-вторых, следует по возможности избегать использования прокрутки в результирующих наборах, поскольку сервер для поддержки этой возможности создает временные таблицы, а это влияет на производительность, особенно при больших результирующих наборах.

Используйте компонент Design Advisor, чтобы получить рекомендации по индексам

Как только схема будет разработана, и вы сможете к ней обратиться, воспользуйтесь компонентом Design Advisor и получите рекомендации по индексам, предоставив ему SQL-инструкции в качестве входной информации. Это особенно важно не только для наиболее часто используемых, но также для больших и сложных запросов.

Кроме того, рекомендуется повторно запустить Design Advisor для кэша динамического SQL, полученного в ходе полномасштабного тестирования приложения. Это позволит компоненту использовать для рекомендации по индексам актуальную рабочую нагрузку с учетом частоты выполнения инструкций SQL. Перед запуском компонента Design Advisor обязательно выполните команду runstats.

Еще один вариант, который потребует немного больше усилий, но позволит просмотреть план доступа, использующий потенциальные (виртуальные) индексысостоит в следующем:

  1. Выполните SQL-инструкцию SET CURRENT EXPLAIN MODE RECOMMEND INDEXES;
  2. Выполните какую-либо SQL-инструкцию в рамках этого же сеанса; при этом таблица ADVISE_INDEX будет заполнена с учетом рекомендуемых (виртуальных) индексов;
  3. Выполните SQL-инструкцию SET CURRENT EXPLAIN MODE EVALUATE INDEXES;
  4. Выполните ту же инструкцию SQL. Теперь эта инструкция заполнит explain-таблицы в соответствии с планом доступа, который был выбран оптимизатором с учетом реальных и виртуальных индексов;
  5. И наконец воспользуйтесь explain- инструментом db2exfmt, чтобы ознакомиться с планом доступа, который использует текущие и рекомендуемые индексы.

Повысьте производительность работы с журналами

Скорость записи журналов DB2 может быть очень важным фактором для производительности DB2 (в зависимости от частоты обновления данных). Ниже приводится несколько советов, которые помогут вам повысить производительность ведения журналов в DB2:

  • Отключите функцию autocommit (которая по умолчанию включена во многих прикладных средах, таких, как JDBC). Каждая операция commit вызывает синхронную запись в журнал. Исключением из данной рекомендации может быть ситуация, когда приложение требует выполнения commit после каждой SQL-инструкции;
  • Не выполняйте журналирование больших объектов данных (CLOB, DBCLOB и BLOB) без особой необходимости;
  • Разместите файлы журналов DB2 изолированно, на специально выделенном дисковом пространстве (не используемом для других целей). Обязательно перенесите файлы журналов из папки по умолчанию в каталоге экземпляра в другую папку, поскольку в каталоге по умолчанию размещена и сама база данных;
  • Используйте для журналов диск с быстрым кэшем записи;
  • Рекомендуется увеличить размер буфера журнала до 256 страниц или более.

Используйте информацию плана доступа для оптимизации инструкций SQL.

Научитесь использовать информацию плана доступа для оптимизации SQL- инструкций. План доступа описывает путь доступа, который выбрал оптимизатор запросов DB2 для доступа к данным вашей инструкции SQL. Самый простой способ просмотреть план доступа - это включить графическое представление Visual Explain через компонент DB2 Control Center. Команды db2expln и db2exfmt предоставляют комплексную информацию в более сжатом виде, поэтому они обычно используются специалистами, которые часто анализируют производительность SQL-инструкций.

Команда db2expln несколько проще в использовании, чем db2exfmt, поскольку можно просто передать ей инструкцию, которую необходимо проанализировать. Кроме того, анализ всего статического кода SQL в пакете проще выполнять при помощи db2expln. db2exfmt требует, чтобы SQL-инструкция была предварительно интерпретирована в этих таблицах, а затем форматирует содержание информации в виде таблиц EXPLAIN. Команда db2exfmt обычно используется для сложных анализов производительности, потому что она предоставляет большую часть информации оптимизатора.

Дополнительную информацию об использовании описанных explain-инструментов можно найти в разделах Visual Explain overview(Описание функции Visual Explain), db2expln - SQL and XQuery Explain Command" (db2expln - explain-команда для SQL и XQuery) и db2exfmt - Explain table format command (db2exfmt - explain-команда табличного формата) Web-сайта IBM DB2 Database for Linux, UNIX, and Windows Information Center.


Советы по среде выполнения и управляемости

Выделите для базы данных особые серверы

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

Функции автоматизации DB2

Подумайте об использовании функций автоматизации DB2, особенно диспетчера памяти STMM в DB2 9, а также функции автоматического обслуживания Automatic Maintenance, которая доступна в DB2 версии 8 и DB2 9 (частично автоматизированная команда runstats). Эти функции не только снижают объем трудовых затрат, необходимых для мониторинга и обслуживания базы данных, они также способствуют более эффективной ее оптимизации.

Избегайте узких мест из-за операций ввода/вывода

По возможности используйте минимум 6-10 дисков на процессор и распределяйте все что можно по всему доступному количеству дисков (индексы, пространства таблиц и временные пространства таблиц). Настоятельно рекомендуется использовать функцию автоматического хранения, доступную с DB2 версии 8.1 FP9. Всегда старайтесь размещать журналы DB2 и пространства таблиц на разных дисках, чтобы избежать конкуренции за ввод/вывод между этими критически важными компонентами базы данных.

Отключите мониторинг перед развертыванием

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

Команда RUNSTATS - ваш союзник

Периодически запускайте команду RUNSTATS при существенном изменении объемов данных или их содержимого. Даже если количество строк в таблице остается неизменным, в результате изменений в содержимом данных может быть найден другой, возможно, более оптимальный, путь доступа на основе статистики, обновленной при помощи команды RUNSTATS. Периодически, после выполнения команды RUNSTATS, следует повторно выполнить привязку для пакетов DB2, содержащих статический SQL-код (при помощи команды db2rbind), чтобы гарантировать, что статический SQL будет использовать оптимальный путь доступа.

Команда REORGCHK - еще один ваш союзник

Периодически запускайте REORGCHK и выполняйте рекомендуемые реорганизации (REORG). Как и RUNSTATS, команда REORGCHK должна всегда выполняться при внесении существенных изменений в данные.

Собирайте мгновенные снимки данных

Регулярно собирайте мгновенные снимки данных. Данные снимка могут предоставить временные срезы использования буферных пулов, кучи сортировки, блокировок и интенсивности операций чтения/записи в таблицах. Предоставляемые срезы активности динамического SQL-кода (при помощи команды db2 get snapshot for dynamic sql on dbname и общей активности базы данных (при помощи db2 get snapshot for database on dbname) (dbname следует заменить именем реальной базы данных) особенно полезны. Записывая мгновенные снимки состояния и регулярно их анализируя, вы сможете выявить и необычную активность, и тенденции. Такое периодическое использование мгновенных снимков состояния особенно полезно для выявления тенденций. Для облегчения настройки долгосрочного мониторинга рекомендуется использовать для доступа к данным мгновенных снимков табличные функции SQL. Хранение и сравнение множества мгновенных снимков будет гораздо проще, если данные снова окажутся в DB2.

Научитесь использовать инструмент db2pd

Этот инструмент полезен и для выявления проблем, и для общего анализа того, что происходит в DB2. Кроме того, он может использоваться для мониторинга журналов DB2 и использования буферного пула.

Научитесь использовать каталог DB2

Каталог DB2 представляет собой ценный источник информации. Для доступа пользователей к каталогу рекомендуется использовать набор представлений со схемой SYSCAT. В DB2 9 полезную информацию о состоянии и использовании таблиц можно найти при помощи нового представления с именем SYSIBMADM.ADMINTABINFO. Дополнительную информацию о каталоге DB2 можно найти в разделе Roadmap to the Catalog Views (Схема представлений каталога) центра IBM DB2 Database for Linux, UNIX, and Windows Information Center (Центр информации по базам данных IBM DB2 для Linux, UNIX и Windows).

Регулярно обновляйте DB2, применяя новые пакеты исправлений

Регулярное обновление программного продукта DB2 при помощи пакетов исправлений является критически важным для предотвращения проблем. Применяйте пакеты исправлений с регулярными интервалами даже в том случае, если в системе не возникает ошибок. Как и любые программные продукты, DB2 - несовершенная система, поэтому IBM постоянно старается повысить надежность своего ПО при помощи пакетов исправлений, которые выпускаются примерно раз в квартал. Применение пакетов исправлений позволяет предупредить потенциальные ошибки, кроме того, это помогает минимизировать потенциальные простои прикладных систем, связанных с DB2.


Заключение

В этой статье были даны базовые рекомендации по разработке, реализации, оптимизации времени выполнения и управляемости, которые должны помочь вам в реализации приложений в среде DB2 . Хотя мы не описываем всех деталей, необходимых для практической реализации этих рекомендаций, надеемся, что наша статья познакомила вас с очень важными моментами. Используйте дополнительные ресурсы, которые упоминались в статье (их можно найти в разделе Ресурсы), чтобы получить более подробные в техническом отношении рекомендации по пунктам, которые в ней перечислены.


Благодарности

Выражаем благодарность Биллу Уилкинсу (Bill Wilkins) и Стиву Рису (Steve Rees) за рецензирование статьи.

Ресурсы

Научиться

  • Оригинал статьи: DB2 best practices for basic design, performance, and manageability (EN);
  • Техническая библиотека раздела Information Management на Web-сайте developerWorks. Здесь вы найдете множество материалов, в том числе, технические статьи, документацию на программные продукты и учебные руководства;
  • Understand DB2: Learning Visually with Examples (DB2: изучаем на наглядных примерах): Знакомимся с DB2 версии 8.2 наглядно, шаг за шагом, изучая десятки примеров и конкретных случаев, которые автор извлек из своего уникального опыта работы в качестве консультанта по DB2. Второе издание этой книги было написано о DB2 9.5, его выход планировался на конец 2007 года;(EN)
  • DB2 V8 Handbook (Справочник по DB2 версии 8)): прочитайте исчерпывающее руководство по администрированию и разработке DB2 Universal Database версии 8 для UNIX, Linux и Windows;(EN)
  • Справочники IBM Redbook содержат технические советы по DB2 и родственным продуктам для управления информацией (Information Management);(EN)
  • IBM DB2 Version 9 New Features (Новые функции и особенности IBM DB2 версии 9): Изучайте DB2 9;(EN)
  • Ищите в интернет-магазине технической книги издания по этой и другим техническим темам; (EN)
  • В статье DB2 Basics: Table Spaces and Buffer Pools (Основы DB2: пространства таблиц и буферные пулы) (developerWorks, декабрь 2002 г.). рассказывается о важности пространств таблиц и буферных пулов и объясняется, как можно повысить производительность базы данных в результате их правильной разработки и оптимизации;(EN)
  • Tips for improving INSERT performance (Советы по повышению производительности операций INSERT) (developerWorks, март 2004 г.). Узнайте, что именно происходит в момент операции вставки insert, рассмотрите альтернативы и исследуйте проблемы, которые влияют на производительность операции insert - блокировки, на обслуживание индексов и управление ограничениями;(EN)
  • Lock avoidance in DB2 UDB V8 (Предотвращение блокировок в DB2 UDB V8) (сайт developerWorks, сентябрь 2005 г.). Разберитесь, как в DB2 UDB работает блокировка строк и узнайте, как можно повысить параллелизм сканирований, задерживая блокировку строки до тех пор, пока не будет определено, что строка удовлетворяет запросу;(EN)
  • Раздел Information Management сайта developerWorks: узнайте больше о DB2. Здесь вы найдете техническую документацию, обучающие статьи, информацию о курсах, продукты для загрузки, информацию о продуктах и многое другое;
  • DB2 SQL PL: Essential Guide for DB2 UDB on Linux, UNIX, Windows, i5/OS, and z/OS, 2nd Edition (DB2 SQL PL: краткое руководство по DB2 UDB для Linux, UNIX, Windows, i5/OS и z/OS), 2-е издание. Полезная информация по разработке и созданию кода хранимых процедур;
  • Следите за анонсами событий и подкастами на сайте developerWorks.(EN)

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=348168
ArticleTitle=Передовые методы, способствующие более эффективному проектированию, повышению производительности и управляемости DB2
publish-date=10272008