PDA

Ver la Versión Completa : ¿mantenimiento a base de datos firebird?


JXJ
14-08-2011, 20:58:14
Hola


firebird requiere de mantenimiento

¿que es mantenimiento a una base de datos?

lo pregunto por esto.

me contaron de un caso en que una base de datos mysql
se ponia lenta. y como no era un experto en mysql los empleados
de esa empresa. no la lograban hacer que funcionara bien. osea
que tardaba mucho en responder las querys

y que contratarona un experto mysql y le dio mantenimiento
y la base de datos funciono mucho mas rapido


ahora.

¿firebird que clase de mantenimiento requiere
hay basura o registros que hacen lenta las querys?


¿como se le da ese mantenimiento?

tengo una base de datos de el proyecto opensource ventas.
que es una aplicacion de punto de ventas.

y esta se pone lenta al mostrar los reportes. de ventas y otros

despues de 1000 registros en querys
con left join inner join se tarda mucho y no muestra nada.

se cuelga la aplicacion.

le quiero dar mantenimiento no se si se requiere alguna herramienta
software especial

igual escucho mucho que oracle se requiere de un DBA
por que necesita mantenimiento.

gracias por su tiempo

RONPABLO
14-08-2011, 21:44:11
Pues más que mantenimiento en el sentido de borrar basura o similares yo miraría la forma de optimizar los querys, evitando hacer procesos innecesarios y además creando más indices para que los querys mejoren en velocidad... también evitaría sentencias tales como:


where t1.Codigo in (select t2.CodigoRelacion from XTabla as t2)


y los cambiaría por algo como



where exists (select t2.CodigoRelacion from XTabla as t2 where t2.CodigoRelacion = t1.Codigo)

RONPABLO
14-08-2011, 21:44:58
Pero si se trata de borrar basura con un bkup resture sería suficiente.

Casimiro Notevi
14-08-2011, 23:53:06
Pero si se trata de borrar basura con un bkup resture sería suficiente.
Suficiente.


Si en algo destaca firebird (y destaca en muchas cosas) es que casi no necesita mantenimiento.

JXJ
15-08-2011, 00:27:39
eso de los indices es nuevo para mi.

apenas encontre esto

http://www.intitec.com/varios/Firebird-Indices.pdf

http://www.delphiaccess.com/forum/tutoriales/tutorial-%28como-empezar-con-firebird%29-para-novatos/

esto de los indices.

que otra regla es buena seguir para donde ponerlos

en primary key ?


si la base de datos ya esta hecha y andando.
¿como se puede mejorar su rendimiento sin alterar su estrucutra de datos.?
¿osea si ya se tienen 1000 registros las tablas se tienen que poner indices o
reagrupar la informacion en otras tablas.?
voy a hacer las pruebas


con las trablas (yo mismo las voy a ahcer)
ventas
ventasde talles
cliente
vendedor

el chiste es hacer un reporte
que me muestre las ventas del dia o por periodo de fechas
y me de el total de lo vendido en ese periodo de tiempo

aparte otro reporte que me de que vendio cuanto y lo agrupe por vendedor
y por periodo algo asi

ventas del perido 14 agosto 2011 al 30 agosto 2011

total vendido 1000 000

ventas por vendedor
vendedor JXJ 1000
vendedor juan 999999

un monton de reportes raros. que me piden como
cuanto se vendio por tipo de comprobante. nota, tiket factura.
y desglozar agrupando por vendedor. o por caja.
todo por un periodo de tiempo.

gracias

RONPABLO

Casimiro Notevi

RONPABLO
15-08-2011, 03:00:16
Los primary normalmente estan indexados, los indices se ponen en campos de mucho uso, por ejemplo si tiene una tabla donde hace querys que regularmente hace un where como este:


... where fecha between :f1 an :f2


Entonces yo pondría un indice al campo fecha, este indice se puede crear o poner en cualquier momento, osea si la tabla ya tiene un millón de registros no la va afectar. He visto querys que se demoran hasta 20 minutos y al ponerle un indice bien ubicado pasa a demorarse pocos segundos. una tabla puede tener muchos Indices, pueden ser compuestos... pueden ser únicos o no... en los joins es muy recomendable que los campos que relaciones dichos joins estén indexados.

RONPABLO
15-08-2011, 03:03:16
Pero si se trata de borrar basura con un bkup resture sería suficiente.



:eek: jajaja es que resture... que pena :o ---> Restore

Casimiro Notevi
15-08-2011, 10:47:11
[..]
si la base de datos ya esta hecha y andando.
¿como se puede mejorar su rendimiento sin alterar su estrucutra de datos.?
¿osea si ya se tienen 1000 registros las tablas se tienen que poner indices o
reagrupar la informacion en otras tablas.?
voy a hacer las pruebas [..]

Si tienes problemas con sólo 1000 registros es que necesitas hacer las consultas de otra forma o estás haciendo algo incorrectamente.
Ten en cuenta que 1000 registros no es nada, habitualmente tengo siempre una BD con más de diez millones de registros por tabla para hacer pruebas, incluso en algunas tablas más usadas hacemos pruebas con muchísimos más registros, en una tabla de movimientos de artículos en almacenes tiene más de cien millones de registros, así que si va bien con esa cantidad de registros entonces irá mejor con menos, de esa manera "no nos pillamos los dedos". Ese tipo de pruebas es la que hacemos antes de entregar al cliente.

JXJ
15-08-2011, 21:50:23
hola casimiro notevi

como haces las pruebas.

yo voy a hacer mi tabla y voy a hacer un programa delphi que inserte
de 100 en 100 ventas y tambien sus datos de aquien se le vendio y quien atendio
y quien es el supervisro y tambien con el detalle de 100 productos vendidos por
cada venta.

ando haciendolo con delphi y ibdac de devart.

¿con que software o como lo haces.?

encontre que

http://www.sqlmanager.net/en/products/ibfb/datagenerator

ese programa sirve para algo asi. que es muy generico

gracias por su tiempo.

Casimiro Notevi
16-08-2011, 00:13:54
Las pruebas las hago con todas las sentencias sql que voy añadiendo al programa.

Para crear la BD sólo usé un "plugin" del ibexpert, pero te vale cualquiera, o lo puedes hacer tú mismo, un simple bucle y metes datos aleatorios, lo más parecido a lo real que vayas a usar después.

gastelumri
16-08-2011, 15:00:31
Corríjanme por favor si estoy mal… Los índices te ayudaran a realizar búsquedas mas rapidas, pero tengo entendido que usar muchos índices también te puede alentar la inserción de nuevos datos, o si esto sucede en otras base de datos…



Debes hacer un balance en la cantidad de indices...

RONPABLO
16-08-2011, 17:30:57
Corríjanme por favor si estoy mal… Los índices te ayudaran a realizar búsquedas mas rapidas, pero tengo entendido que usar muchos índices también te puede alentar la inserción de nuevos datos, o si esto sucede en otras base de datos…



Debes hacer un balance en la cantidad de indices...


Como tal cuando he hablado de indices no he dicho poner muchos indices, he dicho poner indices en campos de mucha referencia. Y aunque un indice puede volver "lenta" una inserción, suele ser despreciable y se suele notar en inserciones masivas (yo lo he notado pasando 100 mil registros donde se me ha demorado 2 o 3 minutos más que si no tuviera el indicie y la verdad para tantos datos y una cosa que hago esporádicamente prefiero la velocidad de consultas) y no en inserciones individuales.