Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Informix Новый топик    Ответить
 тормоза при добавлении rowid в селект  [new]
romikk
Member

Откуда: Новосибирск
Сообщений: 6
Столкнулся со странным поведением.
При попытке сортировать по rowid, информикс выполнят селект на порядок медленнее. Причем такое происходит только на двух далеко не самых больших таблицах, со остальными все в порядке.
Таблица не фрагментирована, существенных отличий от других не имеет, содержит порядка 120тыс строк.

select rowid,* from request_payment order by id asc
выполняется 3 секунды

select rowid,* from request_payment order by rowid asc
выполняется 35 секунд

Даже не знаю в какую сторону думать...
информикс 10 UC1
система Mandrake 2006.0 (2.6.12-12mdksmp)
машина 4х-процессорный сервер с raid-массивом.
26 окт 06, 19:46    [3317357]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
Выбегалло
Member

Откуда: Scottsdale, AZ, USA
Сообщений: 3795
Планы запросов в студию

В таком вот аксепте
26 окт 06, 23:47    [3317823]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
romikk
Member

Откуда: Новосибирск
Сообщений: 6
QUERY:
------
select rowid,* from request_payment order by id asc
Estimated Cost: 6668
Estimated # of Rows Returned: 121022
1) informix.request_payment: INDEX PATH
(1) Index Keys: id (Serial, fragments: ALL)

QUERY:
------
select rowid,* from request_payment order by rowid asc
Estimated Cost: 87788
Estimated # of Rows Returned: 121022
Temporary Files Required For: Order By
1) informix.request_payment: SEQUENTIAL SCAN
27 окт 06, 07:45    [3318156]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
romikk
QUERY:
------
select rowid,* from request_payment order by id asc
Estimated Cost: 6668
Estimated # of Rows Returned: 121022
1) informix.request_payment: INDEX PATH
(1) Index Keys: id (Serial, fragments: ALL)

Есть индекс по id поэтому просто идем по индексу, ничего не сортируя.
Стоимость 6668.
romikk

QUERY:
------
select rowid,* from request_payment order by rowid asc
Estimated Cost: 87788
Estimated # of Rows Returned: 121022
Temporary Files Required For: Order By
1) informix.request_payment: SEQUENTIAL SCAN
По rowid индекса нет, сортируем в Temporary Files, 121022 строк.
Стоимость 87788. В 10 раз больше.
Я бы такие запросы -- "order by rowid" выкинул и никогда не исполнял, с другой стороны вы можете использовать PDQ или DS_NONPDQ_QUERY_MEM и перейти на сортировку в памяти, это ускорит запрос.
27 окт 06, 08:56    [3318265]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
romikk
Member

Откуда: Новосибирск
Сообщений: 6
Оказалось что памяти было выделено неприлично мало:
DS_TOTAL_MEMORY 768          # Decision support memory (Kbytes)
DS_NONPDQ_QUERY_MEM 128 # Non PDQ query memory (Kbytes)

Когда поднял эти значения раз в двадцать, ситуация нормализовалась.

Спасибо за подсказку :)
27 окт 06, 10:55    [3318993]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
romikk
Оказалось что памяти было выделено неприлично мало:
DS_TOTAL_MEMORY 768          # Decision support memory (Kbytes)
Это работает при включенном pdq, у вас оно выключено.

romikk
DS_NONPDQ_QUERY_MEM 128 # Non PDQ query memory (Kbytes)
Увеличивать в 20 раз этот параметр это где-то на грани самоубийства.

romikk

Когда поднял эти значения раз в двадцать, ситуация нормализовалась.
Спасибо за подсказку :)
Не за что, уже начинаю жалеть что подсказал.
27 окт 06, 11:29    [3319296]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
romikk
Member

Откуда: Новосибирск
Сообщений: 6
Журавлев Денис
romikk
DS_NONPDQ_QUERY_MEM 128 # Non PDQ query memory (Kbytes)
Увеличивать в 20 раз этот параметр это где-то на грани самоубийства.

Почему?
Вот тут: http://www.cz.org.ua/cms/content/view/16/40/
в качестве первоначальной настройки рекомендуют DS_TOTAL_MEMORY=8192
В мануале написано что DS_NONPDQ_QUERY_MEM должен быть не более чем 25% от DS_TOTAL_MEMORY.
Сейчас у меня собственно так и стоит:
DS_TOTAL_MEMORY=8192
DS_NONPDQ_QUERY_MEM=2048
Так в чем же самоубийство?
27 окт 06, 15:08    [3321520]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
romikk
Почему?
Потому что уже при 50 пользователях потребление памяти может увеличится на 100 мб.
27 окт 06, 15:13    [3321562]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
romikk
в качестве первоначальной настройки рекомендуют DS_TOTAL_MEMORY=8192
В мануале написано что DS_NONPDQ_QUERY_MEM должен быть не более чем 25% от
Я бы в мануале попытался понять что значит тот или иной параметр, 25% это по моему глупость какая-то, потому что параметры эти перпендикулярны, и значат абсолютно разные вещи.
27 окт 06, 15:23    [3321659]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
romikk
Member

Откуда: Новосибирск
Сообщений: 6
Журавлев Денис
Потому что уже при 50 пользователях потребление памяти может увеличится на 100 мб.

Что в принципе лучше чем если все эти 50 человек будут приходить и ругаться что у них все тормозит :)

Я бы сам с удовольствием отовсюду rowid выкинул, но к сожалению это не в моей компетенции.
27 окт 06, 15:34    [3321754]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
romikk
Member

Откуда: Новосибирск
Сообщений: 6
Журавлев Денис
Я бы в мануале попытался понять что значит тот или иной параметр, 25% это по моему глупость какая-то, потому что параметры эти перпендикулярны, и значат абсолютно разные вещи.

Вот тут английским по белому написано что от 128кб до 25% от..
К сожалению там не очень понятно на что собственно этот параметр влияет.
27 окт 06, 15:42    [3321837]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
romikk

Я бы сам с удовольствием отовсюду rowid выкинул, но к сожалению это не в моей компетенции.
Если это из-за TTable (который не видит уникальные автоиндексы с пробелом в первом символе), то вы недочитали мануал, сильно причем, это лечится в два клика мышкой.
27 окт 06, 15:45    [3321856]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
Журавлев Денис
Member

Откуда: St.John,NB,CA
Сообщений: 5532
romikk
Вот тут английским по белому написано что от 128кб до 25% от..
К сожалению там не очень понятно на что собственно этот параметр влияет.


Вот как это перевел translate.ru:

Используйте параметр конфигурации DS_NONPDQ_QUERY_MEM, чтобы увеличить количество памяти, которая является доступным для вопроса, который не Параллельный Вопрос Базы данных (PDQ). (Вы можете только использовать этот параметр, если приоритет PDQ собирается ноль.), Если Вы определяете ценность для параметра DS_NONPDQ_QUERY_MEM, определите, и приспособьте ценность, основанную на числе и размере рядов стола.
27 окт 06, 15:52    [3321909]     Ответить | Цитировать Сообщить модератору
 Re: тормоза при добавлении rowid в селект  [new]
vasilis
Member

Откуда: Украина, Киев
Сообщений: 2205
Журавлев Денис
romikk
в качестве первоначальной настройки рекомендуют DS_TOTAL_MEMORY=8192
В мануале написано что DS_NONPDQ_QUERY_MEM должен быть не более чем 25% от
Я бы в мануале попытался понять что значит тот или иной параметр, 25% это по моему глупость какая-то, потому что параметры эти перпендикулярны, и значат абсолютно разные вещи.

Денис погорячился :) Параметры все же зависимы, хотя и сказано, что DS_NONPDQ_QUERY_MEM работает только при выключенном PDQ, тем не менее, значение DS_TOTAL_MEMORY тоже учитывается при проверке максимально возможного значения DS_NONPDQ_QUERY_MEM.
Чтобы не устанавливать большое значение и не бояться, как Денис, о захвате больших ресурсов многими пользователями, можно увеличить значение DS_NONPDQ_QUERY_MEM через onmode -wf только для отдельных сессий
31 окт 06, 16:56    [3337077]     Ответить | Цитировать Сообщить модератору
Все форумы / Informix Ответить