IBM® Informix® 12.10

Размер совместной памяти

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

Выводимая утилитой onstat строка заголовка содержит размер совместной памяти сервера баз данных в КБ. Вы также можете при помощи команды onstat -g seg проконтролировать, какой объем памяти сервер баз данных выделяет каждой части совместной памяти. Информацию о том, как использовать утилиту onstat, смотрите в публикации IBM Informix Administrator's Reference.

Вы можете задать параметр SHMTOTAL в файле onconfig, чтобы ограничить объем служебной памяти, которую сервер баз данных может разместить на вашем компьютере или узле. Параметр SHMTOTAL задает общий объем совместной памяти, которую сервер баз данных может использовать для выделения всех частей памяти. Однако некоторые операции могут завершиться неудачно, если серверу баз данных потребуется больше памяти, чем задано при помощи параметра SHMTOTAL. Если возникнет такое условие, сервер баз данных выведет в журнал сообщений сообщение следующего вида:
размер резидентного + виртуальных сегментов x + y >  z 
   общая величина, разрешенная параметром конфигурации SHMTOTAL
Кроме того, сервер баз данных возвратит сообщение об ошибке программе, инициировавшей неудачную операцию. Например, если серверу баз данных при выполнении такой операции, как построение индекса или хэш-объединение, потребуется больше памяти, чем вы указали при помощи параметра SHMTOTAL, он возвратит программе сообщение об ошибке, аналогичное одному из приведенных ниже:
-567    Невозможно записать сортированные строки.
-116    Ошибка ISAM: невозможно выделить память.

После того как сервер баз данных отправить сообщение, он произведет откат всех неполных результатов, полученных при выполнении неудачного запроса.

Такие внутренние операции, как очистка страниц или обработка контрольной точки, также могут привести к тому, что сервер баз данных превысит предельное значение, заданное параметром SHMTOTAL. Если такое произойдет, сервер баз данных направит сообщение в журнал сообщений. Допустим, что сервер баз данных неудачно попытался выделить дополнительную память для операций очистки страниц. Вследствие этого сервер баз данных направит в журнал сообщений сообщение примерно следующего содержания:
17:19:13          Ошибка подтверждения: ПРЕДУПРЕЖДЕНИЕ! Нет памяти для чистильщиков страниц
17:19:13 Кто: Поток(11, flush_sub(0), 9a8444, 1)
17:19:13 Результ.: Сервер бд может оказаться неспособен выполнить обр. контр. точки
17:19:13 Действие: Выделите серверу баз данных дополнительную виртуальную память
17:19:13 Смотрите также: /tmp/af.c4 

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


Отправить отзыв | Обмен примерами | Устранение неисправностей

Публикации в формате PDF смотрите по адресу Publications for the IBM Informix 12.10 family of products (Публикации для семейства продуктов IBM Informix 12.10).
Замечания по выпуску, документации и/или различным платформам смотрите на странице Замечания по выпуску.
 отметка времени Дата выпуска: март 2013 г.