RSS |

Blog de Omar

Just another WordPress weblog

Advertisement

Este post es la continuacion del post  [ Tuning MySQL Server ], asi que recomiendo leer este antes de continuar con este post,  pero si eres de esos apuraditos no habra nada que te detenga.

Saber el funcionamiento interno de nuestro servidor, conocer los archivos a modificar, leer la documentacion sobre los parametros que debemos setear y sobre todo encontrar la forma de hacer un benchmarking, esto todo lo que esta atras de este post.

Hace algunas semanas me puse a "tunear" (yo tuneo, el tunea, vosotros tuneais) el servidor MySQL Enterprise Server que adquirio la empresa donde trabajo, pero luego me pregunte: "Como demuestro que mi tuning ha sido un exito y que he mejorado el performance de mi servidor de base de datos?"  (son dudas existenciales que no te dejan vivir), asi que me puse a buscar algo de informacion y al parecer muy pocas personas se habian hecho la misma pregunta que yo, no encontre ningun blog que hablara sobre como medir el rendimiento de MySQL, hasta que San Google me dio algunas herramientas que podia usar, asi que escogi la que me parecio la mejor opcion: mysql-bench.

Si ustedes han compilado las fuentes de MySQL pues ustedes ya cuentan con la carpeta sql-bench en donde estan los scripts a usar (la encontraran en algun lado pero depende de donde hayan hecho la instalacion del software), por otro lado si ustedes han instalado MySQL con rpm’s tendran que instalar tambien el rpm correspondiente, en Fedora el rpm se llama mysql-bench-5.0.45-6 (tambien hay un rpm para Suse, lo se porque tambien lo he probado).

Al instalar este rpm estan instalando unos scripts en perl que lo que hacen son consultas y medir el tiempo de respuesta de nuestro servidor MySQL (inserts, alters, select, etc etc), lo que les recomiendo es leer la documentacion que trae esta herramienta, la documentacion y los scripts se encuentran en /usr/share/sql-bench/.

Bueno iniciemos nuestras pruebas de performance, lo primero que debemos hacer es correr los scripts con el my.cnf que viene por defecto, el script que debemos correr es:

sql-bench]# perl run-all-tests –server=MySQL –user=’root’ –password=’password’

Nota: Lean todas las opciones que trae el scipt run-all-test (lo pueden hacer con run-all-test –help)

Cuando termine de correr el script arrojara un resumen del tiempo que demoro en ejecutar todos los scripts, el tiempo es medido en una unidad llamada wallclock (que mide tiempo de red, tiempo del procesador y de acceso al disco, tomemoslo como una medida nueva y propia de la herramienta) y desde luego hay que correr el script despues de haber modificado el archivo my.cnf con los nuevos parametros y de haber reiniciado MySQL.

En mi caso los resultados fueron:

RESULTADOS ANTES DE MODIFICAR MY.CNF

alter-table: Total time: 79 wallclock secs ( 0.01 usr  0.14 sys +  0.00 cusr  0.00 csys =  0.15 CPU)
ATIS: Total time: 26 wallclock secs ( 4.58 usr  2.67 sys +  0.00 cusr  0.00 csys =  7.25 CPU)
big-tables: Total time: 20 wallclock secs ( 0.79 usr  4.99 sys +  0.00 cusr  0.00 csys =  5.78 CPU)
connect: Total time: 262 wallclock secs ( 8.27 usr 81.05 sys +  0.00 cusr  0.00 csys = 89.32 CPU)
create: Total time: 289 wallclock secs ( 1.35 usr 11.48 sys +  0.00 cusr  0.00 csys = 12.83 CPU)
insert: Total time: 3032 wallclock secs (158.97 usr 456.75 sys +  0.00 cusr  0.00 csys = 615.72 CPU)
select: Total time: 478 wallclock secs (19.21 usr 43.93 sys +  0.00 cusr  0.00 csys = 63.14 CPU)
transactions: Test skipped because the database doesn’t support transactions
wisconsin: Total time: 23 wallclock secs ( 1.49 usr 11.02 sys +  0.00 cusr  0.00 csys = 12.51 CPU)

RESULTADOS DESPUES DE MODIFICAR MY.CNF

alter-table: Total time: 70 wallclock secs ( 0.01 usr  0.07 sys +  0.00 cusr  0.00 csys =  0.08 CPU)
ATIS: Total time: 11 wallclock secs ( 4.60 usr  1.82 sys +  0.00 cusr  0.00 csys =  6.42 CPU)
big-tables: Total time: 11 wallclock secs ( 0.86 usr  4.39 sys +  0.00 cusr  0.00 csys =  5.25 CPU)
connect: Total time: 224 wallclock secs ( 8.77 usr 41.84 sys +  0.00 cusr  0.00 csys = 50.61 CPU)
create: Failed (output/create-MySQL-Linux_2.6.23.14_i686)
insert: Total time: 2116 wallclock secs (159.04 usr 141.21 sys +  0.00 cusr  0.00 csys = 300.25 CPU)
select: Total time: 131 wallclock secs (15.36 usr 31.04 sys +  0.00 cusr  0.00 csys = 46.40 CPU)
transactions: Test skipped because the database doesn’t support transactions
wisconsin: Total time: 20 wallclock secs ( 1.46 usr  9.15 sys +  0.00 cusr  0.00 csys = 10.61 CPU)

Como veremos hay mucha diferencia entre los tiempos, ahora si lo ponemos en unas barritas con la ayuda de nuestro excel, se ve mas bonito:

benchmarking

Popularity: 2% [?]

Si te gusto este post, asegurate de suscribirte a mi RSS feed!

Omar Palomino

Hola mi nombre es Omar Palomino. Si te gustan las noticias de mi blog, no olvides suscribirte a la página. Puedes leer más en Acerca de MI, o bien ponerte en contacto conmigo al correo: omarc320@gmail.com

More Posts - Website

Post Relacionados

SI TE GUSTO ESTE ARTICULO, COMPARTELO!


Comments

There are 2 comments for this post.

  1. ingiltere vizesi on Reply to this comment Noviembre 23, 2008 6:29 pm

    ¿Por qué este Web site no tienen otra ayuda de las idiomas

  2. Benjamin on Reply to this comment Febrero 27, 2009 11:57 am

    Que informacion es buena y que es mala? aparte, que significa cada resultado y como se compone el resumen presentado.

    MUCHAS GRACIAS PORQUE ESTE ARTICULO FUE MUL UTIL!

Write a Comment

*

Spam Protection by WP-SpamFree