Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Capacidades de MySQL

Estas en el tema de Capacidades de MySQL en el foro de Mysql en Foros del Web. Amigos del Foro: Estoy implementando una base de datos MySQL sobre un servidor Linux, la versión es 5.1.49Log, estoy manejando unos 3 millones de registros ...
  #1 (permalink)  
Antiguo 19/03/2011, 22:29
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Pregunta Capacidades de MySQL

Amigos del Foro:

Estoy implementando una base de datos MySQL sobre un servidor Linux, la versión es 5.1.49Log, estoy manejando unos 3 millones de registros y es una base de datos que seguira creciendo como unos 50,000 registros por mes, el problema que tengo es que cuando subi la base de datos el sistema que lee la información se torno lento y me da errores de que se pierde la conexión por error en el query, Entonces mis preguntas son:
1. La versión de MySQL es adecuada para esta cantidad de información.
2. Que consideraciones o configuraciones debo seguir y hacer para poder tener una base de datos que responda rápido a las exigencias de los usuario.

Gracias.
  #2 (permalink)  
Antiguo 20/03/2011, 08:06
 
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 91
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: Capacidades de MySQL

Yo soy de los que opinan que mysql es tan potente como cualquier base de datos, siempre y cuando se diseñe y configure adecuadamente.

Dado que tienes una cantidad de informacion mas o menos importante (tampoco 3 millones de registros son tantos...), deberias plantearte las siguientes pautas:

Estas obligado a indexar ciertos campos de esos registros, a partir del millon de registros la busqueda secuencial (que es la que hace si no tienes indices apropiados) se torna muy muy lenta.

Has de crear indices complejos hacia los campos que sepas que van a ser la pauta de la consulta a la bd. Por ejemplo, si haces esta consulta:

select * from usuarios where nombre_usuario = 'pepito';

Esa es una consulta muy simple, pero con tantos registros, si no tienes indexada la columna nombre_usuario se vuelve extremadamente lenta. Deberias crear por ejemplo un indice de las 3 primeras letras de nombre_usuario, asi la bd por ejemplo cojeria las 3 primeras letras del valor de nombre_usuario, en este caso 'pep', y lo buscaria en el indice.

El indice internamente podria ser asi:

Indice Ant:
Antonio
Antoine
Antoñita

Indice Bel:
Belen
Belerofonte
Belencita

.....

Indice pep:
pepito
pepon
pepe

En ese ejemplo de indice, tienes 9 registros, 3 por indice. Sin indice, al comparar los nombres de usuario te compararia 1 por 1 los registros (9 en este caso) de forma secuencial. Con indices, compararia 'pep' con 'Ant', luego 'pep' con 'Bel' y luego 'pep' con 'pep'...en este caso como coincide, compararia 'pepe' con todos los registros dentro del indice 'pep'.

Ves la diferencia? De forma secuencial compara 9 registros de 9 hasta llegar a pepe, de forma indexada compara primero 3 indices y luego 3 registros dentro del indice 'pep' hasta llegar al correcto, en total 6. Te ahorras muchisimas comparaciones si tienes bien hechos los indices.

Tambien, si sabes que hay veces en que en la clausula where vas a tener mas de una columna, puedes indexar conjuntamente las columnas y entonces seria aun mas eficiente.


Te aconsejo estudiar el tema de los indices, busca un tutorial por google porque lo que yo te he puesto es solo un ejemplo basico.

Un saludo!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:40.