powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle отдает данные медленно.
25 сообщений из 34, страница 1 из 2
Oracle отдает данные медленно.
    #39280081
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, привет.
Столкнулись с такой проблемой.
Oracle вертится на топовом железе и на флешовых дисках.

Пытаемся забрать данные из него, но скорость забора очень низкая
2,5 млн(2,2 Гб в CSV) строк выгрузились за 13 минут. Сеть 100 Мбит/сек
что примерно 3,2 Krows/sec или 3 Мб/сек
При выгрузке через 10 Гб/сек сеть результаты лучше примерно раза в 2.
Экспорт даже на хосте машины особо не дает выгрышаю

При этом при выполнении count(*) ( таблица без индекса). Все это работает меньше секунды. То есть сама таблица читается с дисков в принципе норм(специально беру разные секции каждый раз, результат точно не из буферного кеша)
Пробовал JDBC и Native Oracle-client, разницы особой нет.


Подскажите, в чем может быть проблема и проблема ли это или это действительно нормально?
Заранее благодарен.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280084
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. эксперимент проводили как под нагрузкой так и без нее.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280098
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Array size?
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280099
Zloxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем выгружаете? Java приложением? Fetch Size крутили?
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280118
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicArray size?
каждая секция таблицы - 2,5 млн(2,2 Гб в CSV) - в оракле примерно занимает 700 Мб (75 полей)

авторЧем выгружаете? Java приложением? Fetch Size крутили?
Пробовали и Java и утилита exp и oracle client, примерно все одинаково.
Боюсь, что дело не в Fetch Size
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280128
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hollister,

а эскуэльплюс, стартованный на ос сервера со спулом в ос сервера?
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280132
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовали всеми возможными вариантами, и exp и sql*plus и jdbc и oracle client, больших различий нет
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280159
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hollisterПробовали всеми возможными вариантами, и exp и sql*plus и jdbc и oracle client, больших различий нет
это симптом, того, что так пробовали, что оптимизировать и не пытались
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280170
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же проболвал забирать через ETL, который стати уже оптмизирует подключение для быстрой отдачи данных.
Результат такой же.

авторэто симптом, того, что так пробовали, что оптимизировать и не пытались
А что можете посоветовать для оптмизации?
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280174
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же добавлю, что мне нужно, что бы Oracle отдавал данные быстрее раз в 100 как минимум.
Возможно ли такое в принципе или это вообще нормально для Оракла?
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280262
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снимите трассу 10046 level 8 (см. faq форума) или, если закуплено - попробуйте awr.
Задача - убедиться, что сервер по большей части простаивает, ожидая активности клиента (SQL*Net message from/to client).
Если сервер не простаивает - то есть простор для оптимизации.
Далее - ищите узкое место.
Локальные диски и сетка - вполне себе кандидаты, 6Мб/с - по порядку похоже.
Утилитки для мониторинга - по вкусу.
Как уже отметил Elic (судя по Вашему ответу, Вы замечание не поняли) - надо попробовать увеличить array size/fetch size, это такой параметр, определяет количество строк, передаваемых клиенту за одно обращение.
Радикально поднимает скорость передачи по сети, особенно если сервер отдален от клиента на несколько хопов.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280297
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если клиент на сервере ARRAYSIZE радикально повышает быстродействие больших выборок
Тут вопрос не столько в сетевых задержках, сколько в количестве вызовов FETCH и откуда они продолжаются
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280414
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousРадикально поднимает скорость передачи по сети, особенно если сервер отдален от клиента на несколько хопов.
Вячеслав ЛюбомудровДаже если клиент на сервере ARRAYSIZE радикально повышает быстродействие больших выборок
Тут вопрос не столько в сетевых задержках, сколько в количестве вызовов FETCH и откуда они продолжаются
+

разница в размере пакета и кол-ве roundtrp'ов. На Ethernet огромные latency, и при переходе от 10 Mbit -> 100 M -> 1 G -> 10 G latency почти не уменьшается, а вот througinput вполне растет

orawishhollisterПробовали всеми возможными вариантами, и exp и sql*plus и jdbc и oracle client, больших различий нет
это симптом, того, что так пробовали, что оптимизировать и не пытались
так же +

на данном форуме пару лет назад про fetch size ребятам-программистам говорил, говорил.... на форуме... в почте - ноль толка. Они уже от отчаяния мне денег предложили ))) Тоже самое по телефону объяснил их менеджеру по продажам. Он хоть и не технарь, но за 10-15 мин. все понял.... Не знаю какие меры им были приняты - но проблема с производительностью по его словам решилась ))), а я за слово из 12 букв setFetchSize получил вполне приемлемую сумму )))
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39280416
ни запроса ни кода хоть одного из вариантов выгрузки.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281440
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы, установка параметра в JDBC драйвере FetchSize позволило достингнуть скорости 21 000 row/sec, то есть ускорение примерно в 7 раз.
EXTRA_OPTION_ORACLE.defaultRowPrefetch = 90 000

Но это все равно мало для меня. В любом случае, спасибо за советы, буду оптимизировать дальше.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281473
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hollisterСпасибо за советы, установка параметра в JDBC драйвере FetchSize позволило достингнуть скорости 21 000 row/sec, то есть ускорение примерно в 7 раз.

Какая сетевая карта?

hollisterEXTRA_OPTION_ORACLE.defaultRowPrefetch = 90 000

Никогда Prefetch'ем в JDBC не пользовался, в свое время игрался, разницу по отношению к стандартному setFetchSize не увидел.

Т.ч. какой код у Вас используется для выгрузки - не очень понятно.

1. Профилировать Java код. Не факт, что тормозит на JDBC вызовах. Даже запись такого потока на локальный диск - уже не очень быстрая операция. По хорошему, забирать данные и отдавать/записывать на диск нужно в двух разных потоках.
2. Можно поиграться с настройками Net80, сетевой карты. Сколько-то десятков процентов выжать можно.
3. В случае многопроцессорной машины, можно попытаться прибить поток гвоздями к одному из ядер. Установка affinity для клиентского потока у меня до 2-х раз давала увеличение скорости работы по сети.

сферический хрусталь в вакуумени запроса ни кода хоть одного из вариантов выгрузки.
+
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281487
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сеть на БД - 1 Гб/сек
на клиенте 10 Гб/сек
Для тестирования я использую ETL средство (на JAVA) при этом запись на диск не произвожу, просто отбрасываю полученные данные, то есть они точно в оперативке.

Профилировать Java код смысла нет, ETL работает правильно и не виснет. Дело точно не в нем.
Сравнивал скорость работы с Greenplum и Vertica, с них те же самые данные я забираю со скоростью 200 000 r/sec. Тем же самым клиентом.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281693
кепу5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, видимо и зависит от клиента. КАк тут , примерно. Есть у вас всякие блобы и т.п. ?
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281725
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кепу5Ну, видимо и зависит от клиента. КАк тут , примерно. Есть у вас всякие блобы и т.п. ?

Нее... блобов там нет.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281767
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По Вашим сообщениям, можно только гадать на кофейной гуще или смотря в запотевший (от алкоголя ))) ) хрустальный шар.

ТоПробовали и Java и утилита exp и oracle client, примерно все одинаково.

то
есть ускорение примерно в 7 раз.


Писал свои утилиты загрузки данных в Oracle на OCI (железо было конца 90-х, сервер уровня Pentium Celeron 500, 100 M Ethernet) - добивался почти 90% загрузки CPU на сервере.

Писал свою утилиту Oracle -> PostgreSQL на JDBC - загрузка сети (1 G Ethernet) по версии Windows была на уровне > 30%, но вся работа была в один поток. Загрузка процов на серверах Oracle, PostgreSQL так же под >50% (железо не знаю, виртуалки)

IMHO & AFAIK теоретически, до достижения размера пакета примерно 32 Kb - рост скорости от увеличения fetch size должен быть практически линейным. Выше 32 K - можно наткнутся на проблемы конфигурирования OS (размер MTU и прочее и прочее)

Если увеличили fetch size на порядки, а рост скорости "в 7 раз" - это как-то странно.

Для Ethernet 100 Mb/s - наверное почти придел по скорости, для 1 G и тем более 10 G - без тюнинга OS даже близко к приделу по скорости для одного потока не подойти. IMHO & AFAIK.

Я бы все же:
1. Разбирался, что именно тормозит
2. Читать доки по настройке
3. Если проблема чисто "скачать данные" и табличка НЕ меняется и сервер супер-топовый - никто не мешает побить табличку на части и качать в несколько потоков. Теоретически, OS сама смултиплицирует поток данных в сети и в общем, общее увеличение throught input может получится. Это ЖУТКОЕ издевательство на железом
4. Перенести скачивание данных на сторону сервера. Loopback на locall host имеет на порядки меньший latency, чем сеть. Реализовать сервис выгрузки (наподобие expdb), на клиента передавать уже готовый результат (файл), можно даже его паковать. Если админы разрешат, никто не мешает даже реализовать данные "exp" как ф-цию БД (встроенный java, external function).
5. Никто не мешает объединить 3+4 в одном флаконе и выжимать 70-100% производительности сети, за счет надругательства над серверами.

IMHO & AFAIK Все советы из разряда https://heretics.wapper.ru/tavern/vredsov.htm . Т.к. прежде чем что-то делать, хорошо бы понять, что именно у Вас происходит и что именно Вам нужно.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281773
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hollister,

Какой средняя задержка по сети?
Если большая, посмотри: 15056010

Источник - отличный документ, но я его нашел только в таком виде:
"Net Services: Best Practices for Performance Scalability and High Availability"

Похожий новый документ:
Oracle Net Services 12c
Best Practices for Database Performance and Scalability
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281800
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevПисал свою утилиту Oracle -> PostgreSQL на JDBC - загрузка сети (1 G Ethernet) по версии Windows была на уровне > 30%, но вся работа была в один поток. Загрузка процов на серверах Oracle, PostgreSQL так же под >50% (железо не знаю, виртуалки)

Так загрузка в БД у нас достаточно быстрая, с этим проблем нет.


авторЕсли увеличили fetch size на порядки, а рост скорости "в 7 раз" - это как-то странно.

Видимо есть максимальный предел этого значения. разницы между 90 000 и 200 000 нет.




авторКакой средняя задержка по сети?
Если большая, посмотри: 15056010
Задержка 1 ms, поигрался с настройками - особо не помогло.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281828
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hollisterТак загрузка в БД у нас достаточно быстрая, с этим проблем нет.

Все чудесатие и чудесатие. "Загрузка" значительно более сложная операция, чем выгрузка.

hollisterЕсли увеличили fetch size на порядки, а рост скорости "в 7 раз" - это как-то странно.

Видимо есть максимальный предел этого значения. разницы между 90 000 и 200 000 нет.

Это понятно, я так и сказал, "при размере пакета < 32 kb"

Если пакет становится > 32 Kb уже легко попасть на не эффективные настройки OS (MTU и прочее), Oracle (reсv_buf, send_buf и пр.), железа (Interrupt'ы и JumboFrames) и т.д.

AFAIK Но и при 32 Kb пакетах, Вы должны уже достаточно сильно сеть загружать. Т.ч. что именно у Вас "тормозит" по Вашему описанию совсем не понятно

Тормозить может:
1. Клиент забирающий данные - профилировать
2. Сеть и передача через TCP и JDBC
3. Собственно сервер

Даже 21 Mb/s (3*7) это приличный скорость, например, мой Windows на десктопном SSD при массовом копирование мелких файлов больше 7-8 Mb/s (диск/диск) не показывает ))) Т.ч. при таких потоках, не факт, что тормоз в сети.

Думаю, что 30-50 % загрузка сети это уже очень много (т.е. 1 G Ethernet = 50 Mb/s), т.е. выжать еще раза 2 ускорения можно, а дальше уже пинать железо ))) IMHO
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281865
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антивируса не стоит случаем типа MSE, столкнулись тут что поставили нового клиента Java с кучей xml, и все тормозииит, причем протрассировала, за час чтение с диска 20 секунд, выполнение запросов 2 минуты, остальное Net message from client, убрали из под проверки папку с приложением, яву, оракл. И все ушла проблема.
...
Рейтинг: 0 / 0
Oracle отдает данные медленно.
    #39281942
Фотография hollister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вот смотрю на утилизацию сети - 1.5 % максимум до чего доходит график нагрзуки.
Похоже проблема в процессоре.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle отдает данные медленно.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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