links for 2007-09-30

links for 2007-09-29

Pruebas de rendimiento en MySQL

Algo muy importante en cualquier desarrollo web son las pruebas de rendimiento, con ellas podremos prever cuales son los límites de nuestro sistema, ya sean a nivel de software o hardware. Las bases de datos deben ser algo fundamental en estas pruebas.

En el caso de MySQL, existe una herramienta disponible desde la versión 5.1.4 que nos permite realizar estas pruebas. mysqlslap es un programa de diagnóstico diseñado para emular la carga de un cliente para un servidor MySQL y ofrecer informes para cada estado. Funciona como si múltiples clientes accedieran a nuestro servidor.

mysqlslap [opciones] nombre_base_datos

Da la posibilidad de que las sentencias SQL se generen automáticamente, pero para unas pruebas correctas de rendimiento se deberían usar las sentencias que ejecuta nuestro sistema. Para lo cual recomiendo sacar por trazas las sentencias en un fichero y usar luego este fichero para simular a un usuario.

Hay que tener en cuenta que cuando lee un fichero usará para delimitar las queries el retorno de carro, por lo que cada query deberá ir en una única línea, aunque se puede usar la opción –delimiter para indicar la cadena delimitadora.

Son también importantes los campos –concurrency e –iterations, el primero indica el número de clientes simultáneos, y el segundo las veces que se ejecuta la prueba.

También es recomendable usar la aplicación jMeter para realizar nuestras pruebas.

CodePress: resalta código mediante Javascript

CodePress permite resaltar el código de diversos lenguajes de programación en nuestras páginas web mediante Javascript. El código se puede modificar en tiempo real y permite entre otras el autocompletado de comillas, paréntesis y parecidos, la inclusión de trozos de código (por ejemplo los paréntesis y llaves en una sentencia if) y shortcuts (por ejemplo mostrar entidades html).
codepress.png
Los lenguajes que interpreta son PHP, Javascript, Java, Perl, SQL, HTML y CSS. Y existen fallos detectados son que los números no cambian de tamaño ya que son imágenes y que el copy/paste falla en algunas ocasiones en Internet Explorer.
CodePress
Vía / OpenSourceCommunity.org

OpenProj: gestión de proyectos open source

OpenProj es una herramienta de gestión de proyectos muy completa que puede hacer de sustituto de Microsoft Project. Disponible para Linux, Unix, Mac o Windows. Comparte el motor de la aplicación con Project-ON-Demand, una aplicación de la misma gente que no es open source y dispone de más características.
openproj.png
Permite gráficas Gantt, diagramas de red (gráficas PERT), gráficas WBS y RBS y mucho más.
OpenProj
Vía / Mad Penguin

links for 2007-09-27

Agilizar tus aplicaciones PHP con la elección correcta de funciones

Hay muchos consejos para agilizar tus scripts de PHP, pero en este caso se concentran en el uso de funciones y sus funciones alias. Por lógica la llamada a una función será más rápida que la llamada a una función alias, salvo en un caso que la verdad me sorprende.

Los porcentajes que se muestran son reales, pero quizás no sean perceptibles, ya que el uso de estas funciones puede ser mínimo en un desarrollo, pero bueno, si algo de tiempo obtenemos, mejor que mejor.

Las funciones son las siguientes:

  • sizeof y count: count es un 12% más rápida.
  • is_int y is_integer: is_int es un 9% más rápida.
  • chop y rtrim: rtrim es un 7% más rápida.
  • doubleval y floatval: floatval es un 4% más rápida.
  • fwrite y fputs: fputs es un 23% más rápida, esta es la comparativa que me sorprende, porque fputs es alias de fwrite. Que alguien me lo explique, ¿una diferencia del 23%? o no son alias o el ejemplo está mal medido.
  • implode y join: implode es un 5% más rápida.
  • ini_alter y ini_set: ini_set es un 19% más rápida.

7 tips for lightning fast PHP sites

Consejos iniciales para MySQL

Una serie de consejos para aquellos que empiezan con MySQL o que vienen de usar otra base de datos.

  • Motores de almacenamiento: los storage engines son podríamos decir que tipos de tablas, y la elección de estos puede ser fundamental, ya que algunos poseen características que otros no tienen, por ejemplo InnoDB tiene constraints de claves secundarias.
  • Escalado (scale-out vs scape-up): el escalado puede ser de dos tipos scale-out que se refiere a la capacidad de mejorar el servidor, y scale-up que es la capacidad de añadir más servidores. MySQL realiza mejor el scale-out que el scale-up.
  • Copias de seguridad: para realizar las copias de seguridad se usa el comando mysqldump, aunque si dispones de Linux puedes usar LVM, o también puedes usar la replicación.
  • Permisos: no existen los roles, los permisos se crean a partir del USERID.
  • Collations: por defecto, si se comparan strings no son sensibles a mayúsculas minúsculas (a=A).
  • Autocommit: activo por defecto.
  • Optimización: es recomendable usar los logs de las slow queries para ver qué va mal en nuestro sistema.
  • SQL_MODE: si estás preocupado por la integridad de los datos, deberás leer información sobre el SQL_MODE.
  • Isolation levels: importante leer sobre los isolation levels ya que tiene distinto comportamiento que en otras bases de datos como Oracle.

tips for MySQL newbies