Está en la página 1de 12

29-4-2018 INVESTIGACION

DE MYSQL
COMMUNITY
SERVER

Josue Evangelista Cruz, Jesiel García Pérez


ADMINISTRACION DE BASE DE DATOS
¿QUÉ ES MYSQL?
MySQL es un sistema de administración de bases de datos (Database Management
System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una
aplicación que permite gestionar archivos llamados de bases de datos.
Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas
relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza múltiples
tablas para almacenar y organizar la información. MySQL fue escrito en C y C++ y
destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su
interactuación con los lenguajes de programación más utilizados como PHP, Perl y Java y
su integración en distintos sistemas operativos.

TIPOS DE USUARIO (SYS, SYSTEM, SYSDBA, SYS)


SYS: Es un conjunto de objetos que ayuda a los DBA y a los desarrolladores a interpretar
los datos recopilados por el Esquema de rendimiento. Los objetos de esquema sys se
pueden usar para casos de uso típicos de ajuste y diagnóstico. Los objetos en este
esquema incluyen:

 Vistas que resumen los datos del Esquema de rendimiento en una forma más fácil
de entender.
 Procedimientos almacenados que realizan operaciones tales como la
configuración del esquema de rendimiento y generación de informes de
diagnóstico.
 Funciones almacenadas que consultan la configuración del esquema de
rendimiento y proporcionan servicios de formateo.
Para instalaciones nuevas, el esquema sys se instala de forma predeterminada durante la
inicialización del directorio de datos si utiliza mysqld con la opción --initialize o --initialize-
insegura. Si no se desea, puede soltar el esquema sys manualmente después de la
inicialización si no es necesario.
Los objetos de esquema sys tienen un DEFINER de 'mysql.sys'@'localhost'. El uso de la
cuenta dedicada mysql.sys evita problemas que ocurren si un DBA cambia el nombre o
quita la cuenta raíz.
ESTRUCTURA FÍSICA DE LA BASE DE DATOS
La capa física es donde están almacenados los datos.

En esta figura, los Connectors representan la API que MySQL expone al usuario, por lo
que representaría la parte más cercana al sistema de la capa aplicación. MySQL dispone
de APIs para muchos lenguajes de programación. En la parte más baja podemos ver los
elementos File system y Files & Logsque representan la capa física.

Lo que queda entre medio es la capa lógica, donde reside la funcionalidad del servidor. La
Figura de abajo muestra como es el flujo de ejecución de una sentencia SQL dentro del
servidor.

Básicamente, las consultas entran a través de un protocolo cliente/servidor provenientes


de las aplicaciones.
Las consultas, pueden ser almacenadas en una cache para su posterior reutilización.
Después, si la consulta que ha entrado no se encuentra en la cache, se procede a su
análisis sintáctico, que produce una serie de estructuras de datos que se almacenan en
memoria. En esta fase, puede hacerse uso de las sentencias preparadas (Prepared
statements) que sirven para aumentar la eficiencia de determinadas consultas.

Una vez la consulta está preparada, su ejecución puede ser directa o bien pasar por el
optimizador si es de tipo SELECT. Esto es así ya que las instrucciones SELECT suelen
ser las potencialmente más costosas ya que pueden necesitar acceder a tablas enteras o
grandes porciones de la base de datos.

Una vez la sentencia está lista para ejecutarse, el acceso a los datos se hace a través de
una interfaz genérica de acceso a los datos físicos que es independiente del tipo de tabla
que usemos. Y por último, la consulta se ejecuta en el subsistema correspondiente al tipo
de tabla que estamos accediendo.
ESTRUCTURA LÓGICA DE LA BASE DE DATOS

Una buena imagen mental de cómo funcionan los componentes de MySQL juntos lo
ayudará a comprender el servidor. La Figura de arriba muestra una vista lógica de la
arquitectura de MySQL.
La capa superior contiene los servicios que no son exclusivos de MySQL. Son servicios
que la mayoría de las herramientas de cliente / servidor basadas en red o servidores
necesitan: manejo de la conexión, autenticación, seguridad, etc.
La segunda capa es donde las cosas se ponen interesantes. Gran parte de los cerebros
de MySQL están aquí, incluido el código para el análisis de consultas, análisis,
optimización, almacenamiento en caché y todas las funciones incorporadas (por ejemplo,
fechas, horas, matemática y encriptación). Cualquier funcionalidad proporcionada en los
motores de almacenamiento vive en este nivel: procedimientos almacenados, activadores
y vistas, por ejemplo.
La tercera capa contiene los motores de almacenamiento. Son responsables de
almacenar y recuperar todos los datos almacenados "en" MySQL. Al igual que los
diversos sistemas de archivos disponibles para GNU / Linux, cada motor de
almacenamiento tiene sus propios beneficios y desventajas. El servidor se comunica con
ellos a través de la API del motor de almacenamiento. Esta interfaz oculta las diferencias
entre los motores de almacenamiento y los hace ampliamente transparentes en la capa
de consulta. La API contiene un par de docenas de funciones de bajo nivel que realizan
operaciones tales como "comenzar una transacción" o "buscar la fila que tiene esta clave
primaria". Los motores de almacenamiento no analizan SQL1 ni se comunican entre sí;
simplemente responden a las solicitudes del servidor.
LISTENER DE LA BASE DE DATOS (COMANDOS EN MYSQL SHELL)
Para que se inicien los servicios de nuestra base de datos solo será necesario ejecutar la
siguiente línea de comando desde la consola (cmd).

Si por alguna razón tuviéramos que parar manualmente el servidor de MySQL también
podremos hacerlo con línea de comando de la siguiente manera.

Para que la tarea de inicio del servidor se realice sin nuestra intervención tendremos que
prefijar en el Servicio MYSQL la opción de Tipo de Inicio Automático. Como se muestra en
la siguiente imagen
ARCHIVOS DE CONFIGURACIÓN (MY.CONF O MY.INI)

Para que el sistema funcione correctamente, y sobre todo, que se adapte lo más posible a
sus necesidades se debe configurar. Para ello dispone de varios métodos. El primero de
estos métodos para poder configurar todas las opciones, es desde la línea de comandos.
Este método suele ser muy útil si está probando nuevas configuraciones, en definitiva,
para hacer pruebas. El principal problema que tiene es que los cambios realizados no
perduran demasiado tiempo, sólo son válidos durante la sesión actual.

El segundo método de configuración es trabajando directamente con las variables de


entorno, pero aparte de ser bastante tedioso, los cambios tampoco perduran. Y en
definitiva, no es muy utilizado.

El tercer método, que suele ser el más utilizado y el más común, está basado
completamente en la filosofía Unix/Linux, es decir, trabajar a través de un fichero
predeterminado de configuración. Este fichero, del que ya se ha hablado anteriormente,
es el fichero my.cnf o my.ini.

El archivo de configuración, my.ini o my.cnf, contiene las opciones de arranque de


MySQL. Puede encontrarse en diferentes ubicaciones según el sistema operativo y la
versión de MySQL, las cuales se leen en un orden establecido. Si una opción está
definida en más de uno de ellas, toma precedencia el valor declarado en la última.

En el caso de Windows la ubicación es la siguiente:

%PROGRAMDATA%\MySQL\MySQL Server X.X\my.ini o my.cnf

De este fichero de configuración se leerán las opciones globales que se aplicarán a


todos los servidores y a los usuarios. Según en qué sistema se encuentre podrá
encontrar ligeras diferencias.

El fichero de configuración contiene líneas del siguiente tipo:

 #comentario

Las líneas de comentarios comienzan con un # o ;. Un comentario puede comenzar


también en el medio de una línea. Las líneas vacías son ignoradas.

 [group]

Group es el nombre del programa o del grupo para el que se quieren especificar las
opciones. Después de esta línea, cualquier opción o valor de una variable se aplicará al
grupo definido, hasta que se llegue al final del fichero de configuración o hasta que se
encuentre otra línea de definición de variables de otro grupo.

 option

Esto es equivalente a la ejecución con el parámetro —option de la línea de comandos.

 option=value

Esto es equivalente a la ejecución con el parámetro —option=value de la línea de


comandos.

 set-variable = name=value

Esto es equivalente a la ejecución con el parámetro —set-variable name=value de la línea


de comandos.

Para aclarar toda esta sintaxis y ofrecer al lector un ejemplo detallado de configuración, se
adjunta un fichero típico donde se definen las variables globales:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
set-variable=key_buffer_size=16M
set-variable = max_allowed_packet=1M

[mysqldump]
quick

Para evitar gran pérdida de tiempo reconfigurando el servidor en caso de errores, antes
de realizar cualquier cambio o modificación en los ficheros de configuración, realice una
copia de seguridad de todos los ficheros de configuración.
CONSOLA DE ADMINISTRACIÓN (WORKBENCH GRAFICO)
MySQL Workbench. Es un software creado por la empresa Sun Microsystems. Esta
herramienta permite modelar diagramas entidad-relación para bases de datos MySQL.
Puede utilizarse para diseñar el esquema de una base de datos nueva, documentar una
ya existente o realizar una migración compleja. La aplicación elabora una representación
visual de las tablas, vistas, procedimientos almacenados y claves foráneas de la base de
datos. Además, es capaz de sincronizar el modelo en desarrollo con la base de datos real,
ingeniería inversa para importar el esquema de una base de datos ya existente el cual
haya sido guardado o hecho una copia de seguridad.
MySQL Workbench también puede generar el script necesario para crear la base de datos
que se ha dibujado en el esquema; es compatible con los modelos de base de datos de
DBDesigner 4 y soporta las novedades incorporadas en MySQL 5.

ESTRUCTURA DE MYSQL (DICTIONARY) (SYS BASE DE DATOS)


OBJETOS (SQL COMANDO):

Trataremos algunos conceptos como creación de una base de datos, de tablas y de


modificación sobre las tablas, así como también vistas (VIEW), consultas almacenadas
sobre las cuales luego podremos realizar consultas como si fuesen tablas de registros y
también TRIGGER, que son como procedimientos que se asocian a un evento en las
tablas, funciones almacenadas y procedimientos almacenados.

Crear una Base de Datos (Hay que entrar primero en mysql: mysql -h host -u user -p)

mysql> CREATE DATABASE nombreBD;

Usar una Base de Datos

mysql> use nombreBBDD;

Crear una tabla. Sintaxis típica de SQL

mysql> CREATE TABLE nombre_tabla (id INT(6) NOT NULL, campo2


VARCHAR(20), campo3 CHAR(1), campo4 DATE, campo5 DOUBLE(16,2),
PRIMARY KEY(id));

Insertar un registro

mysql> INSERT INTO nombre_tabla (col1,col2) VALUES(col2*2,15);

Modificar registros
mysql> UPDATE tabla SET col1=2;

Borrar registros

mysql> DELETE FROM table WHERE col1 = 20;

Vistas

Se definen para facilitar y restringir el acceso a los datos de las tablas a usuarios
limitados.
La estructura es estática y se hace en tiempo de creación: los futuros campos / cambios
sobre las tablas no se reflejan en la vista.

Entonces si una vista tiene un SELECT * FROM tabla y después de definirla añadimos un
campo a la tabla original, no lo veremos en la vista.

Un ejemplo de una vista para ver las ventas por vendedor:

1. CREATE VIEW Ventasporvendedor AS


2. SELECT idvendedor
3. SUM (cantidad * precio) total
4. FROM pedidos
5. GROUP by idvendedor
6. ORDER BY total DESC

Triggers

Son procedimientos almacenados asociados a una tabla concreta que se ejecutan en un


momento anterior o posterior a una transacción explícita, y que ejecutan su código por
cada registro afectado por la transacción. No se pueden invocar explícitamente, porque su
ejecución está asociada a una tabla/transacción/tiempo.

También se conocen como desencadenadores, disparadores o procedimientos


almacenados especiales.

Ejemplo antes de insertar una venta verifico si el producto está disponible en stock, el
evento insert dispara el trigger verstock automáticamente.

1. CREATE TRIGGER verstock BEFORE INSERT ON Ventas


2. FOR EACH ROW
3. BEGIN
4. DECLARE idproducto INT;
5. IF (idproducto) THEN
6. SELECT stock FROM productos where id=idproducto;
7. END IF;
8. END

Procedimientos Almacenados

Los procedimientos almacenados y funciones son nuevas funcionalidades de la versión


de MySQL 5.0.

Un procedimiento almacenado es un conjunto de comandos SQL que pueden


almacenarse en el servidor. Una vez que se hace, los clientes no necesitan relanzar los
comandos individuales pero pueden en su lugar referirse al procedimiento almacenado.

1. CREATE PROCEDURE Graba_Venta (IN tipoventa INTEGER)


2. BEGIN
3. DECLARE tipo CHAR(10);
4. IF tipoventa = 1 THEN
5. SET tipo = Minorista';
6. ELSE
7. SET tipo = 'Mayorista';
8. END IF;
9. INSERT INTO ventas (tipo) VALUES (tipo);
10. END

Luego se invoca de la siguiente manera

1. CALL Graba_venta(1)

Otro ejemplo de procedimiento almacenado

1. CREATE PROCEDURE ProcedimientoInsertar


2. (
3. in Nombre varchar(50),
4. in Telefono varchar(50)
5. )
6. BEGIN
7. insert into contactos(nombre,telefono) values(Nombre,Telefono);
8. END
Funciones

Las funciones almacenadas de MySQL son similares a los procedimientos almacenados:


son conjunto de comandos que pueden almacenarse en un servidor.

Las funciones están pensadas para devolver parámetros, las funciones pueden ser
llamadas dentro de sentencias SQL como select, insert, etc. Las funciones no pueden
devolver consultas SQL, solo sirven para realizar tareas donde necesitemos realizar algún
tratamiento de datos, calculo o conversiones.

Por ejemplo:

1. CREATE FUNCTION descuento(precio, porcentaje FLOAT)


2. RETURNS FLOAT DETERMINISTIC
3. BEGIN
4. DECLARE importedescuento FLOAT;
5. SET importedescuento = precio*porcentaje/100;
6. RETURN importedescuento;
7. END $$