среда, 9 марта 2011 г.

Управляй дисками в Informix легко

В Информиксе начиная с версии 11.70 можно автоматизировать управление дисковым пространством. Теперь можно сконфигурировать Informix на автоматическое изменение размеров чанков или пространств данных, причем дисковое пространство будет браться из одного или нескольких заранее определенных дисковых пулов (storage pool). Чанки для которых разрешено автоматическое расширение, имеют в статусе флагов в 5-й позиции букву E (expanded ?), а для автоматических dbspace в поле flags в 5-й позиции будет стоять буква A (Automatic ?). Дисковый пул (их может быть несколько) может состоять из файлов, сырых устройств или каталогов, для него можно задавать приоритет по которому будет выделятся первоочередной пул.

По умолчанию все dbspace являются автоматически расширяемыми, за это отвечает параметр конфигурации сервера SP_AUTOEXPAND. Также можно настроить тип автоматического расширения: проактивный, при котором пространства расширяются заранее или реактивный, при котором расширение происходит только после полного заполнения пространства с данными, см. параметр SP_THRESHOLD. Эти два параметра действуют на уровне экземпляра Informix.
Также настраивается размер автоматически создаваемого чанка (параметр create size) и размер расширения (параметр extend size). Эти параметры действуют на уровне отдельного dbspace.

Для примера создадим дисковый пул размером 1 Gb в каталоге на файловой системе, размер каждого выделяемого чанка в нем сделаем 100 Мб, и приоритет пула 1:

execute function sysadmin:task('storagepool add', '/datafs/informixdata/storagepool/', '0 MB', '1 GB', '100 MB', '1');

Кстати для каталогов нельзя задать максимальный размер пула, если задать отличный от 0 размер то будет выдана ошибка.

Затем создадим dbspace размером 100 Мб и размером страницы 4 Кб который возьмет место для себя из этого пула:

execute function sysadmin:task ('create dbspace from storagepool', 'testdbs', '100 MB', 4, 0);

Посмотреть какие дисковые пулы есть в Informix можно в таблице sysadmin:storagepool

Более подробно об автоматизации управления дисками можно прочитать в этой статье на сайте developerWorks.
Также см. документацию

среда, 1 декабря 2010 г.

Утилита клонирования ifxclone не работает в Innovator-C

Новая утилита ifxclone упрощает процедуру клонирования серверов для репликации. Для того чтобы создать клон сервера, достаточно скопировать конфиг исходного сервера, создать файлы чанков на целевом сервере и запустить на нем команду ifxclone с нужными параметрами. Т.е. не надо делать сначала бэкап, передачу архива и затем восстановение, с новой утилитой все можно сделать в одно действие. Проблема в том что клонирование не работает на Innovator-C: успешно клонируется rootdbs, а затем делается попытка запустить параллельное восстановление сервера, но не проходит поскольку в Innovator-C разрешено только последовательное восстановление.

Вот кусок журнала:

11:53:17  Physical Restore of rootdbs Completed.
11:53:17  Checkpoint Completed:  duration was 0 seconds.
11:53:17  Tue Nov 30 - loguniq 26, logpos 0x4540b0, timestamp: 0x1b3b54 Interval: 3035

11:53:17  Maximum server connections 0
11:53:17  The edition of Informix Dynamic Server currently running does not support
 parallel backup or restore. Stopping the current process.
11:53:17  Physical restore failed for dbspace number 3.
11:53:17  Snapshot instantiation failed, killing myself.
11:53:18  The Master Daemon Died
11:53:18  PANIC: Attempting to bring system down

Установка параметров отвечающих за параллельное бэкап/восстановление не помогает.

пятница, 12 ноября 2010 г.

IDS 11.70 вышел!

что нового:

Flexible Grid - нечто загадочное и в чем я еще не разобрался,
Быстрое клонирование Primary Server - обещают что теперь для инициализации репликации будет достаточно одной команды, которая автоматизирует процедуру архивации, передачи архива на другую систему и инициализации репликации.
Улучшения ER для поддержки Flexible Grid
Обновление и миграция с помощью ER - позволят избежать отключения серверов HA-кластера в процессе обновления версии ПО.
Улучшение поддержки высокой доступности: возможность продолжить начатые транзакции после сбоя и восстановления Primary Server. Единая команда для мониторинга HA-кластера. Возможность запуска на Secondary Servers операторов определения данных DML (т.е. create, alter и drop теперь можно запускать не только на Primary Servers).

Утилита для создания снапшотов экземпляров Informix (и/или их данных) для дальнейшего распространения.

Расширенная поддержка инфраструктуры хранилищ данных: новые директивы оптимизации, alter fragment online (без блокировки таблицы), новые стратегии фрагментации таблиц, дефрагментация таблиц имеющих много экстентов, отложенное распределение первого экстента при создании таблиц, можно задавать размер первого и следующего экстентов при
создании индекса, автоматическое выделение дискового пространства, статистика по фрагментам

Улучшения для разработки приложений:
- автоматическая регистрация датаблейдов
- отладка SPL в IBM DataStudio, IBM Optim Development Studio (ODS, version 2.2.1.0 or later), или Microsoft Visual Studio
- улучшения SQL синтаксиса, в т.ч. поддержка create table if not exists
- автоматическое отключение сессий, которые долгое время ничего не делают
- другие улучшения

- Выборочный потабличный аудит

и другие возможности. Более подробно читайте в документации по IDS 11.70

вторник, 26 октября 2010 г.

Скажи нет JFS и RAID5 для файлов баз данных

No JFS, no RAID5 ?


Интересная заметка в блоге Art Kagel на тему использования журналируемых ФС для файлов баз данных. Вообще я давно подозревал что дополнительное журналирование на уровне файловой системы (ФС) ухудшает производительность СУБД. Во первых СУБД и так обеспечивает журналирование и восстановление данных, это заложено в ее архитектуру. Может быть журналирование на уровне ФС обеспечит дополнительную защиту? Но оказывается что это не так. Дополнительный слой в виде журналирования ФС может снизить надежность хранения данных. Даже если производится только журналирование метаданных - результат скажется на производительности базы, поскольку на уровне ФС блоки файлов данных базы могут оказатся в разных местах диска и возрастет фрагментация.
Автор заметки предлагает использовать для хранения файлов базы либо сырые устройства, что логично, или старую добрую ext2 которая не имеет журналирования.
Вот что касается опции журналирования - ее что, совсем нельзя отключить на ext4 например? А JFS в AIX, у нее как обстоят с этим дела?

вторник, 12 октября 2010 г.

План запроса? Легко!

Informix складывает план запросов в файл в домашнем каталоге пользователя на сервере. Поэтому возникает некоторое неудобство когда требуется получить план запроса: надо запустить запрос, затем переключится в консоль, подключится к серверу, открыть файл и смотреть полученный файл с планом запроса. Дополнительные вопросы возникают если пользователи не заведены на сервере где запущен экземпляр Informix и соответственно не имеют домашних каталогов. Я решил эту задачу таким образом, что теперь не надо переключаться в консоль и идти на сам сервер, чтобы посмотреть план запроса. Планы запросов теперь складываются в отдельную таблицу в базе и их можно смотреть с помощью обычных sql-запросов. Но обо всем по порядку. Схема работы для получения плана запроса в данном случае такая (предварительно надо установить две функции):

1. Запускаем функцию start_explain() которая производит некоторые подготовительные действия и включает explain
2. Запускаем анализируемый запрос (или несколько запросов)
3. Запускаем функцию stop_explain() - план запроса возвращает функция.

На самом деле на шаге 2 лучше запускать 1 запрос, просто из-за удобства дальнейшего просмотра плана.

Итак, что же делает функция start_explain() ? Все очень просто: она готовит файл для плана запроса на сервере, и включает explain.
Функция stop_explain() читает данный файл и возвращает его содержимое. Этот текст можно скопировать и работать с ним.

Функции start_explain и stop_explain следует устанавливать либо в базу где они будут использоваться, или например в какую то отдельную базу и обращаться к ним из любой базы по имени dbname:start_explain() и dbname:stop_explain. Для обращения из другой базы надо выдать пользователям привилегию connect на базу где эти функции находятся.

Исходные коды функций start_explain и stop_explain можно взять на сайте проекта. Поддерживается версия Informix 11.50.xC6 и выше, поскольку использует external table. Пока работает только на Unix-платформах.

четверг, 30 сентября 2010 г.

IBM выпустила бесплатную версию Informix

Мощный двигатель вашего бизнеса - бесплатно

Informix Innovator-C - бесплатная редакция СУБД Informix. Новость немного устарела, поскольку эта редакция была выпущена IBM еще в июне этого года. Эта версия имеет следующие возможности:

- использует 1 физический процессор с не более чем 4 ядрами (вы можете запустить его и на более мощных процессорах, но использоваться будут только максимум 4 ядра)
- использование не более 2 Gb RAM на установку
- неограниченное! дисковое пространство для базы данных
- бесплатна для разработки, тестирования и производства
- поддерживает HDR включая обновляемый Secondary сервер (обновляемый Standby в терминологии других СУБД)
- поддерживает ER (потабличная репликация)
- поддержка Continuous Log Restore (CLR) secondary
- а также поддержка DataBlade и Java UDR
- Informix Innovator-C поддерживает платформы: Linux 32 и 64bit, Windows, AIX, Solaris, Mac

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

Немного информации для тех кто не знаком ранее с технологиями Informix.

Технология HDR (High-availability Data Replication) обеспечивает поддержку высокой доступности данных, это возможность реплицировать данные всего сервера баз данных по сети на вторичный сервер в синхронном или асинхронном режимах, что позволяет иметь запасной резервный сервер баз данных на случай сбоя основного сервера СУБД. Кроме того вторичный экземпляр СУБД может выполнять запросы только для чтения или даже обновлять данные. HDR проста в установке и обслуживании.

Технология ER (Enterprise Replication) это потабличная репликация данных на удаленный сервер с разными режимами. Innovator-C поддерживает Multu-Master репликацию, т.е. в обе стороны.

Continuous Log Restore (CLR) secondary позволяет подключить дополнительный экземпляр СУБД, на который передавать журналы транзакций, что обеспечивает систему дополнительной копией данных основного сервера.

Лицензия позволяет использовать для Informix Innovator-C с 1 основным и 1 вторичным сервером HDR. Также можно включить ER репликацию с двумя узлами.

Скачать Informix Innovator-C для разных платформ можно на сайте IBM, предварительно надо зарегистрироваться.

понедельник, 31 мая 2010 г.

Динамический запуск листенеров

Начиная с версии 11.50.xC6 в Informix появилась возможность динамического создания листенеров. Предыдущие версии позволяли конфигурировать и запускать новые листенеры только путем перезапуска всего экземпляра сервера, что иногда создавало определенные неудобства. Теперь можно проводить запуск-останов листенера без перезапуска всего сервера. Для этого используется команда  

onmode -P [start|stop|restart] servername

перед ее использованием надо чтобы в файле $INFORMIXDIR/etc/sqlhosts был определен необходимый алиас (алиас можно занести в файл sqlhosts также без перезапуска сервера). Т.е. сценарий работы такой: определяем необходимый алиас srvname в файле sqlhosts, если хотим запустить новый листенер, затем запускаем этот алиас с помощью команды onmode -P start srvname и подключаем к нему клиентские приложения. Если небходимо остановить этот алиас, то запускаем команду onmode -P stop srvname. В online.log при этом будут появлятся сообщения о запуске или останове этих алиасов.
Посмотреть какие листенеры запущены в данный момент можно с помощью команды onstat -g ntt.