منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "القواعد";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

إلى

وصول سريع إلى ORACLE DB البحث عن فروع مماثلة


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

هناك مشكلة هناك قاعدة بيانات خارج ترتيب مليون سجل مع حقول النقطة. أستخدم مكون Oracle Direct Acess. القراءة تستغرق الكثير من الوقت. كيفية تحسين قراءة الجدول حسب الوقت وما هي مكونات الوصول بشكل أسرع إلى قاعدة البيانات. على سبيل المثال ، سأقول أنه لتحديد سجلات 25000 لكل منها وحدة تخزين 20K ، فإنك تحتاج إلى 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]

آه ، هذا يعني أنه لا تدوم العينة ~ 15min. ، لكن معالجة النقط تدوم 15min. هنا تحتاج إلى البحث: ما يتم تخزينه في المعلومات المهيكلة أم لا. إذا كانت مهيكلة ، فمن الضروري وضعها في الجداول والقيام بالمعالجة ليس في مرحلة أخذ العينات ، ولكن في مرحلة الكتابة إلى الجدول. إذا لم يكن منظمًا ، فحاول دائمًا تقديم المعلومات في شكل هيكل. وكما قال أحد علماء الرياضيات: "لا يوجد مجال موضوع من هذا القبيل لا يمكن تمثيله كهيكل هرمي."



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]

وكم سأحصل عليه مع مرور الوقت إذا قمت بدمج مقارنة في قشرة أوراكل (إذا كان ذلك ممكنًا ولا تقم بتنزيل المعلومات إلى العميل ، شريطة أن تتطلب مقارنة الصفائف المخزنة في المربع تحويل فورييه وعمليات حسابية أخرى + تخصيص عدد كبير من الذاكرة (حتى 29M)



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
فارغة؛
الغاية؛
الغاية؛
и посмотрев, сколько выполняется هذا



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.61 ميغابايت
الوقت: 0.03 ج
14-22381
فيليكس
2001-11-08 20:41
2002.01.08
ماذا كان ذلك؟


14-22361
نيكولاي
2001-11-08 00:17
2002.01.08
نعم ...............................


7-22435
sssss
2001-09-23 14:15
2002.01.08
ماستير سؤال عن الحياة والموت!


14-22357
فيكتور شيرباكوف
2001-11-01 12:40
2002.01.08
استعادة الصور


1-22238
T2
2001-12-16 07:29
2002.01.08
تحديد رقم عنصر القائمة





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch أنجليزي الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский