powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Несколько вопросов по оптимизации СУБД
25 сообщений из 48, страница 1 из 2
Несколько вопросов по оптимизации СУБД
    #32886153
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста:

1) документацию по вопросам оптимизации производительности
2) как можно следить (вести логи) активности пользователей? а именно кто в данный момент выполняет какой запрос и сколько CPU использует данный пользователь? есть ли что-то более продвинутое, чем onstat -g sql? хотелось бы видеть всю историю запросов включая время их выполнения. Можно такое сделать?
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32886950
shurale
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Я вам не скажу за всю Одессу", но для IDS 7.31

1) Perfomance guide for Informix Dynamic server. Есть в комплекте документации, поставляемом с Informix-ом (Informix Answers Online).

2) onstat -g ses использует описанные в документации SMI таблицы syssessions и syssesprof и неописанную syssqlcurses (все - в базе sysmaster). Логов и истории там нет, но про существующие сессии можно узнать почти всё, что тебе нужно.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32887565
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genixПодскажите, пожалуйста:

1) документацию по вопросам оптимизации производительности
2) как можно следить (вести логи) активности пользователей? а именно кто в данный момент выполняет какой запрос и сколько CPU использует данный пользователь? есть ли что-то более продвинутое, чем onstat -g sql? хотелось бы видеть всю историю запросов включая время их выполнения. Можно такое сделать?
genix ты задаешь тучи вопросов, но ответов не получаешь. А знаешь почему? Потому что ты пытаешься применить практики знакомые тебе по другим СУБД. Не говори у меня такие-то проблемы, раскажи сначала про задачу. Ты на первом повороте пошел не в ту сторону, зашел в дремучий лес и теперь спрашиваешь где выход?
Например никто в информикс видимо не пользуется rowtype и не выполняет "CREATE TEMP TABLE tablename OF TYPE subty", потому что есть более простой путь, для создания временных таблиц.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32887599
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genixПодскажите, пожалуйста:

1) документацию по вопросам оптимизации производительности

IBM Informix Dynamic Server Performance Guide, Version 9.4 (G251-1259-00)

genix
2) как можно следить (вести логи) активности пользователей?

По простому никак, и зачем это надо? Если для производительности, то проще на клиенте, замерять время выполнения запроса и логировать длительные.

genix
а именно кто в данный момент выполняет какой запрос и сколько CPU использует данный пользователь? есть ли что-то более продвинутое, чем

onstat -g ses <sesid> показывет текущий(последний отпарсенный) sql запрос. Сколько CPU использует данный пользователь в общем случае узнать нельзя да и пользы никакой.

Если есть проблемы с производительностью то надо задавать другие вопросы и себе и нам, какие? см. faq
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32887704
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис
genix ты задаешь тучи вопросов, но ответов не получаешь. А знаешь почему? Потому что ты пытаешься применить практики знакомые тебе по другим СУБД. Не говори у меня такие-то проблемы, раскажи сначала про задачу. Ты на первом повороте пошел не в ту сторону, зашел в дремучий лес и теперь спрашиваешь где выход?

Ну что-ж, попробую начать новую жизнь! $)

Итак, на небольшой базе под IDS 7.31.UD2 время от времени простенькие запросы к небольшой табличке выполняются разное количество времени.
Т.е., 99% времени они выполняются в среднем быстрее 1 секунды, однако иногда выполнение длится дольше 3 секунд и даже дольше 8 (доходило до 10).
Соответственно работа клиентов в этот момент блокируется (на некоторое время).
Соответсвено я сделал вывод (возможно не правильный), что кто-то в этот момент нагружает СУБД своими садистскими запросами.
Подскажите, с чего начать анализ происходящего в системе и разобраться с происходящим?

Доп. инфо: количество ovbuf (смотрю по onstat -p) в этот момент не увеличивается (оно уже давно стоит в значении 332), остальные ov[lock|userthread] нулевые.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32887780
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genix
Итак, на небольшой базе под IDS 7.31.UD2 время от времени простенькие запросы к небольшой табличке выполняются разное количество времени.
Т.е., 99% времени они выполняются в среднем быстрее 1 секунды, однако иногда выполнение длится дольше 3 секунд и даже дольше 8 (доходило до 10).
Соответственно работа клиентов в этот момент блокируется (на некоторое время).

Плохо что ты не сказал какой запрос Select или ?
Информикс блокировочник, поэтому пишущие блокируют не только пишущих но и читающих. В твоем случае очень похоже что твой запрос натыкается на чужую блокировку. А еще это похоже на чекпоинт :)
Информация о чекпоинтах отражается в логе (online.log), и в выводе утилиты onstat (в первой строке пишется состояние информикса обычно online).
Чего ожидает сессия можно понять по флагам выдержка из faq :
faq
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Q.> когда поглядел onstat -u вот что увидел
>Userthreads
>address flags sessid user tty wait tout locks nreads nwrites
>1012e018 ---P--D 1 informix - 0 0 0 139 372
>            ^^^^
> этих флажков
> я зе знаю
>рапишите пожалуйста что они означают

A.> Все хором, читай "Administrator Guide".
A.> Василий Шульженко
* Что обозначают флажки в выводе onstat -u ?
---------------------------------------------
Для 7.31:
Флаги обозначают статус сессии или ее отдельных нитей (если нитей
несколько).
Коды флага для 1-й позиции: (причина ожидания)
B waiting on a buffer
C waiting on a checkpoint
G waiting on a write of the logical-log buffer
L waiting on a lock
S waiting on mutex
T waiting on a transaction
Y waiting on condition - стандартное состояние
X waiting on a transaction cleanup (rollback) 
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32887857
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неприятная ситуация с нерегулярно возникающей проблемой.
Напиши скрипт, имитирующий похожий запрос, который будет ждать 5 секунд окончания запроса и если нет - то сохранять в файле вывод команд onstat -a, onstat -g all, iostat, vmstat
После этого можно начинать разбираться.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32887870
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем, завтра буду разбираться подробнее!!
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32887872
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис genix
Итак, на небольшой базе под IDS 7.31.UD2 время от времени простенькие запросы к небольшой табличке выполняются разное количество времени.
Т.е., 99% времени они выполняются в среднем быстрее 1 секунды, однако иногда выполнение длится дольше 3 секунд и даже дольше 8 (доходило до 10).
Соответственно работа клиентов в этот момент блокируется (на некоторое время).

Плохо что ты не сказал какой запрос Select или ?
Информикс блокировочник, поэтому пишущие блокируют не только пишущих но и читающих. В твоем случае очень похоже что твой запрос натыкается на чужую блокировку. А еще это похоже на чекпоинт :)


Checkpoints don't affect reading.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32888430
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vybegallo Журавлев Денис genix
Итак, на небольшой базе под IDS 7.31.UD2 время от времени простенькие запросы к небольшой табличке выполняются разное количество времени.
Т.е., 99% времени они выполняются в среднем быстрее 1 секунды, однако иногда выполнение длится дольше 3 секунд и даже дольше 8 (доходило до 10).
Соответственно работа клиентов в этот момент блокируется (на некоторое время).

Плохо что ты не сказал какой запрос Select или ?
Информикс блокировочник, поэтому пишущие блокируют не только пишущих но и читающих. В твоем случае очень похоже что твой запрос натыкается на чужую блокировку. А еще это похоже на чекпоинт :)


Checkpoints don't affect reading.
А где сказано что запрос(ы?) читают? -- "Т.е., 99% времени они выполняются в среднем быстрее 1 секунды..."
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32888440
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"vmstat"
procsyssqlcurseos y memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 20176 11820 19940 864956 0 0 0 1 1 0 0 0 1


а также

"iostat"
Linux 2.4.22 ( ) 28.01.2005

avg-cpu: %user %nice %sys %idle
1,86 0,00 0,12 98,01

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn



Выводы onstat очень большие, стоит ли приводить их? Если да, то какие части?
Смущает вот это:

"onstat -g all"
Virtual processor summary:
class vps usercpu syscpu total
cpu 1 344444.70 4371.33 348816.03
aio 48 2956.30 5790.85 8747.15
lio 1 11.51 53.15 64.66
pio 1 11.42 57.28 68.70
adm 1 64.16 109.97 174.13
soc 1 409.22 1614.68 2023.90
msc 1 15.01 7.76 22.77
total 54 347912.32 12005.02 359917.34


то что cpu = 1, хотя машина 2х процессорная. Корректно ли это с точки зрения оптимизации работы informix'а?
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32888444
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис
А где сказано что запрос(ы?) читают? -- "Т.е., 99% времени они выполняются в среднем быстрее 1 секунды..."

тестирую запросами на чтение (количество секунд задержки соответствует 1 писку из спикера)
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32888460
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис
Q.> когда поглядел onstat -u вот что увидел
>Userthreads
>address flags sessid user tty wait tout locks nreads nwrites
>1012e018 ---P--D 1 informix - 0 0 0 139 372
> ^^^^
> этих флажков
> я зе знаю


встречаются в основном такие :
пользовательские сессии:
2301e55c Y--P--- (около 30 шт)
2301ea58 Y-BP--- (2 шт)

root'овые сесии:
23010510 ---P--F (4 шт, пользователь root)
23012cf0 ---P--D (2 шт. пользователь root)
23011dfc ---P--B (1 шт, пользователь root)

итого
37 active, 128 total, 58 maximum concurrent
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32888464
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genix
встречаются в основном такие :
пользовательские сессии:
2301e55c Y--P--- (около 30 шт)
2301ea58 Y-BP--- (2 шт)

Я имел в виду что надо смотреть на первый символ флагов сессии которая не отвечает, Y - это обычное состояние (ничего не ждем).
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32890070
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot genix то что cpu = 1, хотя машина 2х процессорная. Корректно ли это с точки зрения оптимизации работы informix'а?[/quot]
Просто такой параметр задан у тебя в конфигурационном файле onconfig.
Это значит, что есть только один виртуальный процессор, отвечающий за обработку запросов, а это, в свою очередь, говорит о том, что длительное выполнение какого либо процесса (DSS), связанное с процессорным временем (сортировка, например, или формирование отчета), будет тормозить выполнение всей очереди коротких OLTP-запросов, стоящих на обслуживание.
Если сервер на самом деле 2-х процессорный (а не HiperThreding), то можно установить параметры (все три взаимосвязаны).
MULTIPROCESSOR 1 # 0 for single-processor, 1 for multi-processor
NUMCPUVPS 2 # Number of user (cpu) vps
SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps to one
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32890080
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis
MULTIPROCESSOR 1 # 0 for single-processor, 1 for multi-processor
NUMCPUVPS 2 # Number of user (cpu) vps
SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps to one

Спасибо, попробую!
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32890107
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще меня смущают следующие цифры
Virtual processor summary:
class vps usercpu syscpu total
cpu 1 344444.70 4371.33 348816.03

Это за какой же период собрана статистика ?
И уж больно большое соотношение usercpu к syscpu.
Или ввода/вівода очень мало или ...что то тут не так :)
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32890130
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisИ еще меня смущают следующие цифры
Virtual processor summary:
class vps usercpu syscpu total
cpu 1 344444.70 4371.33 348816.03

Это за какой же период собрана статистика ?
И уж больно большое соотношение usercpu к syscpu.
Или ввода/вівода очень мало или ...что то тут не так :)

если под периодом понимается uptime который можно посмотреть по onstat, то речь идет всего лишь о 110 днях
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32890138
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genix vasilisИ еще меня смущают следующие цифры
Virtual processor summary:
class vps usercpu syscpu total
cpu 1 344444.70 4371.33 348816.03

Это за какой же период собрана статистика ?
И уж больно большое соотношение usercpu к syscpu.
Или ввода/вівода очень мало или ...что то тут не так :)

если под периодом понимается uptime который можно посмотреть по onstat, то речь идет всего лишь о 110 днях
Нет, речь идет о времени, за которое собиралась статистика (она может обнуляться по onstat -z).
выполни лучше запрос по анализу загрузки проца. Только сначала обнули статистику, дай активно поработать серверу с час и покажи результат
-------------------------------------------------
-- Processor and main activity (CPU profile)
-- (whole instance)
--
-- V.Shulzhenko DBA_Tools 2004-05
-------------------------------------------------
set isolation to dirty read;
select
'===== CPU Profile ====' ______________
,DBINFO('dbhostname') hostname
,DBINFO('utc_to_datetime',sh_boottime) boot_time
,current year to second -
EXTEND(dbinfo('utc_to_datetime',sh_boottime),year to second) _running_time
,DBINFO('utc_to_datetime',sh_pfclrtime) zero_profile_time
,current year to second -
EXTEND(dbinfo('utc_to_datetime',sh_pfclrtime),year to second) statistic_time
,'-------------------------------' ______________
,'--Onconfig Effective--' __________
,(select cf_effective from sysconfig where cf_name='NUMCPUVPS') num_cpuvps
,(select cf_effective from sysconfig where cf_name='MULTIPROCESSOR') multiprocessor
,'-------------------------------' ______________
,'-- Stamp activity from boot --' __________
,sh_bootstamp boot_stamp
,sh_stamp current_stamp
,sh_stamp-sh_bootstamp _stamp_update
,round((sh_stamp-sh_bootstamp)/(sh_curtime-sh_boottime),4) _activity_psec
,'-- Processor Stat Time --' __________
,(select round(sum(usercpu),2) from sysvpprof) usercpu_time
,(select round(sum(syscpu),2) from sysvpprof) syscpu_time
,(select round(sum(usercpu+syscpu),2) from sysvpprof) _all_cpu_time
,(select round(sum(usercpu)/sum(usercpu+syscpu)*100,2) from sysvpprof) _user2sys_ratio
,round((select sum(usercpu+syscpu) from sysvpprof)/
(sh_curtime-sh_pfclrtime)*100,2) _IDS_cputime_ratio
,'-------------------------------' ______________
from sysshmvals;
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32890143
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilis
выполни лучше запрос по анализу загрузки проца. Только сначала обнули статистику, дай активно поработать серверу с час и покажи результат


теперь только в понедельник смогу ответить.

Еще раз премного благодарен за проявленое терпение!!!!!
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32890191
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй добавить еще один процессор. Это можно сделать динамически, без перезапуска oninit : onmode -p +1 CPU
Относительно какую часть вывода публиковать - интересуют onstat -u, onstat -g ath, onstat -g con в момент зависания контрольной сессии. И номер этой самой сессии.
Хорошо бы еще в скрипте перед выходом обнулять статистику onstat -z , чтобы быть уверенным что полученные результаты - за время прошедшее с последнего успешного запуска.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32891740
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) добавил еще один процессор, без перезагрузки oninit
2) обновил статистику
3) на сервере запустили построение реестра, которое обычно приводило к "задержкам" во время выполнения остальных запросов чтения. Пока все нормально, программа-детектор (которая пищала при тормозах) подозрительно молчит, простой (idle) процессоров (по sar) падает ниже 50% (раньше опускался минимум до 50, ниже нет) -- полагаю что это благодатное следствие работы на двух процессорах вместо одного.
4) запрос имени vasilis выдает:

______________ ===== CPU Profile ====
hostname xxxx.xxxxxxxx
boot_time 2004-10-10 13:49:03
_running_time 112 20:35:41
zero_profile_time 2005-01-31 08:41:00
statistic_time 0 01:43:44
______________ -------------------------------
__________ --Onconfig Effective--
num_cpuvps 2
multiprocessor 1
______________ -------------------------------
__________ -- Stamp activity from boot --
boot_stamp 655519076
current_stamp 967678658
_stamp_update 312159582
_activity_psec 32.0015


Спасибо, что не дали пропасть в трудный момент!
Премного благодарен за все полученные советы (в том числе и как правильно задавать вопросы)!
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32893442
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, концовку вывода запроса ты обрезал. тас как раз и хотел посмотреть загрузку процессоров.
Но раз помогло. то уже хорошо.
На будущее, можно указать в onconfig даже три или четыре CPU VP на двух физических процессорах, чтобы избежать торможений длительными процессами очереди коротких запросов. Общая эффективность работы сервера может быть немножко хуже (будет больше времени тратиться на переключение между VP и согласование работы), но эффективность обработки запросов улучшиться.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32893705
genix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisК сожалению, концовку вывода запроса ты обрезал. тас как раз и хотел посмотреть загрузку процессоров.

О-пс, посыпаю голову пеплом -- результат запроса оказался двухстраничным $)

vasilis
Но раз помогло. то уже хорошо.
На будущее, можно указать в onconfig даже три или четыре CPU VP на двух физических процессорах

А как лучше быть на 2-х процессорах с HT (Intel Xeon)? Указывать 2 (физических) или 4 (с учетом HT) процессора? Система (linux) видит в общей сложности 4 процессора.
...
Рейтинг: 0 / 0
Несколько вопросов по оптимизации СУБД
    #32894803
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genix
А как лучше быть на 2-х процессорах с HT (Intel Xeon)? Указывать 2 (физических) или 4 (с учетом HT) процессора? Система (linux) видит в общей сложности 4 процессора.
Да можно хоть 8. Я как то видел установленное количество в 20 CPU VP на два проца - и ничего, система жила нормально :)
Основной смысл в том, что CPU VP обслуживает больше 90% всей работы, необходимой для выполнения запросов, соответственно, именно он и потребляет основное процессорное время. Если запросы в чистом виде OLTP-шные (т.е. короткие по времени, без сканирования таблиц и процессорных вычислений), то и одного CPU VP вполне достаточно даже для двухпроцессорного хоста. При бОльшем кол-ве виртуальных процессоров им уже необходимо взаимодействовать между собой, переключать контексты, садиться на разные физические процессоры и т.п. Т.е. общая эффективность обработки может падать (больший процент процессорного времени будет уходить на служебную работу). Многочисленные рекомендации от производителя всегда рекомендовали делать кол-во CPU VP меньшим на единицу от кол-ва физических процов. Так говорит теория. Но практика показывает, что чистых OLTP запросов мало и тогда длинный запрос начинает тормозить всех. К тому же, рекомендации ранее расчитывались исходя из менее мощных процессоров, чем сейчас, да еще , как обычно, по хорошему принципу "не навредить". Современные интеловские процы достаточно мощные, чтобы тянуть 2 или 3 CPU VP каждый, хотя , конечно, многое зависит от крутости самих запросов. Тем не менее, для средней интеловской системы, как я уже ранее и говорил. я рекомендую по 2 CPU VP на каждый физический проц. HT, конечно, крутая маркетинговая штука, но для обработки ОДНОТИПНЫХ запросов она мало подходит, IMHO.
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / Informix [игнор отключен] [закрыт для гостей] / Несколько вопросов по оптимизации СУБД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]