Top 5 MySQLCategoríasBuscador
|
Su dominio en 24 horas |
|||||||||||||||||||||||||||||||||||||||||||||
Estás en MySQL |
Fecha: 17/06/2007 |
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:
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.
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:
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.
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 |
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. | |
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. | |
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. | |
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. | |
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. | |
Fecha: 21/05/2008 |
|
| La nueva versión de MySQL parece que viene con importantes mejoras respecto a sus antecesoras. | |
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ículoMe gustó el artículo, muy util! | |
Jm1 escribió: |
Fecha: 22/06/2007 13:05:29 |
Siempre va bien saber optimizar las bases de datosNo 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.