Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Сервер DB2 8.2 fix pack 13 и пробовал с 14 java SUN 1.4.2.12 библиотека доступа ibm dab 3.5 среда разработки eclipse 3.3m5 запрос вот такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. при попытке выполения зависает, при этом сервак молотит винтом - хорошо слышно :) если убрать проверку: ((a.WrkBeginDate >= ?) AND (COALESCE(a.WrkEndDate, a.WrkBeginDate) <= ?)) то запрос прекрасно отрабатывает причем проблема только если из java с параметрами... в рапиде запрос отрабатывает за 1 сек. Подобная проблема у нас уже была месяцок назад, то же с полем типа DATE, тогда выкрутились какими-то перестановками условий (совершенно дикими), подробности к сожелению не удалось вспомнить. Никто не сталкивался с таким поведением: db2 подвисает на определенных сочетаниях условий с датами в where части запроса с параметрами? Пока заборол этот глюк путем вынесения этой проверки в java код, но осадок остался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 07:09 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Попробуйте вместо параметров даты использовать актуальные значения. Оптимизатор, не зная их (эти актуальные значения) в момент построения плана запроса, может строить совершенно другой план. Вы можете сравнить эти планы - один с параметрами, другой - с актуальными значениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 10:50 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinПопробуйте вместо параметров даты использовать актуальные значения. Оптимизатор, не зная их (эти актуальные значения) в момент построения плана запроса, может строить совершенно другой план. Вы можете сравнить эти планы - один с параметрами, другой - с актуальными значениями. Без параметров вроде отрабатывает нормально, но это то же полумера..., т.е. надо строку запроса каждый раз формировть в цикле Просто интересно чей это глюк: db2 или компонент доступа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 11:26 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Alexey KuznetsovПросто интересно чей это глюк: db2 или компонент доступаЯ бы назвал это фичей, а не глюком. Представьте себя оптимизатором запросов. :) Вот вам таблица: Код: plaintext Вот вам запрос: Код: plaintext Индексное сканирование? Но актуальные границы даты могут быть очень широкие (т.е. запросом отберется большой процент записей таблицы) и табличное сканирование окажется предпочтительней. И наоборот, если выбрать табличное сканирование, то из-за узкого актуального диапазона дат будет выгоднее индексное сканирование. Так что вы выберите? А ведь это самый простой случай... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 11:49 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinЯ бы назвал это фичей, а не глюком. Представьте себя оптимизатором запросов. :) ... Фича там или баг но зависать то зачем? мне пофиг пусть он хоть что там делает лишь бы не зависал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 12:58 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Alexey KuznetsovФича там или баг но зависать то зачем? мне пофиг пусть он хоть что там делает лишь бы не зависал :)У вас что зависает? Приложение, пославшее этот запрос? Или весь менеджер БД, т.е. никто другой больше не может законнектится или выполнять что-либо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 13:19 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Alexey KuznetsovФича там или баг но зависать то зачем? мне пофиг пусть он хоть что там делает лишь бы не зависал :)У вас что зависает? Приложение, пославшее этот запрос? Или весь менеджер БД, т.е. никто другой больше не может законнектится или выполнять что-либо? только приложение пославшее запрос. Оно ждет ответа от сервера и в разумные сроки не дожидается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 14:53 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Alexey Kuznetsovтолько приложение пославшее запрос. Оно ждет ответа от сервера и в разумные сроки не дожидается.Так пишите свое приложение так, чтоб оно отменяло запрос, который не вернул результат за "разумное время". Или пользуйтесь ключевым словом QueryTimeoutInterval в db2cli.ini для выставления предела этому "разумному времени". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 15:06 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinИли пользуйтесь ключевым словом QueryTimeoutInterval в db2cli.ini для выставления предела этому "разумному времени".Тут я ошибся - это ключевое слово не для выставления таймаута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2007, 15:48 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinТак пишите свое приложение так, чтоб оно отменяло запрос, который не вернул результат за "разумное время". Так вот в том то и засада что по всем признакам НЕ ДОЛЖНО ОНО уходить в ступор!!! Таблички в базе смешные по размеру. И к тому же если из запроса убрать параметры и заменить их константами, то запрос отрабатывает пулей. А вот при наличии параметров - кирдык. у нас в приложении сотни запросов с параметрами и мы уже второй раз нарвались на ситуацию когда db2 неправильно работает если поле имеет тип DATE и стоит проверка с параметром. Кусаем щаз локти что в первый раз не задокументировали workaround... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 05:34 |
|
||
|
Проблема выполнения запроса из под JAVA
|
|||
|---|---|---|---|
|
#18+
Alexey Kuznetsovу нас в приложении сотни запросов с параметрами и мы уже второй раз нарвались на ситуацию когда db2 неправильно работает если поле имеет тип DATE и стоит проверка с параметром. Кусаем щаз локти что в первый раз не задокументировали workaround...Вы можете поэкспериментировать с предложением selectivity в запросе на разных уровнях оптимизации, если неохота каждый раз переписавать statement и вы знаете, что предикат в запросе имеет маленькую selectivity: На сервере: Код: plaintext 1. 2. stmt = con.prepareStatement("select * from table1 where dat between ? and ? selectivity 0.001"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 11:48 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34312379&tid=1604815]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 520ms |

| 0 / 0 |
