Buscador

Busca aquí los artículos:

 

RSS Suscríbete al Boletín

Escribe tu correo para recibir nuestro boletín de artículos:

Plan Iniciación

1 Dominio

3 Gb de Tráfico Mensual

2 Bases de datos MySql

250 Mb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 5 € / Mes

Ir Plan Inicial

Plan Básico

1 Dominio

8 Gb de Tráfico Mensual

10 Bases de datos MySql

600 Mb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 10 € / Mes

Ir Plan Básico

Plan Profesional

1 Dominio

20 Gb de Tráfico Mensual

30 Bases de datos MySql

1,5 Gb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 18 € / Mes

Ir a Plan Profesional

Plan Profesional ISP

50 Gb de Tráfico Mensual

50 Bases de datos MySql

4,5 Gb de espacio Web y Correo

Ilimitadas BD Access

Programación ASP, ASP.Net y PHP

Precio: 30 € / Mes

Ir a Plan Profesional ISP

Servidor Linux

Tu servidor dedicado con sistema Linux por 199 € al mes .

 

 

Ver más

Servidor Windows

Tu servidor dedicado con sistema Windows por 210 € al mes .

 

 

Ver más

Registre su dominio ahora

www.

Su dominio en 24 horas
Su propio nombre de dominio en un tiempo record, sin complicaciones ni compromisos.

MySQL: La Base de datos perfecta

Feed RSS Estás en MySQL Fecha: 17/06/2007

Todos sabemos que MySQL es uno de los mejores sistemas de bases de datos, pero ¿cómo podemos construir la base de datos más rápida?. Hay que tener en cuenta una serie de factores importates.
Publicidad

Bien, para crear la base de datos perfecta, primero debemos de tener muy claro cual va a ser su función, es decir, qué tipo de aplicativo vamos a darle a la misma. ¿Será la base de datos de un foro?, ¿será la base de datos de un blog?, dependiendo de su utilidad encontraremos cual será la mejor manera de crearla.

En MySQL existen varios tipos de tablas, entre ellas están:

  • Isam
  • MyIsam
  • InnoDB
  • DBD (Berkley Database)

Entre estas hay que destacar dos de ellas, que a mi entender son las mejores para este proyecto, estas son MyIsam e InnoDB. Cada una de ellas tiene diferente manera de estructurar sus tablas y las posibilidades cambian.

Diferencias entre InnoDB y MyIsam

Las tablas de InnoDB se almacenan en un único archivo a diferencia de las MyIsam que lo hacen en tres. La mayor diferencia es que InnoDB permite realizar transacciones y claves foráneas, lo que aporta una fiabilidad extra frente a MyIsam, pero esta última es más rápida en cuanto a consultas se refiere.

Por lo tanto una tabla InnoDB te permitirá hacer consultas y subconsultas, también tendrás la posibilidad de crear triggers que son pequeñas instrucciones que se ejecutan cuando se actualiza, crea o eliminan registros de una tabla en concreto.

Las tablas MyIsam son mucho más rápidas consultando registros porque no pierden tiempo en relaciones ni controles, pero sin embargo las InnoDB son más rápidas realizando instrucciones como Insert, Update o Delete.

Teniendo en cuenta estas observaciones, nos damos cuenta que por ejemplo:

  • Para crear una base de datos para un foro, la mejor estructura es InnoDB, puesto que las tablas se deben de actualizar más con nuevos registros y las consultas a realizar son más constantes, aunque sea más lenta, merece la pena.
  • Para crear un blog, donde se añadirán un par de registros por día, la mejor opción es MyIsam, puesto que lo único que debemos de hacer es consultar y extraer datos.

Los índices son importantes:

Otra opción a tener muy en cuenta es la creación de índices, todos sabemos que son fundamentales, y de hecho aceleran mucho las consultas, pero si los usamos en exceso puede perjudicar radicalmente el rendimiento de nuestra aplicación.

Un índice es un fichero que se almacena de forma externa a nuestra tabla donde tenemos la información exacta de dónde está cada fila, y que dato vamos a consultar de ella. Por lo tanto, cuando llega el momento de hacer una consulta, buscar en un índice nos ahorra mucho tiempo, ¿pero que pasa si esta tabla se actualiza constantemente?.

Cada vez que actualizamos la tabla, el índice se recompone y vuelve a crearse, si esta situación se repite constantemente, el índice no servirá de nada, es más estará perjudicando el rendimiento general de la aplicación, puesto que su creación estará consumiendo recursos de la máquina de manera constante.

Debemos de crear índices en los campos que vayamos a consultar, por ejemplo, si tenemos una tabla con comentarios de nuestro blog, debemos de pararnos a pensar por cual de los campos vamos a extraer estos, seguramente la estructura sería algo parecido a esto:

IdComentario (Int) AutoIncremental
IdArticulo (Int)
Titulo (char)
Fecha (DateTime)
Comentario (Text)

Si necesitamos extraer los comentarios de un artículo, la consulta necesitará el campo (IdArticulo) para relacionarlos, entonces el índice a crear sería IdArticulo, también sabemos que ordenaremos estos comentarios según la fecha de entrada, pero como no se consulta por ellos, no es necesario crear un índice para este campo.

Otro problema es cuando creamos índices FullText, este tipo de índices tan solo se pueden crear en tablas MyIsam, lo que hacen es almacenar el texto de un campo en concreto para acelerar sus búsquedas, pues bien, si tenemos un índice sobre un campo de 200 caracteres, seguramente utilizaremos 20 como máximo para buscar lo que nos interesa. En vez de crear un índice de la totalidad del campo, podemos crearlo sobre los primeros 20 caracteres.

¿Utilizas sentencias Inner Join en tus consultas?, ¿estas sentencias se repiten de manera asidua en tu aplicación?, si la respuesta es Sí, añade un índice en los campos de comparación, si es No, lo mejor será que no los añadas, perderás en rendimiento (milisegundos), pero no perjudicarás el rendimiento general.

Estructura las tablas

Una buena estructuración de las tablas servirá de mucho cuando llegue el momento de poner en marcha esa base de datos, evita insertar campos inútiles en la misma tabla, siempre que puedas, crea una nueva y relaciónala mediante sentencias Inner Join.
Cada vez que consultas una tabla esta extrae la información, si con ella viaja información "poco útil" estarás consumiendo de más.

Extrae solo lo que necesitas, evita utilizar el asterisco (*) en tus consultas, si estás sacando información sobre un artículo, no hace falta que extraigas la fecha de actualización o campos que no vayas a mostrar, céntrate en lo que realmente necesita esa consulta.

Si eres de los que se vuelven locos creando macro consultas, fíjate bien en las relaciones que haces, indexa tan solo lo que vas a consultar y descarta el resto, a veces es mejor hacer un par de consultas rápidas que una super pesada.

Introduce siempre un timer para saber el tiempo de respuesta real, te servirá de referencia para saber que tarda cada una de ellas.

Espero que este artículo os haya servido de algo para mejorar la estructura de vuestra base de datos, solo decir que en nuestro caso tenemos diferenciadas las base de datos del foro que la que muestra estos artículos, y como no, el foro es InnoDB y esta es MyIsam, ¿habéis notado lentitud?, seguro que no ;)

 

Lecturas: 3422

Artículos Relacionados

Acceder a mysql sin saber la clave

Fecha: 16/05/2007

Puede ser que se nos olvide la clave de nuestro MySQL, no hace falta que os desespereis ya que se puede recuperar con una serie de instrucciones.

¿Qué es mejor Like o FullText?

Fecha: 13/04/2007

Cuando debemos buscar entre una gran cantidad de datos, la búsqueda con el comando Like se hace tediosa, debemos comenzar a utilizar las búsquedas FullText.

Coincidencias de la Base de Datos

Gestión de Usuario de Base de Datos en Plesk

Fecha: 25/06/2007

Si colabora con otras personas en la gestión de un sitio web y desea otorgarles acceso a la base de datos, debe crear cuentas de usuario para cada uno de ellos en su panel PLesk.

Almacenar contraseñas en MySQL

Fecha: 23/04/2007

Existen ciertas normas que nos prohiben almacenar contraseñas con texto plano y además esta nunca ha sido una buena opción, si queremos que nuestros usuarios se sientan seguros utilizando nuestros sistemas, debemos proporcionarles un nivel superior.

La función CONCAT en MySQL

Fecha: 01/05/2007

Hay diferentes maneras de unir datos extraidos de una tabla, la más común es hacerlo una vez estos datos están fuera, pero se puede realizar una consulta con los datos ya concatenados.

Importantes mejoras en MySQL 6.0

Fecha: 21/05/2008

La nueva versión de MySQL parece que viene con importantes mejoras respecto a sus antecesoras.

Pérdida de datos en documentos de Google Docs

Fecha: 23/05/2007

Las ventajas de trabajar con herramientas online son múltiples. En cualquier momento y en cualquier ordenador con conexión a Internet tenemos disponible el programa y los archivos con los datos.

Comentarios de los Usuarios (2)

Tanguillo escribió:

Fecha: 20/06/2007 17:29:22

Buen artículo
Me gustó el artículo, muy util!

Jm1 escribió:

Fecha: 22/06/2007 13:05:29

Siempre va bien saber optimizar las bases de datos
No está mal saber que tipo de tablas tenemos disponibles y como podemos utilizar cada una de ellas.

Muchas gracias por el artículo, me ha ayudado para comprender un poco más la importancia de hacer una buena estructura.

Este artículo ya ha superado la fecha máxima para escribir comentarios, 1 año.


Hosting y Alojamiento Web