Inicio > Soporte Técnico > Bases de datos MySQL > Puntos a tener en cuenta para optimizar tu sitio y lograr un mejor rendimiento (Parte 2 – mysql)

Puntos a tener en cuenta para optimizar tu sitio y lograr un mejor rendimiento (Parte 2 – mysql)

Seguimos repasando los aspectos que hay que tener en cuenta a la hora de evaluar la velocidad en la respuesta de un sitio. En este artículo vamos a ocuparnos de la optimización de la base de datos de la aplicación. Los consejos de este artículo están basados en la información disponible en el siguiente enlace (el cuál recomendamos).

Los tiempos de respuesta de un sitio se van a ver afectados entre otros factores por la velocidad con la que se ejecuten las consultas mysql. Desde ya, recorrer con una consulta una base de datos de 10 MB no es lo mismo que hacerlo en una de 2 GB. Tampoco es lo mismo ejecutar un SELECT de todos los campos de la tabla que solamente consultar aquellos con los que voy a trabajar.

El diseño inicial de la base de datos es fundamental, más aún si sabemos que vamos a cargar gran cantidad de datos a la misma. Te recomendamos investigar los modelos de bases de datos relacionales si estás diseñando tu app desde cero. Acá algunos consejos generales para optimizar las consultas (y como consecuencia de esto los tiempo de respuesta). Este tipo de tareas puede ejecutarse desde el administrador de bases de datos del panel o desde un gestor mysql remoto.

  • Verificá regularmente el registro de consultas lentas del panel de control para identificar aquellas que deben ser optimizadas
  • Usar el comando EXPLAIN para ver como se ejecuta un SELECT. Esto es muy útil a fin de optimizar dicha consulta.
    Ej: EXPLAIN SELECT  * from nombredetabla
  • Ejecutar OPTIMIZE TABLE si se han hecho cambios en la misma. Este comando la repara y desfragmenta las tablas, sobre todo si se han eliminado datos recientemente.
  • Almacená las imágenes u otros archivos dentro del directorio web, no en la base de datos.
  • No uses nombres complejos para las columnas. Por ejemplo: En la tabla clientes, usá “nombre” en vez de “nombre_cliente” para almacenar el nombre del cliente.
  • Definir una longitud para los campos siempre que sea posible. Los campos con longitud fija (CHAR) son más rápidos que los de longitud variable (VARCHAR).
  • Optimizando INSERT:
    - Usar INSERT DELAYED cuando no sea necesario conocer si los datos han sido escritos correctemente. Con esto obtenemos una confirmación inmediata del servidor, mientras que el dato es almacenado en una cola para ser insertado luego (cuando la tabla no esté en uso).
    - Usá INSERT LOW_PRIORITY para darle prioridad a las consultas SELECT
    - Hacer múltiples INSERT en una sola consulta es preferible a hacer varios INSERT distintos.
     Ej: INSERT INTO table (col1, col2) VALUES (‘value1′, 1), (‘value2′, 2), (‘value3′, 3)
  • Optimizar WHERE:
    - Remover paréntesis innecesarios.
    - Usar SELECT COUNT(*) siempre que consultemos una sola tabla y no necesitemos agregar WHERE
  • Optimizando SELECT (te recomendamos este enlace http://dev.mysql.com/doc/refman/5.0/es/query-speed.html):
    - Realizá la consulta solo por los campos que necesitás (no uses SELECT * si no es necesario)
    - Agregá índices a las tablas sobre las cuáles utilizás SELECT…WHERE

Si utilizás un CMS (Joomla, WordPress, Oscommerce, Drupal, etc)

Tené en cuenta que cada plugin / componente que agregás representa un aumento de tablas en tu base de datos y por consiguiente, de consultas a la misma. Instalar agregados a tu CMS sin analizar previamente como funcionan y si realmente son necesarios, seguramente genere latencia adicional en el acceso al sitio.
A continuación, un resúmen de herrramientas útililes para optimizar tu sitio

Wordpress

Joomla

Podés usar el servicio de Google Traductor para traducir los enlaces referidos