Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / тормоза при добавлении rowid в селект / 14 сообщений из 14, страница 1 из 1
26.10.2006, 19:46
    #34085136
romikk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Столкнулся со странным поведением.
При попытке сортировать по rowid, информикс выполнят селект на порядок медленнее. Причем такое происходит только на двух далеко не самых больших таблицах, со остальными все в порядке.
Таблица не фрагментирована, существенных отличий от других не имеет, содержит порядка 120тыс строк.

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

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

Даже не знаю в какую сторону думать...
информикс 10 UC1
система Mandrake 2006.0 (2.6.12-12mdksmp)
машина 4х-процессорный сервер с raid-массивом.
...
Рейтинг: 0 / 0
26.10.2006, 23:47
    #34085441
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Планы запросов в студию

В таком вот аксепте
...
Рейтинг: 0 / 0
27.10.2006, 07:45
    #34085663
romikk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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
...
Рейтинг: 0 / 0
27.10.2006, 08:56
    #34085747
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
romikk
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
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 и перейти на сортировку в памяти, это ускорит запрос.
...
Рейтинг: 0 / 0
27.10.2006, 10:55
    #34086126
romikk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Оказалось что памяти было выделено неприлично мало:
Код: plaintext
1.
DS_TOTAL_MEMORY 768          # Decision support memory (Kbytes)
DS_NONPDQ_QUERY_MEM 128          # Non PDQ query memory (Kbytes)

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

Спасибо за подсказку :)
...
Рейтинг: 0 / 0
27.10.2006, 11:29
    #34086271
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
romikkОказалось что памяти было выделено неприлично мало:
Код: plaintext
DS_TOTAL_MEMORY 768          # Decision support memory (Kbytes)
Это работает при включенном pdq, у вас оно выключено.

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

romikk
Когда поднял эти значения раз в двадцать, ситуация нормализовалась.
Спасибо за подсказку :)Не за что, уже начинаю жалеть что подсказал.
...
Рейтинг: 0 / 0
27.10.2006, 15:08
    #34087337
romikk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Журавлев Денис romikkDS_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
Так в чем же самоубийство?
...
Рейтинг: 0 / 0
27.10.2006, 15:13
    #34087358
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
romikkПочему?
Потому что уже при 50 пользователях потребление памяти может увеличится на 100 мб.
...
Рейтинг: 0 / 0
27.10.2006, 15:23
    #34087412
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
romikkв качестве первоначальной настройки рекомендуют DS_TOTAL_MEMORY=8192
В мануале написано что DS_NONPDQ_QUERY_MEM должен быть не более чем 25% от Я бы в мануале попытался понять что значит тот или иной параметр, 25% это по моему глупость какая-то, потому что параметры эти перпендикулярны, и значат абсолютно разные вещи.
...
Рейтинг: 0 / 0
27.10.2006, 15:34
    #34087455
romikk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Журавлев ДенисПотому что уже при 50 пользователях потребление памяти может увеличится на 100 мб.
Что в принципе лучше чем если все эти 50 человек будут приходить и ругаться что у них все тормозит :)

Я бы сам с удовольствием отовсюду rowid выкинул, но к сожалению это не в моей компетенции.
...
Рейтинг: 0 / 0
27.10.2006, 15:42
    #34087493
romikk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Журавлев ДенисЯ бы в мануале попытался понять что значит тот или иной параметр, 25% это по моему глупость какая-то, потому что параметры эти перпендикулярны, и значат абсолютно разные вещи.
Вот тут английским по белому написано что от 128кб до 25% от..
К сожалению там не очень понятно на что собственно этот параметр влияет.
...
Рейтинг: 0 / 0
27.10.2006, 15:45
    #34087499
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
romikk
Я бы сам с удовольствием отовсюду rowid выкинул, но к сожалению это не в моей компетенции.Если это из-за TTable (который не видит уникальные автоиндексы с пробелом в первом символе), то вы недочитали мануал, сильно причем, это лечится в два клика мышкой.
...
Рейтинг: 0 / 0
27.10.2006, 15:52
    #34087530
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
romikk Вот тут английским по белому написано что от 128кб до 25% от..
К сожалению там не очень понятно на что собственно этот параметр влияет.

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

Используйте параметр конфигурации DS_NONPDQ_QUERY_MEM, чтобы увеличить количество памяти, которая является доступным для вопроса, который не Параллельный Вопрос Базы данных (PDQ). (Вы можете только использовать этот параметр, если приоритет PDQ собирается ноль.), Если Вы определяете ценность для параметра DS_NONPDQ_QUERY_MEM, определите, и приспособьте ценность, основанную на числе и размере рядов стола.
...
Рейтинг: 0 / 0
31.10.2006, 16:56
    #34095100
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тормоза при добавлении rowid в селект
Журавлев Денис 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 только для отдельных сессий
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / тормоза при добавлении rowid в селект / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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