Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Bases";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

abajo

Acceso rápido al ORACLE DB Encontrar ramas similares


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

Hay un problema. Hay una base de datos con aproximadamente un millón de registros con campos de blob. Yo uso el componente Oracle Direct Acess. La lectura lleva mucho tiempo. Cómo optimizar la lectura de la tabla a tiempo y cuáles son los componentes de un acceso más rápido a la base de datos. Por ejemplo, diré que para seleccionar registros 25000 cada uno con un volumen de 20K necesitas minutos 15



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

El texto de la solicitud al estudio.



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

Los componentes más rápidos casi no existen, si alguien es más rápido, entonces no a veces. La pregunta del contador es ¿por qué arrastrar los registros 25000 de un cliente? El usuario no aceptará más registros 50-100 en la cuadrícula, querrá una "búsqueda adicional en los hallazgos" y demás delicias. En el nivel de la base de datos, lea acerca de los parámetros de almacenamiento de LOB, hay páginas 100



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

El usuario no está encendido. Se selecciona lo siguiente de los registros del macizo Vlob, luego pasan por cálculos matemáticos y al final de la comparación se muestra una pequeña lista. No se utilizan rejillas. ¿Alguien puede decirme cómo resolver el problema del trabajo rápido con una base de datos de este tipo? Después de todo, con un volumen de registros 1000000 en general, ¡el proceso de lectura tomará medio día! Todas las respuestas serán muy agradecidas)



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

Aaaa, por lo que no toma muestras dura ~ 15min., Y el procesamiento de blobov 15min dura. Aquí es necesario mirar: lo que se almacena en un blob - información estructurada o no. Si está estructurado, entonces es necesario ponerlo en la tabla y hacer el procesamiento no en la etapa de muestreo, sino en la etapa de escritura en la tabla. Si no está estructurado, intente presentar la información en forma de estructura. Como dijo un matemático: "no existe tal área temática que no pueda ser representada como una estructura jerárquica".



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

No, en absoluto. Hice los experimentos solo muestreando los datos sin ningún procesamiento. ¡Y la estructura de los datos no se puede conectar, por lo que son matrices que describen la imagen procesada y no se pueden separar! En general, donde es posible leer algo acerca de la solución de tales problemas asociados con el uso de grandes bases de datos.



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

Esto es peor cuidadosamente Lea acerca de los parámetros de almacenamiento LOB :). Para v $ session_wait y v $ system_event, vea cuánto tiempo realmente se está gastando. Si se calculan dichos volúmenes BLOB, puede valer la pena considerar procedimientos externos. En general, en mi opinión, Oracle no es muy bueno bombeando grandes volúmenes al cliente.



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

¿Y cuánto obtendré por tiempo si integro una comparación en la cáscara del oráculo (si es posible y no descargo información al cliente, siempre que la comparación de las matrices almacenadas en la caja requiera la transformación de Fourier y otras operaciones aritméticas + asignación de una gran cantidad de memoria (hasta 29M)?



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

Si Oracl está en Wintel, entonces transferiría el procesamiento de blobs al servidor. Ese es el habitual de tres estrellas.



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

"Es decir, el habitual de tres estrellas"? Me disculpo por mi incompetencia, pero ¿qué significa esto?



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

La forma más fácil de estimar la ganancia de tiempo es escribiendo
comenzar
para cr en (<su petición>) bucle
nulo
fin;
fin;
y viendo cuánto se está haciendo это



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

Mike dice correctamente: debe llevar el procesamiento al servidor, luego la velocidad de procesamiento dependerá de la capacidad del servidor y no de la capacidad del cliente.

Incluso si Oracle no está en Wintel, puede escribir un procedimiento PL / SQL y llamar desde otro procedimiento llamado externo y escrito, por ejemplo en C o Cobol. Otra cosa es que necesita saber el idioma del sistema operativo en el que Oracle se encuentra y es compatible con la llamada de Oracle. Para ser más precisos, necesitas leer la documentación.



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

"llamado externo" se puede escribir tanto en Delphi como en ensamblador, lo principal es llamar a los acuerdos de llamada. En cuanto a Wintel, hay una frase inteligente en la documentación, (mi traducción): "los procedimientos externos son compatibles con cualquier plataforma que admita una DLL, por ejemplo, Solaris" :))



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

No creo que se pueda usar un DLL escrito en Delphi en Solaris, por lo que digo que es necesario escribir, al menos en lenguaje ensamblador, en el lenguaje cuyo compilador está en el sistema operativo.

Con respecto a la "frase inteligente", algunas adiciones: ... soportan archivos DLL o cargan dinámicamente compartiendo acceso, bibliotecas ..., por ejemplo, bibliotecas .so de Solaris.



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

De la misma documentación la frase:

Por lo tanto, se puede hacer en un lenguaje de nivel inferior como C, que es más eficiente. Por ejemplo, un Transformada rápida de Fourier (FFT) PL / SQL.



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

> Yuvich :) Bueno, bueno, esos, no iba a usar un DLL escrito en Delphi para usarlo en Solaris :) El punto era que se podía escribir cualquier cosa en cualquier cosa, siempre y cuando la llamada fuera sish. Eso, debería empezar, está claro :)



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

> petr_v_a
Nada personal Quizás no entendí algo.



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

Y la aritmética aquí es muy simple. Grid, entonces probablemente 10Mb vale la pena?
Entonces 25000 * 20K = 500000K que, con un ancho de banda promedio de red de 600K / s da 13,8 minutos.
Y nada aquí, excepto para transferir el cálculo al servidor no se puede hacer.

Alexander Sviridenkov



Páginas: 1 rama entera

Foro: "Bases";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

arriba





Memoria: 0.6 MB
Tiempo: 0.036 c
4-22465
AKV
2001-11-02 10:44
2002.01.08
Cómo determinar el identificador de ventana sobre el que se encuentra el mouse


6-22270
Ajax
2001-09-15 10:15
2002.01.08
Tuve una pregunta sobre el correo 3.


1-22130
Katherine
2001-12-20 07:37
2002.01.08
ayuda, buena gente


1-22228
Nazgul
2001-12-15 14:28
2002.01.08
¿Cómo hacer?


3-21935
pelo
2001-12-03 15:12
2002.01.08
Almacenamiento de datos





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish French
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiano Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese Rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español