четверг, 19 июля 2007 г.

Informix 11.10.UC1

Скачали Informix 11.10.UC1 с сайта IBM, это уже не бета-версия. Поставил на AIX. Изменился консольный инсталлер - теперь предлагает после установки помимо прочего сконфигурить и установить тестовый инстанс информикса. Изучаем.

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

понедельник, 16 июля 2007 г.

Конфигурируем тестовый сервер - Часть 2

Продолжение. Первая часть здесь.

Конфигурационные параметры информикса находятся в файлах onconfig.$INFORMIXSERVER и sqlhosts. Например конфигурация экземпляра информикса tst_on находится в файле onconfig.tst_on. Можно конечно назвать конфигурационный файл как угодно, лишь бы это название было установлено в переменной окружения ONCONFIG, но приведенный выше пример удобен тем что позволяет понять к какому информиксу относится конфигурационный файл. Каждый экземпляр информикса должен иметь свой конфигурационный файл.
Чтобы экземпляр мог принимать подключения к базам данных, необходимо занести некоторую информацию о подключении в файл sqlhosts.
Оба этих файла должны находится в каталоге $INFORMIXDIR/etc

Примечание
Для Windows файл sqlhosts заменен веткой реестра, доступ к которой можно получить либо напрямую с помощью regedit либо через программу SetNet32.
В Linux (или в другом Unix) sqlhosts это обычный текстовый файл.

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

Начнем с файла ONCONFIG

указываем параметры системного дбспейса ROOTDBS

ROOTNAME rootdbs # Root dbspace name
ROOTPATH /informix/data/raw_root # Path for device containing root dbspace
ROOTOFFSET 0 # Делаем смещение 0 потому что чанки на файлах
ROOTSIZE 100000 # Size of root dbspace (Kbytes)

/informix/data/rootdbs_tst - это путевое имя для Linux, для Windows оно может быть например таким C:\InformixData\rootdbs_tst
В тестовом сервере будем использовать чанки в файлах, поэтому смещение внутри чанка можно указывать 0. В промышленных серверах Informix выгоднее с т.з. производительности и надежности использовать сырые устройства (raw device) или устройства с прямым доступом минуя кэш операционной системы, и в некоторых случаях смещение для таких устройств должно быть ненулевым, например при использовании Logical Volume Manager.

Параметры физического журнала

Физический журнал это то место куда информикс записывает before image (исходных образов) страниц с данными перед их модификацией для обеспечения отказоустойчивости при возможных сбоях оборудования или программного обеспечения. Для тестового сервера расположение физ. журнала делаем в ROOTDBS, в дальнейшем его можно будет перенести в отдельный dbspace. Размер делаем 50 Mb что вполне достаточно для тестирования.

PHYSDBS rootdbs_tst_on # Location (dbspace) of physical log
PHYSFILE 51200 # Physical log file size (Kbytes)

Параметры логического журнала

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

LOGFILES 10 # Number of logical log files
LOGSIZE 51200 # Logical log size (Kbytes)

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

Журнал сообщений

Это текстовый файл, сюда информикс пишет сведения о событиях на сервере: информация о чекпоинтах, добавленных блокировках и сегментах памяти, ошибках, кол-во максимальных подключений и некоторая другая полезная для администратора Информикса информация.

MSGPATH /informix/online.tst_on.log # System message log file path

Номер и имя экземпляра Информикса

Номер экземпляра Информикса это уникальный идентификатор от 0 до 255 именно столько экземпляров информикса (не путать с базами данных!) может быть запущено одновременно в операционной системе. Номер экземпляра также указывает смещение для сегментов в разделяемой памяти ОС, именно поэтому не должно быть двух экземпляров с одинаковыми SERVERNUM которые запущены на одном хосте. Имя также служит для обращения к нужному экземпляру и как связь с записями в файле sqlhosts (об этом файле позже).

SERVERNUM 0 # Unique id corresponding to a OnLine instance
DBSERVERNAME tst_on # Name of default database server

Параметры архивации сервера и файлов логического журнала

Мы настраиваем тестовый сервер, но без архивации транзакций не обойтись, заодно настроим архивацию данных. Выберу самый простой способ: архивацию на файловую систему. Итак необходимые параметры для настройки:

# System Archive Tape Device

TAPEDEV /dev/null # Tape device path
TAPEBLK 32 # Tape block size (Kbytes)
TAPESIZE 102400 # Maximum amount of data to put on tape (Kbytes)


# Log Archive Tape Device

LTAPEDEV /dev/null # Log tape device path
LTAPEBLK 32 # Log tape block size (Kbytes)
LTAPESIZE 102400 # Max amount of data to put on log tape (Kbytes)

ALARMPROGRAM /informix/d03_on/etc/no_log.sh # Alarm program path

Как видим все данные в процессе архивации складываются в /dev/null, т.е. попросту в никуда. Для учебного тестового сервера это нормально, но такое нельзя делать для рабочего сервера, поскольку тогда в случае повреждения данных восстановить такой бэкап будет невозможно. Поэтому если требуется проводить нормальную архивацию данных и журналов с возможностью восстановления, эти параметры надо настроить например так:

# System Archive Tape Device

TAPEDEV /informix/backup/data # Tape device path
TAPEBLK 32 # Tape block size (Kbytes)
TAPESIZE 102400 # Maximum amount of data to put on tape (Kbytes)


# Log Archive Tape Device

LTAPEDEV /informix/backup/logs # Log tape device path
LTAPEBLK 32 # Log tape block size (Kbytes)
LTAPESIZE 102400 # Max amount of data to put on log tape (Kbytes)

ALARMPROGRAM /informix/d03_on/etc/log_full.sh # Alarm program path

Конечно же файлы указанные в TAPEDEV и LTAPEDEV должны сущестовать и иметь права доступа -rw-rw---- informix informix

В принципе настройки приведенных выше параметров достаточно для запуска тестового экземпляра информикса.

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

tst_on onsoctcp d03 1526

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

пятница, 15 июня 2007 г.

IBM Informix 11 Cheetah

Ура! Приятная новость от IBM. 12 июня официально представлена новая версия IBM Informix Dynamic Server 11 Cheetah. Для общего доступа ее предполагают выложить в июле, также будет выложена специальная educational версия. Новость взята из рассылки iiug.org
Основные преимущества новой версии:
- множество secondary серверов Remote Standalone Secondary (это улучшенная версия Informix HDR, которая позволяет подключать к одному primary серверу несколько secondary)
- возможность работы нескольких экземпляров с общим набором физических дисков Shared Disk Secondary
- sql интерфейс для администраторов
- Continuous Log Restore - алтернативный вариант HDR при котором журналы транзакций передаются и накатываются на вторичный сервер вручную
- другие улучшения

Informix Cheetah - производительность, которую чувствуешь

June 12, 2007, IBM Informix Dynamic Server has officially been announced with all its features. The actual product will be available in July 2007 for General Availability and the special IIUG Educational version for all IIUG members should be available no later than Aug 1, 2007.

четверг, 24 мая 2007 г.

Конфигурируем тестовый сервер - часть 1

Итак, вы выбрали самый современный (здесь и далее речь идет о 9.4 или 10 версии Информикса если не сказано иначе) и самый быстрый а также самый нетребовательный к ресурсам сервер баз данных Информикс и установили его. С чего начать? Конечно же с конфигурации и запуска тестового экземпляра!
Если Информикс установлен в Windows, то конфигуратор должен был предложить в процессе установки создание экземпляра Информикса, и фактически этот раздел можно пропустить (что я все равно делать не советую). Если вы ставили Информикс в Linux или другой *nix ОС, то обязательно читайте дальше.

Во первых, чтобы получить доступ к Информиксу из консоли (в Linux или Windows, о сервисе Windows напишу позже) требуется прочитать документацию установить ряд переменных окружения для текущего подключения. Вот основные переменные:

INFORMIXDIR - полное путевое имя каталога установки Информикса, например /informix/infx10uc6
INFORMIXSERVER - имя экземпляра Информикса например ids_10uc6
ONCONFIG - название конфигурационного файла (без полного пути!) например onconfig.ids_10uc6
PATH - путь к исполняемым файлам в т.ч. Информикса
CLIENT_LOCALE - локаль клиентского приложения, например ru_ru.1251

В Linux значение переменной например ставим так:
export INFORMIXDIR=/informix/infx10uc6

в Windows
set INFORMIXDIR=C:\Informix

Чтобы устанавливать окружение в консоли для нужного сервера Информикс быстро, рекомендую записать окружение в текстовый файл tst_on.env в домашнем каталоге информикса, и выдать разрешение на запуск chmod u+x tst_on.env
Теперь достаточно после подключения на сервер консолью применить окружение выполнив скрипт:
. tst_on.env
и после этого будет доступно управление экземпляром.

В Windows как я писал выше, процесс конфигурирования нового экземпляра Информикса немного отличается от Linux. Связано это с тем, что в виндах экземпляр информикса выполняется как сервис, поэтому для создания экземпляра необходимо использовать программу Server Instance Manager которая вызывается из меню "Пуск" после установки Информикса. После создания экземпляра в группе программ Информикса появится ярлык консоли с готовым окружением нового сервера. При необходимости это окружение можно посмотреть и модифицировать, оно находится в каталоге установки Информикса в файле имя_сервера.cmd

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

Во второй части поговорим о конфигурации информикса.

среда, 16 мая 2007 г.

Упреждающее чтение

Когда пользовательская нить читает данные, сначала она ищет необходимые ей страницы с данными в буферном пуле. Затем, если требуется, и не все данные оказались в буферах, нужные страницы с данными подгружаются в буферный пул с диска. Наиболее эффективное чтение происходит, когда сервер читает данные с диска не по отдельным страницам, а блоками по несколько страниц. Такое поведение в Информиксе реализовано, когда происходит последовательное сканирование таблицы или индекса в поисках нужных данных. Называется оно упреждающим чтением (Read Ahead). Можно настроить Информикс на чтение блоками по заданному кол-ву страниц, для этого служат параметры

RA_PAGES # Кол-во страниц упреждающего чтения
RA_THRESHOLD # Кол-во страниц которые не обработаны, и после которого начинается новое чтение

Условие использования упреждающего чтения - это последовательное сканирование. Если сервер выбрал для запроса последовательное сканирование, то будет включено упреждающее чтение для запроса.

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

Условия для включения Light Scans в сессии:
- оптимизатор выбирает последовательное сканирование
- кол-во страниц в таблице больше чем число буферов в буферном пуле
- уровень изоляции сессии Dirty Read, Repeatable Read, Commited Read

Чтобы узнать, использует ли сессия Light Scans следуеть посмотреть вывод onstat -g ses sesid, раздел Memory pools, там могут быть пулы light_scan, lt_scan_rbuff, lt_scan_bufs. Или посмотреть выделенные фрагменты для пула с помощью onstat -g afr sesid (там может быть пул с именем light_scan). Далее можно посмотреть вывод команды onstat -g lsc.

Размер буферов для Light Scans вычисляется вот так:

( ( RA_PAGES + RA_THRESHOLD)/(MAXAIOSIZE + PAGESIZE))

понедельник, 7 мая 2007 г.

Где хранятся данные или немного терминов

Данные хранятся на дисках, где же еще :)

Вообще все базы данных, таблицы и индексы а также хранимые процедуры Информикс хранит в "контейнерах" на дисках (в файлах или на неразмеченных областях диска), логическая единица хранения это dbspace.
DbSpace - это то место где находятся таблицы или индексы баз данных. Он состоит из одного или нескольких файлов (или неразмеченных устройств), которые называются чанками (chunk). На сервере может быть много dbspace. Понятно что один чанк может принадлежать только одному dbspace. По мере заполнения dbspace данными к нему добавляются администратором сервера новые чанки.

Лирическое отступление. Раньше размер чанка был ограничен 2 Gb, и несмотря на то что чанков в dbspace может быть очень много, это создавало определенные неудобства в средних и больших базах. Начиная с версии IDS 9.30 это ограничение снято, и теперь отдельный чанк может иметь размер хоть 100 гигабайт и даже больше. Ну а dbspace при этом может и вовсе быть на сотни терабайт.

среда, 2 мая 2007 г.

Informix - где скачать

Чтобы попробовать информикс в деле, его можно скачать здесь Informix Dynamic Server Enterprise Edition V10.0 (триальная 90-дневная полнофункциональная версия v10 ) варианты для платформ AIX, HP, Linux, Solaris, Windows.

Вместе с дистрибутивом идет документация по установке СУБД. Для установки требуется 750 Мб дискового пространства, 256 Мб (заявленный минимум, но ставиться и работает и при меньшем объеме) оперативной памяти.

Если хочется иметь бесплатный Информикс без ограничений на время работы, то можно скачать вариант IDS 10 Workgroup Edition с ограничением на кол-во одновременных подключений с сайта Интернациональной группы пользователей Информикс (предварительно там надо зарегистрироваться). Версия предлагаемая членам IIUG бесплатна, не имеет ограничения на время работы, и есть ограничение не более 5 одновременных подключений. Предлагаются варианты для всех распространенных платформ.

Дополнение от 18.02.2008
Вышла девелоперская версия информикса, которую можно использовать бесплатно. Подробно читать здесь: IDS Cheetah Developer Edition

Дополнение от 24.11.2011
Бесплатную (в т.ч. для промышленного использования) версию Informix Innovator-C можно скачать здесь Innovator-C Edition (требует регистрации на сайте). Доступны версии для разных платформ.