10 consejos para optimizar las consultas en MySQL

Justin Silverton, en su blog When Penguins Attack nos muestra 10 puntos que podríamos seguir para optimizar el rendimiento de nuestras querys MySQL. En resumidas cuentas:

1. Usar el comando EXPLAIN

2. Usar estructuras de permisos menos complejas

3. Usar el comando benchmark para medir el rendimiento de algunas funciones mysql específicas

4. Optimizar las cláusulas where

5. Ejecutar el comando optimize para defragmentar las tablas

6. Evitar columnas con tipo de datos de longitud variable allá donde se pueda

7. Usar inserciones con retardo (insert delay, o escritura perezosa)

8. Usar sentencias de prioridad (ej: INSERT LOW_PRIORITY )

9. Usar inserts de múltiples filas en lugar de múltiples inserts individuales
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
10. Seguir estudiando a través de vídeos como éste 🙂

Yum-presto: cómo instalar deltas de RPMs

Ahmed Kamal y Jonathan Dieter han desarrollado Presto, un plugin para yum (el gestor de paquetes por defecto en Fedora) que permite descargar deltarpms cuando estén disponibles. Es una versión beta, por lo que todavía contendrá algunas erratas.¿Y qué es un deltarpm? En resumidas cuentas, son ficheros que guardan la diferencia existente entre un paquete binario (en este caso un paquete RPM) y otro. Esto nos puede permitir ahorrr bastante tiempo (y ancho de banda) a la hora de descargar una gran actualización. Supongamos que estamos descargando un parche de seguridad para OpenOffice Writer. Supongamos también que el paquete RPM completo ocupa unos 20 MB, aunque lo que realmente ha cambiado sólo son 0.5 MB. La herramienta Presto ofrecerá la posibilidad de descargar e instalar únicamente esos 0.5 MB de diferencia, actualizando perfectamente a la última versión de Writer.

Por ahora, sólo hay disponibles deltarpms para FC6 i386 en los repositorios updates y extras, pero ya se está trabajando para añadir repositorio Rawhide y el soporte para 64 bits.

Separar nombre de extensión de fichero en Bash

Supongamos que queremos hacer un script en bash que recorra los nombres de todos los ficheros de un directorio (estos nombres siguen el patrón nombre.ext, por ejemplo imagen01.png, imagen02.png, grafico.png,…)

Si guardamos en foo la ruta a nuestro fichero:

foo=/tmp/mi.directorio/imagen.png

Podemos usar las siguientes intrucciones de manipulación de strings en Bash:

path = ${foo%/*}
Para obtener: /tmp/mi.directorio

file = ${foo##*/}
Para obtener: imagen.png

base = ${file%%.*}
Para obtener: imagen

ext = ${file#*.}
para obtener: png

Todos estos trucos y más, los podéis ver en detalle en este artículo ya muy viejito pero igual de útil que al principio de Linux Gazette

Adobe Flash Player 9 en Ubuntu

Sigo con la actualización y puesta a punto de mi distro EHUX. Ahora le toca el turno a Adobe Flash Player 9. Ésta ha sido fácil. Basta con descargar de la página de Adobe la última versión para Linux en formato .tar.gz , por ejemplo, al directorio /tmp. Nos situamos en ese directorio y descomprimimos:

$ tar -xvzf install_flash_player_9_linux.tar.gz

Nos creará un nuevo directorio install_flash_player_9_linux

$ cd install_flash_player_9_linux/
Ejecutamos el programa instalador en modo texto:
$ sudo ./flashplayer-installer

Nos preguntará por el directorio donde tengamos instalado Firefox. Como recientemente instalé Firefox 2.0.0.3 en el directorio /opt/firefox, ésa es la ruta que indicaré:

Please enter the installation path of the Mozilla, SeaMonkey,
or Firefox browser (i.e., /usr/lib/mozilla): /opt/firefox

Arrancamos Firefox, entramos en www.adobe.com y comprobamos que se ve la animación en Flash que contiene la portada. ¡Listo!

Nota: si alguien usa Solaris en x86 o en Sparc, Adobe Labs sacó el 21 de Marzo (hace muy poco por tanto) una beta del plugin de Flash para este sistema en esas arquitecturas.

CUPS y el sondeo automático de impresoras en Ubuntu

Como ya habréis leído en posts anteriores, he cambiado al distro de mi portátil. Ahora uso EHUX 2 (Ubuntu Dapper) en lugar de Fedora Core 5 (a los fedoritas : no os preocupéis, en mi PC de escritorio mantengo el Fedora Core 6 😉 El caso es que algunas opciones de configuración muy útiles de Dapper están bastante ocultas o en el caso que centra este post, han sido directamente seccionadas de cuajo. En concreto, el soporte de Network Printer Discovery de CUPS. Me explico:

CUPS + Network Printer DiscoveryA partir de la versión 1.2 de CUPS (el gestor de impresoras de Ubuntu Dapper por defecto), se incluye una opción para sondear la red de forma automática en busca de impresoras de red compartidas. Para ello se hace uso del protocolo SNMP (Simple Network Management Protocol). El resultado de usar esta opción (ver imagen de la izquierda) es que, el usuario, a una distancia de dos clicks de ratón, puede instalarse una impresora de red desde su máquina Linux (los usuarios de Windows pueden aprovechar para limpiarse la baba antes de seguir leyendo ;-).

CUPS - Network Printer DiscoveryEl problema, como puede verse en la imagen de la izquierda: todavía no sé por qué, a pesar de que CUPS 1.2 incluye de serie esa opción de Network Printer Discovery, en Ubuntu Dapper han decidido que la eliminaban. Adiós simplicidad.

La solución, encontrada gracias a este artículo en KDE_Developers:

El resultado es espectacular y muy, muy útil, sobre todo si trabajas en un centro en el que disponéis de varias impresoras de red compartidas y no quieres configurarlas una a una a mano…. (caso de la UPV/EHU !)

Actualización: en Ubuntu Dapper, por defecto, se ha deshabilitado también la posibilidad de gestionar impresoras a través del interfaz Web de CUPS. Si quieres volver a activar esta opción, debes de seguir los siguientes pasos: