Нужен совет оракловых гуру
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
Нужен совет оракловых гуру
Налетел тут на проблему с оракловыми репортами. Есть примитивный запрос который выдает из базы 100тыщ записей, ~500 байтов на запись. SQL Navigator / SQL Developer вытаскивают эти данные за 10-15 секунд. Oracle Reports тужится и сливает те же данные в отчёт минут за 20-40. Посмотрел что происходит с помощью Wireshark - SQL Nav гонит данные по TCP/IP, 3 записи на пакет, минимум подтверждений. Reports высасывает записы по одной штуке по TNS протоколу, с подтверждением/запросом каждой очередной записи, примерно 40 записей в секунду. Что делать?
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Нужен совет оракловых гуру
не туда смотришь. сначала смотри что делает сессия и что там за план у того SQL. причем смотри именно в сессии от reports, а не предполагаемый в окошке ide.Uzito wrote: ↑31 Oct 2017 14:57 Налетел тут на проблему с оракловыми репортами. Есть примитивный запрос который выдает из базы 100тыщ записей, ~500 байтов на запись. SQL Navigator / SQL Developer вытаскивают эти данные за 10-15 секунд. Oracle Reports тужится и сливает те же данные в отчёт минут за 20-40. Посмотрел что происходит с помощью Wireshark - SQL Nav гонит данные по TCP/IP, 3 записи на пакет, минимум подтверждений. Reports высасывает записы по одной штуке по TNS протоколу, с подтверждением/запросом каждой очередной записи, примерно 40 записей в секунду. Что делать?
скорее всего кривой план из-за устаревшей статистики, а по нетворку отдает по мере того как выполняет
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Нужен совет оракловых гуру
Репорты на java написаны?
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Нужен совет оракловых гуру
Я не спец по ораклу, но из года в год применяю магический трюк с java/jdbc, который ускоряет работу select во много раз, в случае если база физически далеко от кода: statement.setFetchSize(1000);
Возможно это стратегически неправильно, но работает.
Может в Reports есть какая-нибудь настройка для этого?...
Возможно это стратегически неправильно, но работает.
Может в Reports есть какая-нибудь настройка для этого?...
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
Re: Нужен совет оракловых гуру
Я же сказал - запрос примитивнейший. Одна табличка, 100k записей, 3 колонки, full table scan.iDesperado wrote: ↑31 Oct 2017 17:32 что делает сессия и что там за план у того SQL. причем смотри именно в сессии от reports, а не предполагаемый в окошке ide.
скорее всего кривой план из-за устаревшей статистики, а по нетворку отдает по мере того как выполняет
В SQL Navigator выполняется за 10 секунд.
В Oracle Reports тянет по одной строчке 20 минут.
Не, идея правильная, нужно только найти где подкрутить.Palych wrote: ↑31 Oct 2017 18:23 Я не спец по ораклу, но из года в год применяю магический трюк с java/jdbc, который ускоряет работу select во много раз, в случае если база физически далеко от кода: statement.setFetchSize(1000);
Возможно это стратегически неправильно, но работает.
Может в Reports есть какая-нибудь настройка для этого?...
Судя по всему проблема локальная - на продакшене отчет выполняется за 30 секунд, беру .rdf с продаекшена, запускаю локально на ту же базу - 20+ минут.
-
- Уже с Приветом
- Posts: 1982
- Joined: 10 Oct 2000 09:01
- Location: New England
Re: Нужен совет оракловых гуру
1. А вы уверены что SQL Nav все 100K записей на клиента тащит сразу - а не по 500 как Toad?Uzito wrote: ↑31 Oct 2017 18:35 Я же сказал - запрос примитивнейший. Одна табличка, 100k записей, 3 колонки, full table scan.
В SQL Navigator выполняется за 10 секунд.
В Oracle Reports тянет по одной строчке 20 минут.
...
Не, идея правильная, нужно только найти где подкрутить.
Судя по всему проблема локальная - на продакшене отчет выполняется за 30 секунд, беру .rdf с продаекшена, запускаю локально на ту же базу - 20+ минут.
2. Как уже писали выше - смотрите explain plan тем более что на прод тот же самый репорт быстро пробегает
3. Большой разницы между JDBC client и SQLNet client быть не должно
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Нужен совет оракловых гуру
Было бы странно если это еще не настроеноPalych wrote: ↑31 Oct 2017 18:23 Я не спец по ораклу, но из года в год применяю магический трюк с java/jdbc, который ускоряет работу select во много раз, в случае если база физически далеко от кода: statement.setFetchSize(1000);
Возможно это стратегически неправильно, но работает.
Может в Reports есть какая-нибудь настройка для этого?...
https://docs.oracle.com/cd/A97335_02/ap ... rfmnce.htm
3.4.4.19 Adjust the ARRAYSIZE Parameter
The value of array processing has been noted earlier.
For Report Builder's ARRAYSIZE executable argument (e.g., ARRAYSIZE=10), enter as large a value as you can. Note that the array size is measured in kilobytes, not rows. ARRAYSIZE means that Report Builder can use that number of kilobytes of memory per query in executing your report. Report Builder uses Oracle's array processing, which fetches multiple records in batches, instead of one record at a time. As a result, you can control the amount of data to be fetched by the batch processes.
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
Re: Нужен совет оракловых гуру
1) В SQL Nav я "fetch all" сделал, естественно, чтобы он все записи высосал за один проход. По Wireshark логу вижу что тянет по данные по TCP/IP ~30 записей на каждый пакет.
2) чукча не читатель. см plan.png
3) однако репорты тянутся по одной записи. см wireshark.png
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Нужен совет оракловых гуру
картинки то где ?
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Нужен совет оракловых гуру
Ура ! Я Оракла 8 лет как в руки не брала, а все еще умею по-гурить оказывается
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 946
- Joined: 24 Sep 2013 05:58
- Location: US\GA
Re: Нужен совет оракловых гуру
Корректности ради...
* TNS (Transparent Network Substrate) protocol is used for client's interaction with Oracle's RDBMS. It can communicate using a number of other protocols such as TCP/IP, IPX/SPX, IPC, Named Pipes, etc.
* Transparent Network Substrate (TNS), a proprietary Oracle computer-networking technology, supports homogeneous peer-to-peer connectivity on top of other networking technologies such as TCP/IP, SDP and named pipes.
-
- Уже с Приветом
- Posts: 8239
- Joined: 06 Feb 2002 10:01
- Location: NJ, USA