Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Бази";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

Вниз

Швидкий доступ до БД ORACLE Знайти схожі гілки


Yelchev   (2001-12-03 10:26) [0]

Є проблема Існує БД в ній близько мільйона записів з блоб полями. Ісспользую компонент Oracle Direct Acess. Читання займає дуже багато часу. Як оптимізувати читання таблиці по часу і які є компоненти більш швидкого доступу до БД. Для прикладу скажу щоб вибрати 25000 записів кожна об'ємом 20К необхідно 15 хв



Владислав   (2001-12-03 11:22) [1]

Текст запиту в студію.



petr_v_a   (2001-12-03 11:24) [2]

Більш швидкі компоненти врядли існують, якщо хтось і швидше, то не в рази. Зустрічне питання - навіщо тягнути на клієнта 25000 записів? Користувач не сприйме більше 50-100 записів в гріді, захоче додатковий "пошук в знайденому" і ін. Принади. На рівні бази почитайте про параметри зберігання LOB, там сторінок 100



Yelchev   (2001-12-03 12:22) [3]

Користувачеві взагалі нічого не світиться відбувається наступне з записів вибирається влоб масиви потім вони проходять математичні розрахунки і в кінці порівняння виводиться невеликий список. Ніякі гріди не використовуються. Може хто підкаже взагалі як вирішити проблему швидкої роботи з такою базою. Адже при обсязі в 1000000 записів взагалі процес читання займе пів дня! Всім хто відповів буду дуже вдячний))



Yuvich   (2001-12-03 12:44) [4]

А-а-а, так значить не вибірка триває ~ 15мін., А обробка Блоб триває 15мін. Тут треба подивитися: що зберігається в БЛОБ - структурована інформація чи ні. Якщо структурована, то треба покласти її в таблиці і обробку робити не на етапі вибірки, а на етапі запису в таблицю. Якщо не структурована, то все одно спробувати уявити інформацію у вигляді структури. Як сказав один математик: "немає такої предметної області, яку не можна було б уявити у вигляді ієрархічної структури".



Yelchev   (2001-12-03 12:50) [5]

Та ні зовсім не так. Я робив експеремент просто по вибірці даних без будь-якої обробки. А структурувати дані не можна зв'язку стем що це масиви які описують оброблене зображення і не можна їх розділити! Взагалі де можна що то почитати про рішення таких проблем пов'язаних з використанням надбольшіх БД



petr_v_a   (2001-12-03 13:33) [6]

Це вже хуже.Прідется уважно почитати про параметри зберігання LOB :). За v $ session_wait і v $ system_event подивіться, на що реально витрачається час.Якщо обраховуються такі обсяги BLOB, може, варто подумати про external procedures.Вообще, на мою враженню, Oracle не дуже добре качає великі обсяги на клієнта.



Yelchev   (2001-12-03 13:55) [7]

А на скільки я отримаю виграш за часом якщо вбудовувати порівняння в оболонку оракла (якщо це можливо і не качати інформацію на клієнта за умови що порівняння масивів зберігаються в вбоб необхідно переобразованіе фурье і інші арифметичні операції + виділення великої кількості пам'яті (до 29М)



Mick   (2001-12-03 14:05) [8]

Якщо Oracl на Wintel, то я б переніс обробку Блоб на сервер. Тобто звичайна трехзвенка.



Yelchev   (2001-12-03 14:11) [9]

"Тобто звичайна трехзвенка"? Прошу вибачення за нерозуміння але що це означає?



petr_v_a   (2001-12-03 14:29) [10]

Найпростіше оцінити виграш за часом, написавши
починати
for cr in (<ваш запит>) loop
null;
end;
end;
і подивившись, скільки виконується це



Yuvich   (2001-12-03 15:48) [11]

Mike правильно говорить - треба винести обробку на сервер, тоді швидкість обробки буде залежати від потужності сервера, а не від потужності клієнта.

Навіть якщо Oracle нема на Wintel, можна написати процедуру PL / SQL і викликати з неї іншу процедуру обізвавши зовнішньої і написаної, наприклад на С або Cobol. Інша справа, що треба знати мову операційки, на якій стоїть Oracle і підтримує виклик Оракл. Щоб бути точніше - треба почитати документацію.



petr_v_a   (2001-12-03 16:29) [12]

"Обізвав зовнішньої" можна написати і на Delphi, і на асемблері, головне - сішние угоди про виклики. Щодо Wintel - в документації є шикарна фраза, (переклад мій) - "external procedures підтримує на будь-якій платформі, поддержівающе DLL, наприклад Solaris" :))



Yuvich   (2001-12-03 17:12) [13]

Я не думаю, що DLL, написану на Delphi, можна використовувати на Solaris, тому я і кажу - треба писати, хоч на асемблері, на тій мові, чий компілятор є в ОС.

З приводу "шикарною фрази" деякий додаток: ... підтримуючої DLL або динамічно завантажувані, що розділяють доступ, бібліотеки ..., наприклад Solaris .so бібліотеки.



Yuvich   (2001-12-03 17:15) [14]

З тієї ж документації фраза:

So, some tasks are more quickly or easily done in a lower-level language such as C, which is more efficient at machine-precision calculations. For example, a Fast Fourier Transform (FFT) routine written in C runs faster than one written in PL / SQL.



petr_v_a   (2001-12-03 17:53) [15]

> Yuvich :) Ну ладно те, що не збирався я DLL, написану на Delphi, використовувати на Solaris :) Сенс-то був у тому, чо писати можна на чому завгодно, лише б виклик був сішним. Те, воно повинно запуститися, зрозуміло :)



Yuvich   (2001-12-03 18:02) [16]

> petr_v_a
Нічого особистого. Можливо, я чогось не зрозумів.



ASV   (2001-12-04 03:11) [17]

А арифметика тут дуже проста. Сітка, то у вас, ймовірно 10Мб варто?
Так 25000 * 20К = 500000К що, при середній пропускної здатності мережі в 600К / сек дає 13,8 хвилини.
І нічого тут, крім як перенести розрахунок на сервер зробити не можна.

Олександр Свириденко



сторінки: 1 вся гілка

Форум: "Бази";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.62 MB
Час: 0.03 c
1-22091
Mikhalyov Dmitry
2001-12-19 16:02
2002.01.08
питання з Pascal


6-22270
Ajax
2001-09-15 10:15
2002.01.08
У мене тут виникло 3 питання про пошту.


1-22113
Yuraz
2001-12-19 20:25
2002.01.08
Братики, чому


4-22478
Росс
2001-08-28 16:53
2002.01.08
Menu Start


1-22175
voyager
2001-12-20 16:06
2002.01.08
про Hint е





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська