MySQL 5 Descripción

Anuncio
MySQL 5
Descripción
MySQL es un sistema de gestión de base de datos relacional, multi-hilo y multiusuario con más de seis
millones de instalaciones. MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su
vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de
licenciamiento dual. Por un lado se ofrece bajo la GNU GPL para cualquier uso compatible con esta
licencia, pero para aquellas empresas que quieran incorporarlo en productos privativos deben comprar a la
empresa una licencia específica que les permita este uso. Está desarrollado en su mayor parte en ANSI C.
Versiones de MySQL
- Enterprise
Es una plataforma probada y confiable que combina el software de Base de Datos de MySQL, servicios de
monitoreo y asesoramiento para asegurar que el negocio logre los niveles de confiabilidad, seguridad y
disponibilidad deseados.
Incluye:
- MySQL Enterprise Server: la versión más confiable, segura y actualizada del SGBD de código
abierto más popular.
- MySQL Enterprise Monitor: provee monitoreo y asesoramiento automático para ayudar al DBA a
eliminar vulnerabilidades de seguridad, mejorar la replicación, optimizar la performance, entre
otras cosas.
- MySQL Query Analizer: optimiza la performance de las aplicaciones
- MySQL Technical Support: permite obtener respuestas rápidas
- MySQL Consultative Support: está disponible con MySQL Enterprise Platinum y brinda
asesoramiento a medida directamente del equipo de soporte de MySQL sobre como diseñar y
configurar los servidores MySQL, schemas, consultas y replicación.
- Comunity
MySQL community server es el SGBD de código abierto manejado por la comunidad open-source,
disponible completamente bajo licencia GPL. No cuenta con las aplicaciones complementarias disponibles
en la versión Enterprise.
¿Por qué MySQL?
La Base de Datos MySQL se ha convertido en la base de datos de código abierto más popular en el mundo
debido a su alta performance, alta confiabilidad y facilidad de uso. Es utilizada en todo el mundo ya sea
por programadores web individuales como por las más grandes organizaciones y las de mayor crecimiento
para reducir la inversión de tiempo y dinero para permitir el funcionamiento de sus sitios web de alto
volumen de contenido, los sistemas críticos para sus negocios, incluyendo a líderes de la industrias como
Yahoo!, Alcatel-Lucent, Google, Nokia, YouTube, and Zappos.com.
No sólo es MySQL la base de datos de código abierto más popular, sino que se ha convertido en la base de
datos elegida para la nueva generación de aplicaciones LAMP (Linux, Apache, MySQL, PHP / Perl /
Python). MySQL corre sobre más de 20 plataformas incluyendo Linux, Windows, Mac OS, Solaris, HP-UX,
IBM AIX, brindando la flexibilidad que pone a quién la utiliza en pleno control.
Sin importar si uno es nuevo a la tecnología de bases de datos o si uno es un desarrollador experimentado
o administrador de bases de datos, MySQL ofrece un extenso rango de aplicaciones, soporte,
entrenamiento
y
consultas
certificados
para
hacer
exitosos
sus
negocios.
Top 10 de Razones para usar MySQL
1. Escalabilidad y Flexibilidad
El servidor de base de datos MySQL provee una alta escalabilidad, luciendo la capacidad de manejar
aplicaciones profundamente embebidas con un tamaño de solo 1MB hasta correr almacenes de datos
masivos soportando terabytes de información. Flexibilidad de plataforma es una característica robusta
de MySQL con todas las variantes de Linux, Unix, y Windows siendo apoyadas. La naturaleza de código
abierto de MySQL permite personalización completa para aquellos que quieren agregar requerimientos
únicos al servidor de base de datos.
2. Alto Rendimiento
Una arquitectura única de motor de almacenamiento permite a profesionales de bases de datos
configurar el servidor de bases de datos MySQL específicamente para aplicaciones particulares, con un
resultado final de asombroso rendimiento. Sea la aplicación destinada un sistema de transacciones de
alta velocidad o un sitio de red de alto volumen que provee servicios a millones de consultas por día,
MySQL puede satisfacer las expectativas de rendimiento más demandantes de cualquier sistema. Con
utilidades de carga de alta velocidad, cachés de memoria distintivos, índices de texto completo, y otros
mecanismos extensores de rendimiento, MySQL ofrece toda la munición necesaria para sistemas críticos
de negocios de la actualidad.
3. Alta Disponibilidad
Confiabilidad sólida y disponibilidad constante son sellos de MySQL, con clientes confiados en MySQL
para garantizar tiempo productivo en cada momento. MySQL ofrece una variedad de opciones de alta
disponibilidad de desde configuraciones de replicación master/slave de alta velocidad, hasta clusters de
servidores especializados ofreciendo conmutación por error instantánea, hasta vendedores de terceros
ofreciendo soluciones únicas de alta disponibilidad para el servidor de bases de datos MySQL.
4. Soporte Robusto de Transacciones
MySQL ofrece uno de los motores de bases de datos transaccionales más poderosos del mercado.
Las características incluyen soporte completo de transacciones ACID (atomicidad-consistenciaaislamiento “isolate”-durabilidad), cierre ilimitado de niveles de filas, capacidad distribuida de
transacción, soporte para transacciones de múltiples versiones donde lectores nunca bloquean a
escritores y viceversa. La integridad completa de datos también es asegurada a través de integridad
referencial impuesta por servidor, niveles especializados de aislamiento de transacciones, y detección
instantánea de puntos muertos.
5. Fortalezas de Red y Almacén de datos
MySQL es el estándar para sitios de red de alto tráfico por su motor de consultas de alto rendimiento,
capacidad de rápida inserción de datos, y fuerte soporte para funciones de red especializadas como
búsquedas rápidas de texto completo. Estas mismas fortalezas también se aplican a entornos de
almacenamiento de datos donde MySQL escala hacia el rango de terabytes, tanto para servidores
simples como para arquitecturas de mejoramiento. Otras características como tablas de memoria
principal, árboles B e índices hash, y tablas comprimidas de archivo que reducen requerimientos de
almacenamiento en hasta un 80%, hacen a MySQL un fuerte destacado tanto para red como aplicaciones
de inteligencia de negocios.
6. Fuerte Protección de Datos
Porque proteger datos de activos de corporaciones es el trabajo número uno de los profesionales de
bases de datos, MySQL ofrece características de seguridad excepcionales que aseguran la protección
absoluta de los datos. En términos de autenticación de bases de datos, MySQL provee mecanismos
poderosos para asegurar que solo usuarios autorizados tengan acceso al servidor de bases de datos, con
la habilidad de bloquear usuarios al nivel de máquina de cliente, cuando sea posible.
Soporta a SSH y SSL también es provisto para mantener conexiones seguras. Está presente un marco
(Framework) de manera que los usuarios solo vean datos que deberían, y funciones poderosas de cifrado
y descifrado aseguran que datos sensibles sean protegidos de ser vistos sin autorización. Finalmente,
utilidades de respaldo y recuperación proveídas por MySQL y vendedores de terceros de software,
permiten respaldo físico y lógico completo así como recuperación completa y puntual.
7. Desarrollo Comprensivo de Aplicaciones
Una de las razones por las cuales MySQL es la base de datos de código abierto más popular del mundo es
que provee soporte comprensivo para las necesidades de desarrollo de toda aplicación. Dentro de la
base de datos, soporte puede ser encontrado para procedimientos almacenados, disparadores
(triggers), funciones, vistas, cursores, ANSI-estándar SQL, y más. Para aplicaciones embebidas, existen
librerías conectables (plug-in) disponibles para embeber el soporte de la base de datos de MySQL dentro
de
casi
cualquier
aplicación.
MySQL también provee conectores y unidades (ODBC, JDBC, etc.) que permiten todas las formas de
aplicaciones para hacer uso de MySQL como un servidor de gestión de datos preferido. No importa si es
PHP, Perl, Java, Visual Basic o .NET, MySQL ofrece a desarrolladores de aplicaciones todo lo que
necesitan para ser exitosos en la construcción de sistemas de información manejados con bases de
datos.
8. Facilidad de Manejo
MySQL ofrece capacidades excepcionales de inicio rápido con un promedio de tiempo desde la descarga
del software hasta la conclusión de la instalación de menos de 15 minutos. Esta regla se mantiene
verdadera sin importar si la plataforma es Microsoft Windows, Linux, Macintosh o Unix. Una vez
instalado, la características de auto-gestión como expansión automática de espacio, auto-reinicio, y
configuración dinámica, cambios alivian mucha carga de administradores de bases de datos. MySQL
también provee una suite completa de gestión gráfica y herramientas de migración, que permiten al
administrador de bases de datos a manejar, solucionar fallas, y controlar la operación de muchos
servidores MySQL desde un solo puesto de trabajo. Muchas herramientas de vendedores de terceros de
software están disponibles para MySQL que manejan tareas en un rango desde diseño de datos y ETL,
hasta administración completa de bases de datos, administración de trabajo, y monitoreo de
rendimiento.
9. Libertad de Código Abierto y Soporte 24x7
Muchas corporaciones son vacilantes en apostar completamente en software de código abierto porque
creen que no pueden obtener el tipo de soporte o servicio de seguridad profesional en el que confían
actualmente con software propietario para asegurar el éxito total de sus aplicaciones clave. La
pregunta de indemnización también es planteada usualmente. MySQL no es un típico proyecto de código
abierto dado que todo el software es poseído y apoyado por Oracle, y por eso, un único costo y modelo
de soporte están disponibles que proveen una combinación única de libertad de código abierto y
software confiable con soporte.
10. Precio Total Más Bajo de Propiedad
Al migrar aplicaciones de unidades de bases de datos a MySQL, o usar MySQL para nuevos proyectos de
desarrollo, las corporaciones se están dando cuenta de los ahorros de costo que muchas veces se estiran
en 7 cifras. Realizado el uso del servidor de bases de datos MySQL y arquitecturas mejoradas que
utilizan hardware de mercancía de bajo costo, las corporaciones están encontrando que pueden lograr
niveles sorprendentes de escalabilidad y rendimiento, todo a un costo que es mucho menor que aquel
ofrecido por vendedores de software propietario. Además, la confiabilidad y facilidad de mantener de
MySQL significan que administradores de bases de datos no pierden tiempo en la localización y
depuración de fallas de rendimiento o problemas de tiempo de inactividad, pero en cambio pueden
concentrarse en hacer un impacto positivo en tareas de mayor nivel que involucran el lado de negocios
de los datos.
Características Técnicas:
-Query Cache
MySQL 5.0 Server proporciona una query cache. Cuando se usa, la query cache almacena el texto de una
consulta SELECT junto con el resultado que se le envió al cliente. Si se recibe una consulta idéntica
posteriormente, el servidor devuelve el resultado de la caché de consultas en lugar de parsear y ejecutar
la consulta de nuevo.
La caché de consultas es muy útil en un entorno donde tiene tablas que no cambian frecuentemente y
donde el servidor recibe muchas consultas idénticas. Esta es la típica situación de muchos servidores Web
que generan muchas páginas dinámicas basadas en contenido de base de datos.
Nota 1: La caché de consultas no devuelve datos antiguos. Cuando las tablas se modifican, cualquier
entrada relevante en la caché de consultas se elimina.
Nota 2: La caché de consultas no funciona en un entorno donde tiene muchos servidores MySQL
actualizando las mismas tablas MyISAM.
Nota 3: La caché de consultas no se usa para comandos preparados en la parte del servidor. Si está usando
este tipo de comandos preparados, considere que no se beneficiarán de la caché de consultas.
A continuación algunos datos de rendimiento de la caché de consultas. Estos resultados se generaron con
el MySQL benchmark suite en un Linux Alpha 2 x 500MHz con 2GB RAM y 64MB de caché de consultas.
 Si todas las consultas que está ejecutando son simples (tales como seleccionar un
registro de una tabla con un registro), pero diferente de forma que las consultas no
pueden cachearse, la pérdida de rendimiento por tener activa la caché de consultas es
del 13%. Este puede considerarse el peor escenario posible. En el mundo real, las
consultas suelen ser mucho más complicadas, así que la pérdida de rendimiento es
considerablemente menor.
 Las búsquedas para un registro en una tabla de un registro son un 238% más rápidas con
la caché de consultas que sin ella. Esto puede considerarse como la mínima mejora
esperada para una consulta que se cachea.
Para desactivar la caché de consultas al arrancar el servidor, ponga la variable de sistema
query_cache_size a 0. Al desactivar el código de caché de consultas, no hay una pérdida de rendimiento
evidente. Las capacidades de la caché de consultas pueden quitarse totalmente del servidor usando la
opción
--without-query-cache
con
configure
al
compilar
MySQL.
- Tecnologías de Almacenamiento Soportadas
Elegir el tipo correcto de tabla para una situación particular es el primer paso hacia la construcción de
aplicaciones de alta performance.
Dentro de MySQL hay un número distinto de tablas, tales como MyISAM, InnoDB, Archive, Merge, Memory y
más, cada una con un propósito determinado. Por ejemplo, si tenemos conjuntos de datos con pocos
accesos, Archive puede ser la mejor elección. Afortunadamente MyISAM e InnoDB son los dos únicos tipos
realmente necesarios para construir una base de datos robusta; nos concentraremos sobre esos dos.
¿Qué son MyISAM e InnoDB y cuando debemos usar cada uno?
- MyISAM
MyISAM deriva del motor original MySQL ISAM y es usado frecuentemente como el tipo
de tabla por defecto cuando se crean nuevas tablas en MySQL. En un sentido amplio, MyISAM está
orientado hacia la velocidad y el indexado. MyISAM permite indexar columnas BLOB y TEXT,
esencialmente permitiendo la construcción de búsquedas de texto completas en una aplicación.
Desgraciadamente, toda esa velocidad va en desmedro de la integridad de los datos.
- InnoDB
InnoDB por otro lado, provee la otra cara de la moneda y ofrece la integridad completa de los
datos y soporte transaccional que MyISAM no tiene. InnoDB es el tipo de tabla de transacción
segura de MySQL y resulta muy eficaz en la garantía de la integridad de los datos, almacenamiento
de grandes cantidades de datos y por supuesto, soporte sobre las transacciones. Sin embargo,
tanto como MyISAM, tiene sus desventajas. Toda la integridad provista por InnoDB significa un
costo alto tanto en velocidad como en recursos (InnoDB requiere más espacio en disco que
MyISAM).
Si bien no puede decirse definitivamente cuando utilizar una u otra opción, puede decirse que
cuando la integridad de los datos y las transacciones son críticas, como en aplicaciones de ecommerce, se recomienda utilizar InnoDB. InnoDB provee el soporte y la estructura necesarios
para manejar grandes cantidades de datos y realizar múltiples operaciones de datos. Sin embargo,
InnoDB sería una mala elección en situaciones donde se necesita acceso rápido, como en el caso
de tablas de consulta (‘look-up’) o tablas estáticas que contienen una pequeña cantidad de datos.
En estos últimos casos es mejor optar por la velocidad de MyISAM.
- Utilización de la Memoria
A continuación se presenta un listado de algunas de las formas en las cuales el servidor (mysqld) utiliza la
memoria. Donde corresponde se explicita el nombre de la variable del sistema referida a un uso particular
de la memoria.
 El key buffer (variable key_buffer_size) es compartido por todos los hilos; otros buffers
usados por el servidor son creados y utilizados solo si es necesario.
 Las conexiones utilizan un determinado espacio específico de cada hilo:
o
Una pila (default 64KB, variable thread_stack)
o
Un buffer de conexión (variable net_buffer_length)
o
Un buffer de resultados (variable net_buffer_length)
 El buffer de conexión y el buffer de resultados son agrandados dinámicamente hasta el
valor establecido en max_allowed_packet cuando fuera necesario. Mientras una consulta
esta ejecutándose una copia del ‘query string’ también es almacenada.
 Todos los hilos comparten la misma memoria base.
 Solo las tablas MyISAM comprimidas son mapeadas en memoria. Esto sucede ya que el
espacio de memoria de 32-bits de 4GB no es lo suficientemente grande para la mayoría
de las tablas grandes. Cuando los sistemas que cuentan con direcciones de 64-bits se
hagan más utilizados hay idea de agregar soporte general para mapeo de tablas en
memoria.
 Cada pedido que realiza un escaneo secuencial de una tabla utiliza un buffer de lectura
(variable read_buffer_size).
 Cuando se leen filas en una secuencia arbitraria (por ejemplo, cuando se sigue un sort
determinado) se utiliza un ‘random-read buffer’ (variable read_rnd_buffer_size) puede
ser utilizado para evitar búsquedas en la memoria.
 La mayoría de los pedidos que realizan algún tipo de sort utilizan un ‘sort buffer’ y entre 0
y 2 archivos temporales, dependiendo en el tamaño del ‘result-set’
PS y otros programas de monitoreo del sistema pueden reportar que mysqld utiliza demasiada memoria.
Esto puede ser por pilas (stacks) de diferentes hilos en diferentes direcciones de memoria. En ocasiones se
toma el espacio libre entre dichos stacks como espacio ocupado. Si bien aparece como ocupada, si está
disponible y es usable para las demás aplicaciones.
Referencias de Rendimiento
- TM1 Benchmark
La siguiente referencia fue realizada sobre MySQL 4.1 y 5.0 en un sistema con Intel P4, 2.8 GHz, 1Gb RAM
utilizando la tecnología de almacenamiento InnoDB, 10 clientes y 500K de suscriptores, utilizando una
conexión a través de ODBC.
El resultado final de MQth (Maximum Qualified Throughput) fue:
- DBT2 Benchmark
MySQL 5.0 incluye programas que se denominan "stored procedures"(procedimientos almacenados), los
cuales están físicamente almacenados en la base de datos, en vez de una localidad separada.
La ventaja de un procedimiento almacenado es que, en respuesta a una petición de usuario,
es ejecutado directamente en el motor de bases de datos, realizando ciertas operaciones con mayor
rapidez.
La prueba demostró que los procedimientos almacenados proveen un impulso en el rendimiento sobre el
uso de SQL.
Los resultados fueron:
- C’t Magazine Database Performance Contest
En el año 2006 se realizó una competencia entre varios equipos de desarrolladores de software, que
consistía en reproducir la aplicación del Dell DVD online store utilizando cualquier combinación de sistema
operativo, base de datos y lenguaje de programación que se creyera de mejor rendimiento.
El ganador utilizaba MySQL 5.0.
Los resultados fueron:
- Scaleable Insert Benchmark
Esta referencia compara las diferentes tecnologías de almacenamiento de MySQL 5.0 para las operaciones
intensivas en inserciones.
Las tecnologías probadas son MyISAM, InnoDB y Archive.
La prueba se realizó con una herramienta llamada Quest Benchmark Factory.
Los resultados fueron:
Diego Ardizzone y Wolfgang Becker
Alumnos de 3º año de Licenciatura en Sistemas / Ingeniería Informática - Trabajo Práctico Grupal
con exposición oral
Materia: Introducción a Bases de Datos - Profesor: Lic. Adrián H. Tozzi
Descargar