Stress: Mysql vs Oracle

Visitas: 39  
Tiempo total: 0 días con 19:2:57 hrs  

En un ambiente de producción los servidores reciben múltiples peticiones que generan tráfico haciendo que las aplicaciones en los servidores se vuelvan lentas, provocando que los clientes potenciales pierdan interés en nuestras empresas y busquen una solución más rápida. Para evitar esto, es necesario conocer las capacidades de cada base de datos en cada sistema operativo a fin de decidir que software será más eficiente una vez estén en producción.

Para conocer que servidor de base de datos es más eficiente en cada ambiente es necesario realizar pruebas de estrés, obteniendo los resultados y generando comparativas que nos llevaran a la solución del problema seleccionando la mejor base de datos que será más rápida y eficiente en un determinado sistema operativo.

Esta publicación contiene información de pruebas de estrés realizadas con JMeter con las bases de datos Oracle y Mysql, en los sistemas operativos Windows y Linux.

Objetivos

Generales

  • Realizar una simulación para obtener resultados que serán de utilidad en un mundo real sin poner en riesgo aplicaciones empresariales.

Específicos

  • Instalación de distintos tipos de base de datos en distintos entornos o sistemas operativos y establecer un ambiente típico de una base de datos en producción.
  • Conocer la herramienta de pruebas de estrés de bases de datos.
  • Utilización de conectores para la consulta de aplicaciones externas a las bases de datos.
  • Analizar los resultados de las pruebas estrés realizado.
  • Seleccionar a partir de la simulación la mejor base de datos y entorno para su aplicación.

Especificaciones

Entorno Linux

Sistema operativo Ubuntu 13.04
Arquitectura 64 bits
Memoria RAM 4GB
Procesador Intel CORE i3 2.4 Ghz
Disco 68GB
SWAP 4GB

Entorno Windows

Sistema operativo Windows 7 Professional
Arquitectura 64 bits
Memoria RAM 4GB
Procesador Intel CORE i3 2.4 Ghz
Disco 385GB

Bases de datos

Base de datos 1 Mysql
Versión Mysql 5.6.15
Base de datos 2 Oracle
Versión XE 11 Release 2

Monitoreo

Linux Conky
http://conky.sourceforge.net/
Windows Desktop info – Conky for windows
http://forum.notebookreview.com/windows-os-software/585646-desktop-info-conky-windows.html

Stress

Jmeter http://jmeter.apache.org/
Mysql mysql-connector-java-5.1.27-bin.jar
Oracle ojdbc5.jar

Scripts Base de datos

Mysql

CREATE TABLE pais (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
pais VARCHAR(100) NOT NULL,
descripcion VARCHAR(100)
);

CREATE TABLE departamento (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
pais INT,
departamento VARCHAR(100) NOT NULL,
descripcion VARCHAR(100),
foreign key (pais) references pais(id) on update cascade on delete cascade
);

Oracle

CREATE SEQUENCE auto_increment_1 START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE auto_increment_2 START WITH 1 INCREMENT BY 1;

CREATE TABLE pais (
id INT,
pais VARCHAR(100) NOT NULL,
descripcion VARCHAR(100),
PRIMARY KEY (id)
);

CREATE TABLE departamento (
id INT,
pais INT,
departamento VARCHAR(100) NOT NULL,
descripcion VARCHAR(100),
PRIMARY KEY (id)
);

alter table departamento add constraint departamento_const1 foreign key (pais) references pais (id);

Documentación en ambiente LINUX

En GNU/Linux, la instalación de las bases de datos es algo que sigue siendo un completo manual de pasos a seguir. Para Oracle XE se pueden encontrar las instrucciones con un par de enlaces externos finalizando sin problemas con su instalación, pero no es así el caso de Mysql. Al instalar lo que se descarga de su sitio oficial, lo único que sucede es que se extraen los archivos a una carpeta de instalación, y el cliente del software es el que tiene que configurar una correcta instalación.

Todo bien siguiendo las instrucciones pero llega un momento en que al correr el servidor, muestra un problema. Al encontrar la solución, aparece otro problema. Al resolver este otro problema, aparece o reaparece otro. Finalmente después de instalar Mysql, JMeter. Este producto para realizar pruebas de estrés, tiene las funcionalidades de conectarse a las bases de datos pero aun asi el cliente es el que tiene que encontrar los plugins necesarios para realizar la conexión. Otro problema que encontré, es la falta de instrucciones para indicar que archivo ejecutar. Existen dos formas de hacerlo, una incorrecta y otra incorrecta.

JMeter, correr el programa de forma incorrecta:

Cd [Direccion]/Jmeter_folder/bin/
jmeter

Forma correcta:

cd [Direccion]/Jmeter_folder/bin/
Sudo chmod 777 jmeter.sh
jmeter.sh

Son instrucciones simples, pero al no iniciar el archivo .sh no mostrara ninguna conexión a ninguna base de datos. Dejando a un lado las criticas, inicio a continuación con los pasos realizados en GNU/Linux.

1. Inicio de software de monitorización

Captura de pantalla de 2013-12-13 00_43_47

2. Inicio de Mysql

Captura de pantalla de 2013-12-13 00_45_37

3. Inicio de Oracle Database

Captura de pantalla de 2013-12-13 00_46_18

4. Inicio de Jmeter

Captura de pantalla de 2013-12-13 00_47_43

5. Prueba Mysql: 100 Hilos, 3000 peticiones c/u = 300,000 peticiones.

Captura de pantalla de 2013-12-13 00_48_09

6. String de conexión: jdbc:mysql://localhost:3306/modela

Captura de pantalla de 2013-12-13 00_48_15

7. Query: SELECT * FROM país p, departamento d WHERE p.id = d.pais;

Captura de pantalla de 2013-12-13 00_48_39

8. Finalización de prueba Mysql.

Captura de pantalla de 2013-12-13 00_50_57

9. Prueba ORACLE: 100 Hilos, 3000 peticiones c/u = 300,000 peticiones

Captura de pantalla de 2013-12-13 00_51_19

10. String de conexión: jdbc:oracle:thin:@//localhost:1521/XE

Captura de pantalla de 2013-12-13 00_51_25

11. Query: SELECT * FROM pais p, departamento d WHERE p.id = d.pais

Captura de pantalla de 2013-12-13 00_51_34

12. Finalizacion de prueba ORACLE

Captura de pantalla de 2013-12-13 00_54_28

Documentación en ambiente WINDOWS

El entorno de Windows es exactamente el mismo, la única diferencia consiste en que no es tan complicada la instalación de Mysql y de Oracle. En Mysql se descargo el zip de la página oficial, se configuraron dos archivos para correr en la consola, uno para iniciar el servidor y el segundo para iniciar sesión. Respecto a JMeter, aquí se pueden utilizar exactamente los mismos archivos que se utilizaron en Ubuntu.

1. Inicio de software de monitorización

Untitled-1

2. Inicio de Mysql

Untitled-2

3. Inicio de Oracle Database

Untitled-3

4. Inicio de Jmeter

Untitled-4

5. Prueba Mysql: 100 Hilos, 3000 peticiones c/u = 300,000 peticiones.

Untitled-5

6. String de conexión: jdbc:mysql://localhost:3306/modela

Untitled-6

7. Query: SELECT * FROM país p, departamento d WHERE p.id = d.pais;

Untitled-7

8. Finalización de prueba Mysql.

Untitled-8

9. Prueba ORACLE: 100 Hilos, 3000 peticiones c/u = 300,000 peticiones

Untitled-9

10. String de conexión: jdbc:oracle:thin:@//localhost:1521/XE

Untitled-10

11. Query: SELECT * FROM pais p, departamento d WHERE p.id = d.pais

Untitled-11

12. Finalización de prueba ORACLE

Untitled-12

Resultados

Entorno Linux

MYSQL 3036.3 envíos por segundo
Desviación 1.99
RAM 1.30GB / 3.67GB 35%
Swap 0GB / 3.91 GB 0%
CPU 60%
ORACLE 1839.9 envíos por segundo
Desviación 28.30
RAM 1.52GB / 3.67 41%
Swap 0GB / 3.91 GB 0%
CPU 48%

Entorno WINDOWS

MYSQL 907.5 envíos por segundo
Desviación 78.32
RAM 2.21GB / 3.67 58%
Virtual 0.08GB / 1.99GB 4%
CPU 100%
ORACLE 1349.7 envíos por segundo
Desviación 78.67
RAM 2.34GB / 3.67 61%
Virtual 0.07GB / 1.99 GB 3%
CPU 93%

Graficas

Resumen

DB % RAM % CPU Envíos/s Desviación
GNU/Linux Mysql 35 60 3036.3 1.99
Oracle 41 48 1839.9 28.30
Windows Mysql 58 100 907.5 78.32
Oracle 61 93 1349.7 78.67

RAM y CPU

image001

Envíos por segundo

image002

Desviación

image005

Conclusión

A partir de los resultados se puede observar como el mejor entorno para la base de datos es el sistema operativo GNU/Linux, Mysql tiente tanto ventajas y desventajas como Oracle. Con Mysql se puede mencionar que puede recibir un mayor envió de peticiones externas que Oracle, también se puede observar que el tiempo en atender cada solicitud es inferior que Oracle.

Por último se puede mencionar que tiene un mejor uso de RAM pero no del CPU en frente de Oracle. Oracle ofrece una gestión de la base de datos en si mas solida.

A partir de esto, la base de datos seleccionada es Mysql en el sistema operativo GNU/Linux tomando en cuenta los entornos en los cuales las pruebas fueron realizadas.

Referencias

[http://jmeter.apache.org/usermanual/functions.html]
[https://gist.github.com/beaudierman/5444977]
[http://dev.mysql.com/downloads/mysql/]
[http://meandmyubuntulinux.blogspot.com/2012/05/installing-oracle-11g-r2-express.html]
[http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html]
[http://www.adslzone.net/postp2070814.html]
[http://conky.sourceforge.net/]
[http://forum.notebookreview.com/windows-os-software/585646-desktop-info-conky-windows.html]


Para recibir boletines de información, por favor escribe tu correo electrónico:

Por favor ingrese un correo electrónico valido.
Registrado correctamente!