|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Добрый день, Есть запрос, который длится несколько часов и совершенно не жрет системных ресурсов. Его надо распораллелить. Прочитал про PDQ: http://docs.rinet.ru/InforSmes/ch19/ch19.htm Фактически, если я правильно понимаю, достаточно, добавить statement: SET PDQPRIORITY 90; Перед запросом, чтобы он стал параллельным. Создал две процедуры для тестирования, одну как обычный запрос: create procedure lsav.testquery() UPDATE voucher SET voucherscenarioid = ( SELECT voucher.vouchercategoryid * 6 + subsprofile FROM actorRecharge WHERE voucher.aliasname = actorRecharge.aliasname) WHERE voucher.state = 61; END PROCEDURE; второй как запрос типа PDQ: create procedure lsav.testpdq() SET PDQPRIORITY 90; UPDATE voucher SET voucherscenarioid = ( SELECT voucher.vouchercategoryid * 6 + subsprofile FROM actorRecharge WHERE voucher.aliasname = actorRecharge.aliasname) WHERE voucher.state = 61; END PROCEDURE; При запуске обоих процедур время тратится одинаковое. Во время запуска "testpdq" запустил монитор MGM: onstat -g mgm и вижу: Queries: Active Ready Maximum 0 0 8 Т.е. фактически, мой запрос не выполняется как PDQ. Плиииз, подскажите почему. Что делаю не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 16:30 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Ваша процедура будет выполнятся с тем pdq который был установлен перед update statistics for procedure procname ; ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 17:32 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
AndronВаша процедура будет выполнятся с тем pdq который был установлен перед update statistics for procedure procname ; Но НЕ вздумайте установить PDQ во время выполнения update statistics for procedure (т.е. для ВСЕХ процедур) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 20:08 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
savswsoftДобрый день, Есть запрос, который длится несколько часов и совершенно не жрет системных ресурсов. Его надо распораллелить. Прочитал про PDQ: http://docs.rinet.ru/InforSmes/ch19/ch19.htm Фактически, если я правильно понимаю, достаточно, добавить statement: SET PDQPRIORITY 90; ... А вы внимательно прочитали всю статью (по приведенной ссылке, хотя лучше читать непосредственно документацию по своей версии) ? Там множество условий ЭФФЕКТИВНОЙ работы запросов в режиме PDQ. И вовсе не факт, что ВСЕ или ЛЮБЫЕ запросы (или процедуры) станут работать быстрее.... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2009, 20:11 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Пожалуйста, поправьте меня, если я понял не правильно: Мне необходимо выполнить следующую последовательность действий: 1. Пересоздать заново процедуру 2. Установить SET PDQPRIORITY 90; 3. update statistics for procedure testquery; 4. Запустить процеду. И если я правилно понял, то SET PDQPRIORITY 90; внутри процедуры не оказывает влияние на запрос... верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 09:24 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Видимо что то понял не правильно, т.к. последовательность не изменила. Я контролирую, что запрос - не является PDQ запросом - не потому, что он стал быстрее или медленнее работать, а потому, есть ли о нем информация, когда я запускаю: onstat -g mgm ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 09:28 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
savswsoftПожалуйста, поправьте меня, если я понял не правильно: Мне необходимо выполнить следующую последовательность действий: 1. Пересоздать заново процедуру 2. Установить SET PDQPRIORITY 90; 3. update statistics for procedure testquery; 4. Запустить процеду. И если я правилно понял, то SET PDQPRIORITY 90; внутри процедуры не оказывает влияние на запрос... верно? 1. PDQ настраивается в onconfig 2. Параллелятся операции seq-scan, чтение из нескольких фрагментов , sort, hash-join. Смотрите план вашего запроса, скорее всего там распараллеливать нечего. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 09:31 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Журавлев ДенисsavswsoftПожалуйста, поправьте меня, если я понял не правильно: Мне необходимо выполнить следующую последовательность действий: 1. Пересоздать заново процедуру 2. Установить SET PDQPRIORITY 90; 3. update statistics for procedure testquery; 4. Запустить процеду. И если я правилно понял, то SET PDQPRIORITY 90; внутри процедуры не оказывает влияние на запрос... верно? 1. PDQ настраивается в onconfig 2. Параллелятся операции seq-scan, чтение из нескольких фрагментов , sort, hash-join. Смотрите план вашего запроса, скорее всего там распараллеливать нечего. 1. Ваши данные устарели. Using Environment Variables and SQL Statements to Configure PDQ An application can claim a PDQ priority by executing the SET PDQPRIORITY SQL statement, which supersedes the environment variable. Pre-7.0 versions of Informix DSA used the PDQPRIORITY configuration parameter. This was helpful when you wanted a global behavior of the PDQ priority parameter in your system. You can have the same functionality with the most recent versions of Informix DSA by setting the environment variable in a common resource file such as informix.rc or even in the system profile. 2. Что такое план запроса?? Что значит просмотреть его? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 11:48 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
В onconfig есть параметры (их можно покрутить динамически с помощью onmode) Ставим например так MAX_PDQPRIORITY 100 # Maximum allowed pdqpriority DS_MAX_QUERIES 1 # Maximum number of decision support queries DS_TOTAL_MEMORY 51200 # Decision support memory (Kbytes) DS_MAX_SCANS 1048576 # Maximum number of decision support scans Одновременно cможет выполняться 1 pdq запрос отожрет 100% pdqсилы, 50 метров озу hintДля того чтобы запрос выполнялся с использованием PDQ необходимо выполнить SQL запрос "set pdqpriority 100". После этого выполняем наш DSS запрос и выключаем PDQ "set pdqpriority 1". Выключение необходимо т.к. для PDQ запроса сервер отводит специальные ограниченные ресурсы которые могут быть использованы в чужих DSS запросах, вот почему не следует использовать PDQ для OLTP запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 12:10 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Журавлев ДенисhintПосле этого выполняем наш DSS запрос и выключаем PDQ "set pdqpriority 1 ". Может " 0 "? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 15:46 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
АнатоЛойЖуравлев ДенисhintПосле этого выполняем наш DSS запрос и выключаем PDQ "set pdqpriority 1 ". Может " 0 "?может и 0, а может и 1. Раньше 1 имело какое-то магическое значение, типа pdq выключено, но индексы строим в параллели. Я 8 лет назад писал доку для собственных программеров и эта вырезка из нее. И при 1 pdq выключалось. В общем рекомендация моя была Код: plaintext 1. 2. 3.
Теперь судя по докам там вообще DEFAULT Uses the setting of the PDQPRIORITY environment variable LOW Data values are fetched from fragmented tables in parallel. (In Dynamic Server, when you specify LOW, the database server uses no other forms of parallelism.) OFF PDQ is turned off (Dynamic Server only). The database server uses no parallelism. OFF is the default if you use neither the PDQPRIORITY environment variable nor the SET PDQPRIORITY statement. HIGH The database server determines an appropriate PDQPRIORITY value, based on factors that include the number of available processors, the fragmentation of the tables being queried, the complexity of the query, and others. IBM reserves the right to change the performance behavior of queries when HIGH is specified in future releases. MUTABLE PDQPRIORITY can be changed in a user session by the user. IMMUTABLE PDQPRIORITY cannot be changed in a user session. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 15:59 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Журавлев Денисможет и 0, а может и 1. Раньше 1 имело какое-то магическое значение, типа pdq выключено, но индексы строим в параллели. Индексы всегда строятся в параллели независимо ни от чего. Вот из доки еще на 7-ку 10-и летней давности Сортировка и PDQ Если PSORT_NPROCS больше 1, сортировка выполняется в параллельном режиме независимо от значения, установленного переменной PDQPRIORITY. Однако, если PDQPRIORITY больше нуля, параллельные сортировки выполняются эффективнее, так как для этого отводится больше памяти и дополнительные сканирующие потоки могут потенциально также использоваться сортировкой. Построение индексов и PDQ П остроение индексов выполняется параллельно, независимо от того, какое значение присвоено переменной PDQPRIORITY. Однако построение индекса может выиграть от установки значения PDQPRIORITY больше нуля. PDQPRIORITY используется для определения максимального количества памяти, которое может быть использовано для сортировочной части построения индекса, наряду с определением максимального количества сканирующих потоков. Построение индексов и PSORT_NPROCS Сортировочная часть построения индекса будет распараллелена независимо от значения, присвоенного переменной PSORT_NPROCS. Если переменная PSORT_NPROCS не установлена, будет инициировано два сортирующих потока. Дополнительные сортирующие потоки, вплоть до максимума, равного 10, могут быть запущены в зависимости от значения PSORT_NPROCS. А относительно "магической" 1, то и раньше и сейчас это просто включает параллельное сканирование фрагментов (если они есть, конечно :) И последнее - The value 1 is the same as LOW, and 100 is the same as HIGH . ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 11:37 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
Я уточню, главная моя задача была убедиться, что запрос стал параллельным. Инструмент, предназначенный для этого: "onstat -g mgm" Так вот мой псевдо-PDQ запрос не видится этой тулзой. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2009, 19:19 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
savswsoftЯ уточню, главная моя задача была убедиться, что запрос стал параллельным. Инструмент, предназначенный для этого: "onstat -g mgm" Так вот мой псевдо-PDQ запрос не видится этой тулзой. Почему? Потому что он таковым не является. Причины ? - внимательно читайте предыдущие посты выше и рекомендованные материалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2009, 20:48 |
|
PDQ (паралелльные) запросы в Informix
|
|||
---|---|---|---|
#18+
savswsoftЯ уточню, главная моя задача была убедиться, что запрос стал параллельным. Инструмент, предназначенный для этого: "onstat -g mgm" Так вот мой псевдо-PDQ запрос не видится этой тулзой. Почему?покажите вывод команды onstat -c ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2009, 08:45 |
|
|
start [/forum/topic.php?fid=44&msg=35771431&tid=1607898]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 443ms |
0 / 0 |