Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Может кто сталкивался? Потратил уже 2 дня на эксперименты :( - Есть join по двум таблицам (сам join не привожу, т.к. то же самое наблюдается на нескольких разных джойнах). Одна таблица довольно большая 2500000 записей. - Обращение идет через .NET провайдера от IBM. - Версия ОС 5.2 (но то же самое наблюдаю и на 5.3 на другой машине) при выполнении join, время получается безумное.... Анализ с помощью SQL Performance Monitor показал, что обращение к обеим базам идет путем сканирования одной (большой) и построением временного индекса по другой. advisor предлагает построить индекс по паре полей, но такой индекс УЖЕ есть. - есть еще индексы по тем полям, по которым идет join и которые участвуют в выборке. - права на индексы розданы правильные. - добавили трассировку в джоб, под которым идет запрос. получили сообщение: CPI432C All access paths were considered for file ACCBAL. ause . . . . . : The OS/400 Query optimizer considered all access paths built over member ACCBAL of file ACCBAL in library FINANCE. The list below shows the access paths considered. If file ACCBAL in library FINANCE is a logical file then the access paths specified are actually built over member ACCBAL of physical file ACCBAL in library FINANCE. Following each access path name in the list is a reason code which explains why the access path was not used. A reason code of 0 indicates that the access path was used to implement the query. FINANCE/PK_ACCBAL 6, FINANCE/ACCBALL1 6. The reason codes and their meanings follow: ... 6 - The keys of the access path did not match the fields specified for the join criteria. ну т.е. констатация факта, что ключи не подходят. - и САМОЕ интересное . тот же самый запрос с теми же параметрами (взятыми из SQL Performance Monitor) выполняется в Run SQL Script абсолютно правильно, т.е. идет по тем индексам, что доктор прописал. И план запроса абсолютно другой. При этом обращение идет от такого же QZDASOINIT и от одинаковых Current User. Может кто подскажет, где еще порыть? Обойти эту ситуацию можно, но мне не нравится такая непредсказуемость и хочется ее разрешить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 09:26 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Все-таки напишите хотя бы 1 запрос. Есть ли в нем маркеры параметров или запрос полностью динамический? Я как-то получал такое в Run SQL Scripts, случайно установив Connections -> JDBC Setup -> Language -> Sort based on в Language ID вместо Job profile по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 10:23 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinВсе-таки напишите хотя бы 1 запрос. Есть ли в нем маркеры параметров или запрос полностью динамический? Я как-то получал такое в Run SQL Scripts, случайно установив Connections -> JDBC Setup -> Language -> Sort based on в Language ID вместо Job profile по умолчанию. было у меня такое необъяснимый глюк нового оптимизатора у Вас только джоин или есть еще where или order? Serge Reva ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:01 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinВсе-таки напишите хотя бы 1 запрос. Есть ли в нем маркеры параметров или запрос полностью динамический? Я как-то получал такое в Run SQL Scripts, случайно установив Connections -> JDBC Setup -> Language -> Sort based on в Language ID вместо Job profile по умолчанию. Да запрос-то доброго слова не стоит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:11 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Да запрос-то доброго слова не стоит... SELECT FLP003.ACCN03, FLP003.ACDESC FROM FLP003 INNER JOIN ACCBAL ON FLP003.ACCN03 = ACCBAL.LVCD01 AND ACCBAL.CONO=FLP003.CONO WHERE ACCBAL.ACCTYP = ? AND ACCBAL.PRVAL = ? AND FLP003.CONO = ? AND FLP003.LEDNO = 'БК' А насчет sort sequence мысль интересная.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:14 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
lazy-beaverу Вас только джоин или есть еще where или order?where есть, order нет. 2 astepano: Попробуйте вместо маркеров реальные значения подставить при работе с .NET. Что получилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:27 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein lazy-beaverу Вас только джоин или есть еще where или order?where есть, order нет. 2 astepano: Попробуйте вместо маркеров реальные значения подставить при работе с .NET. Что получилось? Марк, давайте устроим мозговой штурм оттакая табличка: select count(*) from arksysd/trhistory COUNT ( * ) 52,320,073 SELECT * FROM arksysd/trhistory where fdpstd<20060501 время вывода первой записи на экран после нажатия enter - ~120 сек в джоблоге следующие сообщения: All access paths were considered for file TRHISTORY. Additional access path reason codes were used. Arrival sequence access was used for file TRHISTORY. Message . . . . : All access paths were considered for file TRHISTORY. Cause . . . . . : The OS/400 Query optimizer considered all access paths built over member ZTRHIST of file TRHISTORY in library ARKSYSD. The list below shows the access paths considered. If file TRHISTORY in library ARKSYSD is a logical file then the access paths specified are actually built over member ZTRHIST of physical file TRHISTORY in library ARKSYSD. Following each access path name in the list is a reason code which explains why the access path was not used. A reason code of 0 indicates that the access path was used to implement the query. ARKSYSD/FDPSTD 4, ARKSYSD/TRHISTML 17, ARKSYSD/TRHISTLM 17, ARKSYSD/TRHISTL 17, ARKSYSD/TRHISISL 4, ARKSYSD/TRHISDVL 4, 4 - The cost to use this access path, as determined by the optimizer, was higher than the cost associated with the chosen access method. теперь те же яйца с сортировкой SELECT * FROM arksysd/trhistory where fdpstd<20060501 order by fdpstd время появления первой записи ~3 сек All access paths were considered for file TRHISTORY Additional access path reason codes were used. Access path of file FDPSTD was used by query. ну и: DSPFD Command Input File . . . . . . . . . . . . . . . . . . . : FILE FDPSTD Library . . . . . . . . . . . . . . . . . : ARKSYS Type of information . . . . . . . . . . . . : TYPE *ALL File attributes . . . . . . . . . . . . . . : FILEATR *ALL System . . . . . . . . . . . . . . . . . . : SYSTEM *LCL ile Description Header File . . . . . . . . . . . . . . . . . . . : FILE FDPSTD Library . . . . . . . . . . . . . . . . . . : ARKSYSD ... Data Base File Attributes Externally described file . . . . . . . . . : Yes SQL file type . . . . . . . . . . . . . . . : INDEX ... Access Path Description Access path maintenance . . . . . . . . . . : MAINT *IMMED Unique key values required . . . . . . . . : UNIQUE No Key order . . . . . . . . . . . . . . . . . : Not specified Select/omit specified . . . . . . . . . . . : No Access path journaled . . . . . . . . . . . : No Access path . . . . . . . . . . . . . . . . : Keyed Number of key fields . . . . . . . . . . . : 1 Record format . . . . . . . . . . . . . . . : RFDSTL Key field . . . . . . . . . . . . . . . . : FDPSTD Sequence . . . . . . . . . . . . . . . : Ascending Sign specified . . . . . . . . . . . . : SIGNED Zone/digit specified . . . . . . . . . : *NONE Alternative collating sequence . . . . : No Files accessed by logical file PFILE .+....1....+....2....+....3....+....4....+....5....+....6....+ File Library LF Format TRHISTORY ARKSYSD RFDSTL Sort Sequence . . . . . . . . . . . . . . . : SRTSEQ *HEX Language identifier . . . . . . . . . . . . : LANGID ENU и тд чивойта етот дурной оптимизатор при отборе индекс не юзает? зы. началось все ето после агрейда на 5.2 Serge Reva ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:59 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Подстановка вместо параметров их значений ничего не дала. Проблему удалось локализовать , убрав из строки подключения слова про сортировку (спасибо Марку :)) : SortSequence=SharedWeight;SortLanguageId=RUS; Теперь по крайней мере понятно, где собака порылась. Приведем таблицы-индексы к правильному знаменателю в плане сортировок.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 13:18 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
2 lazy-beaver: Ну, скорость появления первой записи - это еще не показатель. А можно засечь время получения всех записей (в файл, например) по обоим запросам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 14:03 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein2 lazy-beaver: Ну, скорость появления первой записи - это еще не показатель. А можно засечь время получения всех записей (в файл, например) по обоим запросам? дык, можно но там русским англицким языком указано, что в первом случае используется arrival sequence, а во втором - индекс Serge Reva ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 17:37 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
lazy-beaverдык, можно но там русским англицким языком указано, что в первом случае используется arrival sequence, а во втором - индекс(Не) использование индекса опять же - не показатель. Если запрос возращает достаточно большой процент (кстати, какой?) записей, табличное сканирование может оказаться эффективнее. Я понимаю еще, если бы надо было сделать select fdpstd from ... (только индексный доступ), но когда надо select * from ... тут от распределения данных многое зависеть будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 19:02 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Марк прав, говоря, что оптимизатор оценивает процент строк, что надо вывести к общему кол-ву строк в таблице. Если больше 20%, то может уйти в full table scan. Если есть ORDER BY, то будет использоваться индекс на эти поля по-любому, т.к. сортировка - процедура дорогая. astepano, у меня сложилось впечатление, что у вас не SQL таблица и индексы (SQL DDL), а DDS. Я прав? На выбор оптимизатора влияет тип индекса - SQL Index м.б. предпочтительнее Keyed Logical File, т.к. читается быстрее (64К logical page size vs. 8K) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 19:53 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Anton DemidovМарк прав, говоря, что оптимизатор оценивает процент строк, что надо вывести к общему кол-ву строк в таблице. Если больше 20%, то может уйти в full table scan. Если есть ORDER BY, то будет использоваться индекс на эти поля по-любому, т.к. сортировка - процедура дорогая. astepano, у меня сложилось впечатление, что у вас не SQL таблица и индексы (SQL DDL), а DDS. Я прав? На выбор оптимизатора влияет тип индекса - SQL Index м.б. предпочтительнее Keyed Logical File, т.к. читается быстрее (64К logical page size vs. 8K) Код: plaintext 1. 2. в моем случае физ. файл - DDS, а индекс SQL почему-то остальные логические файлы после агрейда на 5.2 оптимизатор перестал видеть _вообще_ Serge Reva ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2006, 14:42 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
lazy-beaverв моем случае физ. файл - DDS, а индекс SQL почему-то остальные логические файлы после агрейда на 5.2 оптимизатор перестал видеть _вообще_ Serge Reva Нас учили делать так: удаляем старые LF, создаём SQL индексы по их определениям, пересоздаём LF. В этом случае они "подхватят" индекс и не будут строить путь заново. К сожалению, про 5R2 я не погу подсказать ничего - у нас 5.1 и 5.3 - может там баг был какой при агрейде ... P.S. Нам ещё дали на курсах следующую общую рекомендацию: если используете SQL для доступа к данным, то система будет работать быстрее, если PF и LF пересоздать как SQL Tables + SQL Indexes + LFs. P.P.S. Чем старше версия (5.3 или 5.4), тем умнее оптимизатор SQL. Обновляйтесь, если есть возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2006, 20:30 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Anton Demidov lazy-beaverв моем случае физ. файл - DDS, а индекс SQL почему-то остальные логические файлы после агрейда на 5.2 оптимизатор перестал видеть _вообще_ Serge Reva Нас учили делать так: удаляем старые LF, создаём SQL индексы по их определениям, пересоздаём LF. В этом случае они "подхватят" индекс и не будут строить путь заново. К сожалению, про 5R2 я не погу подсказать ничего - у нас 5.1 и 5.3 - может там баг был какой при агрейде ... P.S. Нам ещё дали на курсах следующую общую рекомендацию: если используете SQL для доступа к данным, то система будет работать быстрее, если PF и LF пересоздать как SQL Tables + SQL Indexes + LFs. P.P.S. Чем старше версия (5.3 или 5.4), тем умнее оптимизатор SQL. Обновляйтесь, если есть возможность. SQL у нас только в 20% случаев доступа к данным. Serge Reva ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 12:26 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
lazy-beaverSQL у нас только в 20% случаев доступа к данным. Serge Reva Если у вас есть таблицы, которые вы в основном читаете, то всё равно можете выиграть в производительности за счет большего размера страницы (64К) - быстрее index scan. Ho учтите что IBM - SQL indexes compared with Keyed LFNo support for Select/Omit filtering or join logical files В общем как всегда - надо пробовать в каждом конктретном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 20:40 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Anton Demidov lazy-beaverSQL у нас только в 20% случаев доступа к данным. Serge Reva Если у вас есть таблицы, которые вы в основном читаете, то всё равно можете выиграть в производительности за счет большего размера страницы (64К) - быстрее index scan. Ho учтите что IBM - SQL indexes compared with Keyed LFNo support for Select/Omit filtering or join logical files В общем как всегда - надо пробовать в каждом конктретном случае. из какого документа цитата, хотелось бы его почитать целиком Serge Reva ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 12:02 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
lazy-beaverиз какого документа цитата, хотелось бы его почитать целиком DB2 UDB for iSeries SQL and Query performance Tuning and Monitoring Workshop. Rochester, MN October 2005 Dan Cruikshank Это материалы курсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 19:12 |
|
||
|
Мимо индексов на AS/400
|
|||
|---|---|---|---|
|
#18+
Антон, а эти материалы доступны в электронной форме? Я не смог в свое время найти их... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 19:32 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34105164&tid=1605014]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 465ms |

| 0 / 0 |
