Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 15-02-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.609
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

Cita:
Empezado por Crandel Ver Mensaje
...pd: cantinero ... una ronda de firebird para todos, yo invito
Bueno, aunque no estamos en La Taberna todavía, invito yo la segunda ronda y la mejor bebida que tengas Emilio para Erick, a quien le pido una disculpa por cualquier agravio que le haya causado con mis intervenciones.

Un abrazo.

Al.
Responder Con Cita
  #22  
Antiguo 15-02-2008
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 22
erickperez6 Va por buen camino
Cita:
Bueno, aunque no estamos en La Taberna todavía, invito yo la segunda ronda y la mejor bebida que tengas Emilio para Erick, a quien le pido una disculpa por cualquier agravio que le haya causado con mis intervenciones.
Tambien pido disculpas, quizas se me fue un poco la mano, yo invito la tercera ronda si no amanecieron resacados con las dos de ayer
Responder Con Cita
  #23  
Antiguo 10-11-2011
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
Thumbs up Firebird Rulez!!!

Hola compañeros, antes que nada buenas tardes (aqui en México), y yo invito la ronda de la 'curacion' porque para estas fechas ya estarán en la resaca de las rondas que mencionaron anteriormente .

De antemano comentarles que tengo poca experiencia, pero he tenido la oportunidad de trabajar con MySql, y con Firebird... la verdad me quedo con Firebird, actualmente administro una base de datos de mas de 28 gb, y tengo en ella dos tablas criticas de las cuales una cuenta con mas de 81 millones de registros y la otra con mas de 70 millones de registros (Esto tomando en cuenta que se realizan 'cortes de informacion' y conservo solo la informacion concerniente a años anteriores y el actual, es decir ahorita solo tengo informacion de 2009, 2010 y lo que va del 2011... si dejara la informacion completa, que mantengo en respaldos anteriores, podria facilmente superar los 50Gb), de momento funciona bien, pero si les comento que hay ciertos reportes que se comienzan a tardar mas en devolver respuesta, cabe mencionar que mis consultas, las realizo sobre campos indexados de tipo numerico, siempre pendiente del rendimiento de las mismas; al ritmo que esta creciendo la empresa, me doy cuenta que en relativamente poco tiempo podria tornarse caotico, asi que me veo obligado a cambiar la forma de trabajo.

Acudo a los expertos de CD para solicitarles que me iluminen acerca de que ideologia podria adoptar para optimizar el rendimiento de mi BD, tanto para el manejo transaccional, como para el manejo de reportes del nivel administrativo...

Utilizo Firebird 2.1 sobre Windows 2003 server, y los clientes corren sobre Windows xp, Vista y 7.

Mi base de datos es alimentada por mas de 200 puntos de venta en todo México, no se como vaya a funcionar cuando lleguen a 500 Puntos de venta

Lei la informacion que posteo Jachguate sobre como Youtube soluciono ciertos problemas, se que la cantidad de informacion y de consultas por dia no hay ponto de comparacion entre mi 'pequeña' base de datos y la cantidad de informacion que manejan esos gigantes como Youtube, pero me surgen muchas dudas.
  • Deberia usar acumulados por semana, mes y año separados en diferentes bases de datos, para poder solicitar comparativos anuales, y al mismo tiempo mantener solo los movimientos del año en curso para distribuir la cantidad de registros?
  • Seria necesario distribuir la informacion en diferentes servidores incluso?
  • De plano, deberia cambiar a un motor mas potente como Oracle?
  • Deberia cambiar el SO del servidor?
  • Como manejan su informacion las grandes cadenas, como Wal*Mart, Chedraui, etc.?

La verdad estoy un poco confundido, espero y me puedan aconsejar o recomendar algo para poder tomar un rumbo
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
  #24  
Antiguo 10-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, bueno... son muchas cosas a tener en cuenta, que habría que estudiar detalladamente en tu caso, ya sabes que cada caso es diferente y es muy difícil acertar dando soluciones generalizadas.
Para empezar, por los reportes que dices que son algo lentos, habría que saber qué hacen esos reportes, qué generador de reportes usas, etc. además de pequeños detalles (y muy importantes), por ejemplo, ¿generas vista previa?, ¿haces doble pasada? (para calcular entre otras cosas el "Página x de y"), etc.
Algunso generadores crean unos ficheros temporales en disco que necesitan mucho espacio, cuanto mayor sea el reporte a generar, es conveniente tener espacio más que de sobras y a ser posible en otro disco. Si usas la previsualización será también más lento, obviamente, tiene que generar todas las páginas. En fin, son "truquitos" que hay que ir poniendo en práctica para mejorar el rendimiento.
También depende del tipo de informe, supongamos que es una estadística de ventas del año anterior o de meses anteriores, entonces puede que sea interesante tener un pequeño servidor con el backup último y usar esa BD, en lugar de usar el servidor principal, ya que no necesita los datos actuales.
Continuando con tus preguntas:

Cita:
Empezado por erickahr
Deberia usar acumulados por semana, mes y año separados en diferentes bases de datos, para poder solicitar comparativos anuales, y al mismo tiempo mantener solo los movimientos del año en curso para distribuir la cantidad de registros?
Esto se responde con lo que he comentado antes, puede ser interesante mantener tablas con acumulados, por lo que las consultas serían instantáneas. Esos acumulados se programan en la BD, mediante triggers, así que todo el trabajo lo haría la propia BD y nos despreocuparíamos nosotros.

Cita:
Empezado por erickahr
Seria necesario distribuir la informacion en diferentes servidores incluso?
De momento no creo que sea necesario, aunque estaría bien tener un servidor de reserva, como he comentado antes, para cosas "anexas" que no recarguen al servidor principal, cuando sea necesario.

Cita:
Empezado por erickahr
De plano, deberia cambiar a un motor mas potente como Oracle?
En principio, no, ten en cuenta que con oracle vas a tener que poner un servidor muy GRANDE, en tu servidor actual se quedará pequeño, así que si vas a necesitar un servidor más grande, aprovecha para instalar Firebird, seguro que te lo agradece.
Es curioso lo habitual que son comentarios del estilo: "Mi BD va lenta, voy a tener que poner un oracle y un servidor nuevo". ¡¡¡Jod...!!!, pues ponle el nuevo servidor a tu BD actual, verás como lo agradece.
Ten por seguro que tu servidor actual, (y no tengo ni idea de cual es), si montas oracle en él, es seguro que va a ir mucho, mucho más lento que firebird. Por lo que necesitarás un servidor más grande sólo para que vaya igual que el actual con firebird. Pues entonces monta firebird en uno más grande (grande=potente).

Cita:
Empezado por erickahr
Deberia cambiar el SO del servidor?
Respuesta corta: SI.
Respuesta larga: Por supuesto que SI.
Bromas aparte, te garantizo que si instalas linux en tu servidor actual puedes incrementar su rendimiento, como mínimo, un 30% aunque normalmente será más.
No has dicho qué servidor tienes, pero es primordial tener uno en condiciones, igual que lo tendrías que instalar si pusieras oracle.
Servidores dedicados de 4 u 8 cores, cuanta más memoria ram será mejor, discos de 10000 ó 15000 rpm, por supuesto RAID 5 al menos, un NAS de red también en RAID5 para mantener backups, etc.
El sistema debe estar particionado para mantener la BD en una partición, ficheros temporales en otro disco (puede ser el NAS), recuerda que tanto firebird como la mayoría de gestores de informes/reportes usan ficheros temporales y es conveniente que estén en otro disco que no sea el de la BD. No en otra partición (porque sería el mismo disco), sino en otro disco diferente.
En mi trabajo, a los clientes más grandes, se les instala de esa manera, grupos de discos RAID5 la BD, otro para los temporales, otro externo para backup, etc.
Resumiendo, poner un servidor profesional, y por supuesto, Linux.
Si hay algo que une a las empresas que se han citado antes en este hilo, google, wikipedia, etc. es que todos usan sin excepción servidores linux. También sabrás que casi todos los superordenadores más potentes del mundo funcionan con linux, como no puede ser de otra forma.

Cita:
Empezado por erickahr
Como manejan su informacion las grandes cadenas, como Wal*Mart, Chedraui, etc.?
No tengo información sobre ellos, pero los que he citado antes, además de amazon, casi todos los servidores webs del mundo, etc. funcionan con linux. O con alguna versión '*nix', que viene a ser lo mismo.
En España, la cadena de supermercados Mercadona, que factura más que Erosky y Carrefour juntas, usan Linux desde hace años.
Sabrás que Firebird funciona en linux, solaris, hp-ux, macosx, windows, etc. así que no tendrás ningún problema en instalarlo en cualquier ordenador, desde los más pequeños hasta los más grandes superordenadores/mainframes del mundo.
Por supuesto, instala en linux la versión classic server o la última versión superclassic.

Bueno, si después de todos esos cambios, todavía te resulta lenta... todavía hay mucho que hacer, "afinar" las consultas sql. En mi trabajo nos encontramos hace varios años con las estadísticas acumuladas de varios años que tardaban un poco más de lo recomendable. Se dedicó un tiempo a estudiarlas bien, a depurarlas, afinarlas, simplificarlas, etc. y actualmente esas estadísticas pueden ser de las consultas más rápidas de la gestión, incomprensiblemente

Cuando ya tengas tanta información que te sea imposible gestionar con firebird, a pesar de usar un servidor como un camión de grande, entonces puede ser el momento de pasar a.... ¡¡¡postgresql!!!, pero no a oracle.
¿Por qué?, pues porque con postgresql tienes más facilidades que firebird para instalar clusters de servidores y repartir la carga entre ellos, pero en fin, con un servidor "decente" actual, de entre 4 y 16 cores, instalándole unos buenos 16 a 64 GB de ram y un buen sistema de discos en raid... creo que tienes firebird para rato, sin oracle. Sólo con las licencias de oracle ya te puedes comprar un superservidor enormemente monstruoso.

En fin, todo esto es información muy generalizada, muy superficial, habría que estudiar cada apartado con detalle para "dar en el centro de la diana"
Responder Con Cita
  #25  
Antiguo 11-11-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 26
Delphius Va camino a la fama
Yo mucho no puedo aportar... Casi se mandó un buen discurso proveniente de sus años de experiencia y eso vale.
Si algunos informes son mas lentos, quizá sea como te han dicho disponer de un servidor con una DB a modo de sólo lectura con los últimos backups para consultar en vez de que sea sobre la DB operativa. Esto podría alijerar la carga, aunque tiene la contra el factor económico y que se deberá llevar a cabo un mejor control de los backups.

Otra de las posibilidades, que podrían ayudar a mejorar el rendimiento sobre las consultas para generar informes es aplicar un poco de desnormalización. Es decir, romper un poco las reglas normales y disponer de datos ya preprocesados, calculados, o estimados. Quizá se consiga un aumento del tamaño de la base de datos, pero al menos con estas tablas desnormalizadas, bien pensadas y estudiadas, con sus respectivos índices, etc. Generar un informe que requiera de por dar un ejemplo extremo, 10 joins, 5 group by, 7 order by, 20 coalesce, y 10 Max()s quizá pueda reducirse, siendo optimistas a la mitad.

Una solución mágica seguro no hay. Tirar de un lado, invetibalemente tendrá alguna desventaja y repercusión en otro punto. Es el Yin-Yang... ni lo uno, ni lo otro, ni mutuamente excluyentes, ni mutuamente dependientes... es esa sensación rara de que al final damos vueltas en círculos

¿Quieres tirar por el lado de mejorar la base de datos? Te rompe los esquemas y a adaptar de nuevo el sistema para absorver los cambios.

¿Quieres adquirir más poder? Tienes que sacar la billetera...

Me hiciste acordar ahora de otra frase: Rapido, Bueno, Barato. Elija 2 cualquiera.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #26  
Antiguo 11-11-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Daré por sentado que cuando te refieres a informe, te refieres a una CONSULTA SQL con sus JOIN'S y GROUP BY's, ORDER BY's, etc. a como ha dicho Delphi.

Desde mi punto de vista recomendaría:
Lo primero, tomando lo dicho por casimiro, es "debuguear" las consultas y ver en que partes puedes optimizarlas.
Segundo: Tomando la consideración de Delphius, puedes reducir el uso de JOIN's o GROUP BY's desnormalizando los datos. Por ejemplo, si unes dos tablas para solamente obtener el nombre completo del cliente, puedes evitarte hacer la unión simplemente guardando el nombre del cliente en la tabla de Ventas, por poner un ejemplo.
Tercero: Anteriormente dicho por Casi, instala Linux.
Cuarto: Aumenta la RAM a la mayor cantidad que puedas y utiliza un disco interno dedicado con la interfaz de conexión más rápida disponible. (Este es el más fácil de los cuatro pero no es una solución a largo plazo).

Ahora, no sé si no he entendido el punto o qué, pero veo con recelo eso de partir la DB. No entiendo que rendimiento puedas obtener si partes la DB para luego consultar las distintas partes. Sino me equivoco, desde la versión 2.5 de Firebird puedes hacer conexiones a otras base de datos desde los procedimientos almacenados. Nunca he probado esta funcionalidad, pero estoy casi seguro que tiene su penalidad en el tiempo que se tarta en hacer la conexión. Sin embargo, el tiempo que se tarda en hacer la conexión puede ser relativamente muy enferior al tiempo de espera para generar un informe con todos los datos almacenados en una misma DB. En este caso puedes tomar provecho de esta funcionalidad. Pero esto sería algo que tienes que hacer con mucho cuidado para obtener el máximo rendimiento posible. Desde mi punto de vista primero probaría las cuatro recomendaciones anteriores.

Cambiar el motor de base de datos es trabajo. Tienes que estar muy justificado del por qué hacer el cambio. A cómo te han dicho, Oracle no sería recomendable. Mejor utiliza PostgreSQL que trae replicación nativa. Ya Casimiro te explicó el por qué.

Por último, estoy seguro que no manejas el nivel de transacciones que tiene Amazon o Youtube. Pero ya que preguntas, tengo entendido que estas empresas utilizan una arquitectura de base de datos llamada "NOSQL". Son motores que están optimizados para escribir y leer rápido. Exceptuando lo básico, en ellos no existe el lenguaje SQL. No es la gran cosa. Simplemente se reducen a obligarte a hacer desnormalización de datos a cómo te ha dicho Delphius y yo lo recojo en el segundo punto. Si quieres la mayor potencia, tienes que dar a cambio el lenguaje SQL.

Por último, quiero cerrar diciéndote que Firebird es uno de los motores SQL más rápidos que puedes encontrar. Muy superior a PostgreSQL y Oracle. Su diseño sencillo lo hace uno de los motores más ágiles. Debes de dejar la idea que otro motor te brindará mejor rendimiento, porque créelo, será casi imposible.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #27  
Antiguo 11-11-2011
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola, tremendo y viejo hilo que se ha revivido, un saludo a todos los entrañables amigos que van participando por aquí!!

Estoy algo corto de tiempo y, aunque me gustaría, no he tenido ocasión de leer con detenimiento lo que ya se ha mencionado en respuesta a la pregunta de erickahr.

Solo decir que, como bien ha dicho ya mi estimado casimiro es algo aventurado dar respuestas genéricas y por eso, no entraré en mayores detalles. Solo mencionar que si que hay diversas técnicas que se pueden aplicar para encontrar una solución. Como buen DBA (te guste o no, estas llevando ese rol, quizás aparte del de desarrollador y otras cosas), debes aprender a pensar en función de "cuellos de botella".

Cuándo una aplicación está respondiendo más lento de lo que esperarías, usualmente es porque hay un cuello de botella... es decir, tenes cierta cantidad de información y cierta "potencia" en el hardware para procesarla... todo el sistema será tan rápido como el punto del proceso por donde más lento pase la información. Cosas a tener en cuenta son muchas, y varían de acuerdo a cómo tenes configurada la base de datos, cómo se realizan las consultas, etc. Hay que empezar por lo básico, como por ejemplo comprender al optimizador del motor y escribir las consultas de manera que los planes sean óptimos, evitar full table scans, etc.

Cosas a tener en cuenta son:
  • I/O (de nada sirve tener ocho nucleos y 40 Gb. de RAM, si los discos son lentos, hay contención o serialización de operaciones a nivel de I/O (por ejemplo, por tener una sola controladora)). Lamentablemente Firebird no ofrece el grado de control que ofrecen otras bases de datos para manejar esto al antojo del DBA, pero si que puede hacerse algunas cosas.
  • Procesador. Puede que tengas 16 nucleos, pero que la base de datos solo pueda sacar provecho de uno (especialmente cierto con firebird).
  • RAM. En el servidor de base de datos, es bueno tener mucha RAM, y es mejor sacarle provecho. He visto casos donde el dueño del negocio se ve obligado a comprar un servidor con 8, 16 o más GB de RAM, pero cuando revisas Firebird está tirando solamente de un par de ellos. (especialmente cierto con Firebird)
  • Memoria Virtual: Esto podría ser parte del punto anterior, del que se desprende otro tema importante. He podido ver en ocasiones servidores de bases de datos con X cantidad de RAM, pero la base de datos está configurada de tal manera que requeriría Y cantidad de RAM, donde Y > X, por lo tanto, el generoso sistema operativo decide hacer uso de la memoria virtual (especialmente cierto con servidores windows). Todo bien, pero lo malo de esto es que mientras el acceso a RAM es del orden de los GB/s, el acceso a disco es cientos o miles de veces más lento. Esto trae al traste la caché de la base de datos que termina por leer de disco lo que supuestamente está en memoria, con la carga adicional de tener que escribir primero al disco alguna página para hacer espacio en RAM... un desastre total.
  • Sistema operativo: Quizás lo creas o no... pero el mismo firebird corriendo sobre el mismo hardware en un linux es más rápido que corriendo en un servidor windows. Cuanto más rápido, depende de muchos factores como para aventurarse a dar un número, pero en mi experiencia he llegado a ver casos en que son hasta 50% o 60% más rápidos.
  • Mil factores más... no terminaría. Me detendré aquí... me encantaría seguir y me vuelan las ideas.... pero debo llevar los frijoles a mis polluelos y dejar terminadas algunas cosas antes de salir de viaje en menos de 24 horas.

Cita:
Empezado por erickahr Ver Mensaje
Hola compañeros, antes que nada buenas tardes (aqui en México), y yo invito la ronda de la 'curacion' porque para estas fechas ya estarán en la resaca de las rondas que mencionaron anteriormente .
Esto es cierto? jajaja, estaré dentro de algunas semanas en tu tierra (DF), lamentablemente poco tiempo, pero quizas podamos llevar esto del plano virtual al plano donde la chela surte sus efectos... ajjaja.

Un saludo y hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 11-11-2011 a las 19:02:22.
Responder Con Cita
  #28  
Antiguo 11-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, amigo jachguate, es cierto que windows usa la memoria virtual (fichero en el disco duro) para "ampliar" aunque tenga mucha RAM instalada, incluso le sobre, pero eso es un problema de windows, como has dicho.
En linux, no es así, linux usa toda la memoria ram disponible y sólo cuando ya no le queda más remedio, entonces usará la memoria virtual, por lo que siempre está sacando el máximo rendimiento a la ram instalada, y cuanto más tenga, mejor.
En los apartados de memoria y cpus, no estoy nada de acuerdo contigo, mejor dicho, o te has confundido o no te he entendido, pero aquí dices:

Cita:
Empezado por jachguate Ver Mensaje
  • Procesador. Puede que tengas 16 nucleos, pero que la base de datos solo pueda sacar provecho de uno (especialmente cierto con firebird).
  • RAM. En el servidor de base de datos, es bueno tener mucha RAM, y es mejor sacarle provecho. He visto casos donde el dueño del negocio se ve obligado a comprar un servidor con 8, 16 o más GB de RAM, pero cuando revisas Firebird está tirando solamente de un par de ellos. (especialmente cierto con Firebird).
Eso que mencionas puede ocurrir con windows, con la versión superserver, y si además no has configurado cpuaffinitymsak en firebird.conf
Pero no es así en linux con las versiones classicserver ni superclassic, firebird hace uso de todas las cpus instaladas, perfectamente, transparente al usuario, y además lo hace muy bien, aprovechando cada cpu, según su nivel de utilización, si está muy ocupada entonces lanza la consulta por otra cpu.
Lo tengo más que probado en mis clientes, observando con 'top' los procesos del servidor según van trabajando los usuarios, y cómo firebird va haciendo peticiones a cpus más ociosas para repartir el trabajo entre todas las cpus.
Además no sólo lo digo yo, lo dice la propia documentación de firebird:

Cita:
Why doesn't Classic have CPUAffinity setting in firebird.conf?
Because CPUAffinity only applies to SuperServer. Classic can work on multiple CPUs without problems, while SuperServer needs that option to aviod context switching between processors with degrades performance dramatically.
Cita:
Multiprocessor/multicore

ClassicServer // SuperClassic
SMP (symmetrical multi-processing) is supported out of the box. The CpuAffinityMask parameter in firebird.conf is ignored.
Unlike Superserver, Classic and SuperClassic can also assign multiple connections to the same database to different processors.

SuperServer

Windows SuperServer defaults to using the first logical processor only, because prior to 2.5 it performed badly on SMP systems. To make use of all your processors, set the CpuAffinityMask parameter in firebird.conf to: 3 for 2 CPUs/cores; 15 for 4 CPUs/cores; 255 for 8 CPUs/cores.
Linux SuperServer ignores CpuAffinityMask.
Ya digo, que cuando un cliente ha ido aumentado sus conexiones al servidor y vemos que todos los procesadores están casi siempre a un alto nivel de uso, le cambiamos el servidor por uno de más cpus y problema solucionado. Firebird reparte las peticiones entre ellos y se acabó el problema, es una "gozada" ver varias cpus a tope de rendimiento, abres una nueva conexión, haces un select complicado y ves en la pantalla de monitorización como la consulta se lanza contra otra cpu que está ociosa y no notas nada de retraso.
El único problema es ahí los discos duros, pero ya digo que hay que montar los más rápidos que se pueda permitir económicamente.
En un par de clientes también tenemos instalado red de fibra óptica, por lo que los "cuellos de botella" que mencionas se quedan prácticamente en la eficiencia de las SQLs que hayamos hecho nosotros

En cuanto a la memoria, la verdad es que firebird consume muy poco, otra gran ventaja, pero sí necesita un poco por cada conexión abierta, obviamente, no recuerdo la cantidad, pero también es poco, el lunes lo puedo confirmar preguntando a un cliente, pero juraría haber visto en algunas ocasiones más de 6 Gb de ram usadas, eso sí, con varias decenas de conexiones activas.

En fin, que al igual que afirmas que con servidores linux la diferencia de rendimiento con windows es bastante grande, también creo que esos "limitantes" que has puesto de cpus y ram, se dan sólo en windows, donde se usa la versión superserver. Y no tiene nada que ver con las versiones classic de firebird, menos todavía en linux.

Última edición por Casimiro Notevi fecha: 11-11-2011 a las 20:32:08.
Responder Con Cita
  #29  
Antiguo 11-11-2011
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Hola, amigo jachguate, es cierto que windows usa la memoria virtual (fichero en el disco duro) para "ampliar" aunque tenga mucha RAM instalada, incluso le sobre, pero eso es un problema de windows, como has dicho.
En linux, no es así, linux usa toda la memoria ram disponible y sólo cuando ya no le queda más remedio, entonces usará la memoria virtual, por lo que siempre está sacando el máximo rendimiento a la ram instalada, y cuanto más tenga, mejor.
Es correcto lo que decís. En cualquier caso, una de las tareas del DBA es evitar que el servidor de base de datos use memoria virtual. Si dada la necesidad, no se puede instalar más memoria, es preferible, por ejemplo, tener un caché más pequeño, que permita que todas las operaciones se realicen en RAM, que dejar que se use memoria virtual, independientemente del sistema operativo. Como ya se ha acotado, en Linux podrás, al menos, esperar a que realmente se consuma toda la RAM... en windows eso es diferente.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
En los apartados de memoria y cpus, no estoy nada de acuerdo contigo, mejor dicho, o te has confundido o no te he entendido
Creo que no me has entendido o no me supe explicar.
Lo que yo dije es:
Cita:
Procesador. Puede que tengas 16 nucleos, pero que la base de datos solo pueda sacar provecho de uno (especialmente cierto con firebird).
Pretendí dar a entender más o menos lo siguiente:

Procesador. Puede que tengas 16 nucleos, pero que (por estar mal configurada o por haber elegido la edición incorrecta) la base de datos solo pueda sacar provecho de uno (especialmente cierto con firebird).

Y nunca quise decir que Firebird no pudiese sacar provecho de todos los núcleos o procesadores instalados.

Cuando comparas Firebird con otros motores, sin embargo, no puede dejar de reconocerse que aún tiene limitaciones (la falta de una caché compartida, pro ejemplo), y que no será hasta la versión 3 que esto mejore realmente. Esto tiene que ver también con el punto anterior.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Firebird hace uso de todas las cpus instaladas, ... si está muy ocupada entonces lanza la consulta por otra cpu.
Esto en realidad lo hace el scheduler del sistema operativo, no Firebird. Lo que Firebird hace es sacarle provecho .

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Ya digo, que cuando un cliente ha ido aumentado sus conexiones al servidor y vemos que todos los procesadores están casi siempre a un alto nivel de uso, le cambiamos el servidor por uno de más cpus y problema solucionado
mmmm... yo diría "cuello de botella solucionado". Puede que al subir de 8 a 32 núcleos, resulte que el siguiente cuello de botella (que podría ser I/O, o RAM) impida que se saque provecho de tal capacidad de proceso!

Cita:
Empezado por Casimiro Notevi Ver Mensaje
En cuanto a la memoria, la verdad es que firebird consume muy poco, otra gran ventaja, pero sí necesita un poco por cada conexión abierta, obviamente, no recuerdo la cantidad, pero también es poco, el lunes lo puedo confirmar preguntando a un cliente, pero juraría haber visto en algunas ocasiones más de 6 Gb de ram usadas, eso sí, con varias decenas de conexiones activas
Esto es parametrizable. Firebird consume poco (como motor) y eso es una de entre todas sus bondades. Pero cuanto consumirá cada cliente (en el caso de classic/superClassic) o cada base de datos (en el caso de SuperServer) depende de cómo esté configurado, de la cantidad de información en la base de datos y de cómo tiras de ella desde el cliente.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
también creo que esos "limitantes" que has puesto de cpus y ram, se dan sólo en windows, donde se usa la versión superserver. Y no tiene nada que ver con las versiones classic de firebird, menos todavía en linux.
No concuerdo con tu redacción, aunque lo has dicho mejor que yo... al final, creo que eran temas obligados (realmente no sabía si ya se habían tocado o no), ya que no sabemos prácticamente nada de la instalación/configuración particular de la que hablamos, y no debemos olvidar que la información aquí mencionada queda también para la posteridad y nada mejor que, de manera colaborativa, tratar de brindar un panorama más o menos completo.... tarea bastante complicada en un tema tan amplio como este, para el que fácilmente se llevan meses o años de estudio y experiencia.

Yo diría que:
  • La RAM es una consideración a tener en cuenta independientemente del sistema operativo, de la base de datos (oracle, firebird, etc) o de la edición de firebird, para ser específicos en este caso. La combinación de estos da diferentes resultados y algunos serán más ventajosos que otros, pero es algo que un DBA debe conocer y no puede olvidar, ya que si puede llegar a ser un cuello de botella.
  • La cantidad de CPU's y su velocidad, es igualmente importante, independientemente del sistema operativo y del fabricante de la base de datos. El DBA debe tener conocimiento suficiente del motor para poder elegir entre opciones/parámetros de configuración de manera que saque el mayor provecho de este recurso.
Esto, sin excluir otros factores que ya he mencionado antes.

Un saludo, amigo Casimiro y a todos!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #30  
Antiguo 11-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Seguramente no te entendí bien, mejor ahora, quedará también más claro para otros posibles usuarios

Buen viaje
Responder Con Cita
  #31  
Antiguo 11-11-2011
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
Smile Asi sea

Hola, buen dia a todos compañeros foreros, y antes que nada muchisimas gracias a todos, y especialmente en orden de respuesta.
  • Casimiro Notevi
  • Delphius
  • Chris
  • Jachguate

He leido detenidamente cada punto de sus recomendaciones, de sus consejos, y bueno creo que el primer punto de "Things to do" es montarme un servidor linux, inceramente estoy muy verde en linux, pretendo usar Fedora, aunque ya antes he tenido problemitas con otras distros para levantar el Samba, y tengo ciertas dudas, pero por lo leido vale bastate la pena el cambio, y lo haremos.

Como datos adicionales, solo para no dejar cosas en el aire, manejamos un servidor dedicado para los DNS y administracion de los usuarios, permisos y demas; y otro servidor exclusivamente para la BD, el cual no corre aplicaciones, es dedicado, no administra nada, cuenta con 4 cores, se generan Backups diarios a la 1 de la madrugada (cuando el servidor no tiene conexiones activas), y se almacenan en un disco externo de 4TB.

Como bien dice Chris con la cuestion de los reportes creo que me explique mal, si me refero al momento de hacer la consulta, ya que una vez con los datos necesarios el RAVE me funciona perfecto, y si, hay algunos reportes 'pesados' en los cuales cambiaré la ideologia y en lugar de sacarlos con Joins, Groups, y demás, se mandarán a una tabla de acumulados para sacar la informacion con un select mas sencillo, aunque en este punto me entra otra pequeña duda...
  • Al hacer updates en las tablas de acumulados repetidamente para mantenerlas actualizadas
    ¿Se estaria generando demasiada basura en la BD?
  • De ser asi ¿Cada cuanto se tendria que hacer una reculeccion (mediante Backup-Restore)? O ¿como se podria manejar esa cuestion?


Cita:
Empezado por Delphius
Me hiciste acordar ahora de otra frase: Rapido, Bueno, Barato. Elija 2 cualquiera.
Me rei mucho con esa 'Reflexion', es la pura y cruda realidad

Y bueno por último y no por eso menos importante Jachguate, pues tu dime como por que fecha andas en esta tierra Azteca, y claro que nos ponemos de acuerdo y si alguien más anda por el rumbo, armamos una 'Taberna' en el plano real .


Me temo que andaré por aca dando lata mas adelante, porque esto apenas comienza...

Saludos y nuevamente Gracias.
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
  #32  
Antiguo 11-11-2011
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Buen viaje
Gracias Casimiro!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #33  
Antiguo 11-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por erickahr Ver Mensaje
aunque ya antes he tenido problemitas con otras distros para levantar el Samba
En el servidor sólo has de instalar firebird, nada más, no tienes que usar samba ni nada de nada.
El servidor firebird se comunica por el puerto 3050 y él se encarga de hacer las peticiones a la base de datos y de dar las respuestas. Pero nadie, ningún usuario tiene por qué tener acceso a nada del servidor, no hay que compartir nada.
Mejor que los usuarios ni sepan dónde está el servidor, usas un alias y listo.
Cuando vayas a instalarlo si tienes cualquier duda, pregunta, aunque es un tema que se ha tratado en diversas ocasiones y encontrarás información amplia si usas las búsquedas de clubdelphi.
Responder Con Cita
  #34  
Antiguo 11-11-2011
Gregory Mazon Gregory Mazon is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Poder: 0
Gregory Mazon Va por buen camino
Hola, no tengo tanta experiencia en este tema como ustedes pero me enfrento a una situación muy similar y lo que yo puedo aportar es que una consulta SQL específicamente con esas cantidades de registros inevitablemente van hacer lentas por mas optimizadas que se encuentren y la unica opcion seria las tablas de los acumulados, pero ahi es de donde viene otro problema, los TRIGGERS

Cita:
Empezado por Casimiro Notevi
Esos acumulados se programan en la BD, mediante triggers, así que todo el trabajo lo haría la propia BD y nos despreocuparíamos nosotros.
yo tengo mis tablas de acumulados mediante triggers, pero despues de ir acumulando ciertos registros (miles o cientos de miles) la "basura" que me genera en la DB, hace que mis consultas se vuelvan lentas lo que antes me daba en segundos se vuelven minutos, y la unica forma de resolver el problema es mediante backup y restore, pero al tener una base tan grande ese proceso es de horas y horas maquina

me parece perfecta la idea de poder tener 2 base de datos
- una para detalle o para los millones de registros
- otra para los acumulados (en donde el proceso de mantenimiento se pueda hacer mucho mas rapido y mas frecuente)

pero que pasa con las transacciones?????
se puede tener una trasaccion para 2 bases de datos????

Saludos
GM
Responder Con Cita
  #35  
Antiguo 11-11-2011
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
Claro, buscar antes de preguntar, y si me imagino que debe ser un tema recurente... pues manos a la obra, y muchas gracias nuevamente Casimiro Notevi y CD
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
  #36  
Antiguo 11-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por erickahr Ver Mensaje
  • Al hacer updates en las tablas de acumulados repetidamente para mantenerlas actualizadas
    ¿Se estaria generando demasiada basura en la BD?
  • De ser asi ¿Cada cuanto se tendria que hacer una reculeccion (mediante Backup-Restore)? O ¿como se podria manejar esa cuestion?
¿Basura al hacer updates?, no, además hazlo mediante triggers, es la mejor opción.
Con un backup/restore la BD queda como nueva

Con ese servidor que tienes verás como el rendimiento que consigues será bastante importante.
Responder Con Cita
  #37  
Antiguo 11-11-2011
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por erickahr Ver Mensaje
He leido detenidamente cada punto de sus recomendaciones, de sus consejos, y bueno creo que el primer punto de "Things to do" es montarme un servidor linux, inceramente estoy muy verde en linux, pretendo usar Fedora, aunque ya antes he tenido problemitas con otras distros para levantar el Samba, y tengo ciertas dudas, pero por lo leido vale bastate la pena el cambio, y lo haremos.
No vamos a entrar al tema de las distros, porque para los gustos los colores. Olvida el Samba, además del core básico, este servidor solo tendría Firebird, no?
Cita:
Empezado por erickahr Ver Mensaje
cuenta con 4 cores
¿saca provecho realmente a los 4?

Cita:
Empezado por erickahr Ver Mensaje
Al hacer updates en las tablas de acumulados repetidamente para mantenerlas actualizadas
¿Se estaria generando demasiada basura en la BD?
Si, genera distintas versiones de registros que luego son basura, además que ir actualizando por cada registro insertado/modificado/borrado también consumirá tiempo de proceso, que tiene a su vez impacto en el rendimiento. Hay un abanico de posibilidades y lo mejor, para no variar, depende de tu aplicación particular. Por ejemplo, ¿es aceptable que algunos acumulados estén algo desactualizados? ¿que tanto?

Podes configurar el motor de diferentes maneras para graduar la manera y frecuencia de la recolección de este espacio, de manera que sea el óptimo para tu caso particular. Lee el artículo dabase housekeeping, que te dará una panorámica del tema.
Cita:
Empezado por erickahr Ver Mensaje
Jachguate, pues tu dime como por que fecha andas en esta tierra Azteca, y claro que nos ponemos de acuerdo y si alguien más anda por el rumbo, armamos una 'Taberna' en el plano real .
Te envié un privado, no es que sea secreto... pero prefiero que no haya reporteros en el aeropuerto al llegar, jajajaja
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 11-11-2011 a las 22:51:21.
Responder Con Cita
  #38  
Antiguo 11-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El tema de la "basura", no suele ser problema, en un uso normal ni siquiera se notará. Por eso digo que no es problema, o al menos nunca me he encontrado que sea un problema en ningún caso.
También es cierto que además de los backups diarios, cada semana (cómo mínimo) tenemos programado un backup/restore de la BD (habitualmente los sábados por la noche o domingos, según el cliente), por lo que queda "limpia" para empezar a trabajar de nuevo con ella.
Responder Con Cita
  #39  
Antiguo 11-11-2011
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
al menos nunca me he encontrado que sea un problema en ningún caso.
Depende de factores tales como:
  • Qué tan cortas son las transacciones
  • Se usa o no commit retaining?
  • Nivel de aislamiento de las transacciones
  • Cantidad/Proporción de rollbacks
  • Configuración de la bd (sweep interval/GCPOLICY)

En una aplicación que ha seguido recomendaciones como realizar transacciones cortas, con el menor niveles de aislamiento necesario, no tendría por qué ser problema, pero... he visto casos!! ufff...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #40  
Antiguo 12-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por jachguate Ver Mensaje
En una aplicación que ha seguido recomendaciones como realizar transacciones cortas, con el menor niveles de aislamiento necesario, no tendría por qué ser problema, pero... he visto casos!! ufff...
Pues sí, tan sólo hay que tener un poquito de cuidado con lo que hace
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Google compra más empresas !! ... como lo hacen ? gluglu Noticias 4 15-04-2007 00:07:15
Adopcion de SOA se duplicara en empresas en los proximos dos años. Epachsoft Noticias 7 09-04-2007 05:24:22
Listado de empresas DarKraZY La Taberna 0 10-11-2006 16:16:50
Bloquean el acceso a Internet en empresas españolas Sasuke_Cub Noticias 0 17-05-2006 18:46:14
Progama para varias empresas halcon_rojo Varios 7 06-04-2006 16:13:27


La franja horaria es GMT +2. Ahora son las 20:03:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi