AllyTech Web Hosting - Alojamiento de Sitios Web y Servicios de Excelencia en Internet AllyTech Web Hosting - Alojamiento de Sitios Web y Servicios de Excelencia en Internet
 
Preguntas frecuentes
Soporte Técnico

Tips :: Bases De Datos

Consejos para las Bases De Datos

  1. MySQL Top 20 Tips
  2. Tips generales para el uso de las bases de datos
  3. Cómo importar dump de MySQL desde línea de comando
  4. Diseño de bases de datos

MySQL Top 20 Tips

- 1. No use DISTINCT cuando pueda usar GROUP BY. - 2. Para mejorar la performance INSERT.

A. En lugar de utilizar una sentencia INSERT por cada grupo de datos a insertar, utilize una sola instrucción INSERT con todos los datos.
B. Utilize LOAD DATA en lugar de INSERT.

- 3. LIMIT puede no siempre ser lo mas rápido , chequealo antes de decidir usarlo.

- 4. No usar ORDER BY RAND() si tiene mas de 2000 registros.

- 5. Use SQL_NO_CACHE cuando seleccione (SELECT) datos frecuentemente actualizables o largas selecciones de datos.

- 6. No Usar * al comienzo de los queries LIKE.

- 7. Evitar los subqueries correlacionados  en SELECT y en la  cláusula WHERE.

- 8. ORDER BY y LIMIT, trabajan mejor cuando son utilizados con campos indexados.

- 9. Los  campos de texto o los binarios (blob) deberían ser separados de los meta datos, y no ponerlos en los resultados si no los necesita (No utilizar SELECT*)

- 10. Las tablas derivadas (subqueries en la cláusula FROM) pueden ser útiles para recuperar datos binarios sin clasificarlos. El mismo ensamble puede acelerar una consulta si la 1ra parte encuentra las identificaciones y las utiliza para traer el resto.

- 11. ALTER TABLE...ORDER BY puede tomar datos ordenados cronológicamente y reordenarlos por un campo diferente, esto puede hacer que las queries sobre este campo funcionen mas rápidamente.

- 12. Piense donde dividir consultas complejas y donde hacer JOIN de pequeñas consultas.

- 13. Al utilizar (DELETE) hacelo en pequeñas porciones para mejor rendimiento.

- 14. Usa consultas similares en forma consistente de modo de aprovechar el cache (respete mayúsculas, minúsculas, etc).

- 15. Respete los standares de SQL query.

- 16. No usar funciones ya discontinuadas aun cuando sigan operando.

- 17. Llevar OR en indices de campos multiples (versiones anteriores a MySQL 5.0) a UNION puede acelerar las cosas (con LIMIT).

- 18. No utilizar la clausula COUNT(*) en las tablas de Innodb para cada búsqueda, hacerlo algunas veces y/o en tablas sumarias, o si lo necesitas para el Nº total de filas, utilizar SQL_CALC_FOUND_ROWS y SELECT FOUND_ROWS ().

- 19. Para evitar tener que secleccionar y no tener problemas con datos ya ingresados, utilize la cláusula INSERT (...) ON DUPLICATE KEY UPDATE, y de este modo INSERT es ignorado.

- 20. Cuando las bases son muy grandes es probable que PHP no pueda levantarlas por el límite de memoria seteado en los servidores. Para evitar esto puede loguearse al Mysql desde un prompt de comando y utilizar el comando SOURCE (por ej: SOURCE mi-base.sql)

Tips generales para el uso de las bases de datos

- Abra las conexiones justo antes de utilizarlas y ciérrelas tan pronto como deje de necesitarlas. El modo de trabajo debe ser el siguiente: Conectar - Obtener/Guardar Datos - Desconectar. Siempre cierre las conexiones y libere los recursos utilizados ya que de lo contrario permanecerá tomada la conexión un largo tiempo y podría agotar las disponibles.

- No abra y cierre conexiones en el mismo hilo de ejecución ya que cada instancia de apertura o cierre consume una importante cantidad de recursos.

-Recuerde que puede utilizar un usuario adicional para la conexión a las bases de datos para no comprometer la seguridad del usuario principal.

- Optimice sus consultas SQL.
Especifique la lista de columnas con los datos de interés, en lugar de utilizar SELECT *, hacer esto es una mejor práctica que tiene un impacto notable en el rendimiento. Construir una consulta que devuelva sólo las columnas necesarias y haga un buen uso de los índices existentes hará una gran diferencia.
Ejemplo: Si quiere buscar el apellido y nombre de de un cliente en la base:
Búsqueda correcta: SELECT apellido,nombre FROM clientes
Búsqueda incorrecta: SELECT * FROM clientes (esto devolverá un montón de datos innecesarios adicionales a apellido y nombre lo que provocará que la búsqueda resulte mucho mas lenta y consuma mas recursos)

- No almacene objetos binarios de gran tamaño -como imágenes- en bases de datos a menos que sea estrictamente necesario.
Si almacena estos archivos en la base de datos al recuperar estos objetos a través de recordsets, los mismos son almacenados en memoria ocupando una gran cantidad de espacio y recursos.
Lo aconsejable es que en lugar de almacenar imágenes o archivos en las bases de datos, se almacene la URL o path de la imagen/archivo en un campo de texto así puede luego referenciarlo en las páginas de la aplicación.

 

Cómo importar dump de MySQL desde línea de comando

Si se quiere importar una base de datos desde un dump que es demasiado grande para manejarlo desde el administrador (phpMyAdmin) podemos hacerlo manualmente conectándonos con nuestro usuario uvXXXX y la clave vía SSH. Para ello podemos usar el conocido Putty o el applet que hay en el panel de control para hacer SSH.
Una vez dentro del server nos paramos en el directorio donde este el dump (debemos subirlo previamente por FTP); luego, para pararnos a la carpeta donde este el dump -si es que no lo dejamos en la raíz- debemos usar el comando "cd directorio" (como si fuera el viejo DOS) y escribimos el siguiente comando:
mysql -u usuario --password=password -e 'source file.sql' --database=nombrebase
Esta es la forma completa, pero podemos no escribir el "-u usuario" y si en el dump le agregamos la línea “use database” en el comienzo, podemos también obviar el último parámetro "--database=nombrebase ".
Otra opción es escribir -p en vez de --password=password y nos consultará la clave antes de seguir el proceso de importación.

 

Diseño de bases de datos

A la hora de diseñar una base de datos es importante seguir ciertos reglas que aseguren que los datos puedan ser procesados en forma ágil  y crecer sin inconvenientes futuros.
A continuación detallamos algunas consideraciones que deben tenerse en cuenta durante el diseño de la base de datos:
- Las tablas no deberían contener datos redundantes (repetidos).
Por ejemplo, en una tabla de productos usted no debería tener repetido más de una vez a un mismo producto; sí podría tener distintos atributos sobre un mismo producto pero, si tiene entradas repetidas, algo debe estar mal en el diseño de la base.
- Las tablas no deberían tener columnas como orden1, orden2, orden3. Incluso si usted prevee 10 columnas de este tipo, el problema lo tendrá en el futuro cuando un usuario pida 11 órdenes/artículos.

- Los requerimientos de almacenamiento para todas sus tablas deben ser tan pequeños como sea posible.
Por ejemplo, no utilizar en “Código Postal” varchar(100) o más (reservar 100 caracteres para un tipo de dato variable) cuando se podría utilizar varchar(8) que resulta suficiente para almacenar cualquier código postal tipo.

 

atrás

arriba

AllyTech Web Hosting

Plan Inicial
120 Mb de espacio en disco.
40 cuentas POP3. CGI-BINS, PERL, PHP4, ASP, SSI, WAP.
Anti-Virus, Anti-Spam y Estadísticas online.
(sin soporte de bases de datos)

Plan Básico
1GB de espacio en disco.
Ilimitadas cuentas POP3. Front Page 2002. CGI-BINS, PERL, PHP4, My SQL, ASP, SSI, WAP. Anti-Virus, Anti-Spam y Estadísticas online.

Plan Avanzado
2,5Gb de espacio en disco.
Ilimitadas cuentas POP3. Front Page 2002 CGI-BINS, PERL, PHP4, My SQL, ASP, SSI, WAP Anti-Virus, Anti-Spam y Estadísticas online.

Plan Distribuidores
10 dominios. 5 Gb de espacio en disco. Ilimitadas cuentas POP3 por dominio Front Page 2002.CGI-BINS, PERL, PHP4, My SQL, ASP, SSI, WAP. Anti-Virus, Anti-Spam y Estadísticas online.


Tenemos nuevos planes !
ver tabla comparativa de planes
 
 
     

ver instrucciones para el pago

   
Ingresar al Sistema de Ticket de Soporte



Atención técnica y comercial:
(54-11) 4787-9009 (Líneas rotativas)

AllyTech - Juramento 2059 - 1 Piso (C1428DNG)
Ciudad de Buenos Aires, Argentina.
Copyright AllyTech 2003