Conceptos miercoles 5 septiembre

Motor de base de datos

 El Motor de base de datos es el servicio principal para almacenar, procesar y proteger los datos.

 El Motor de base de datos proporciona acceso controlado y procesamiento de transacciones rápido para cumplir con los requisitos de las aplicaciones consumidoras de datos más exigentes de su empresa.

Use Motor de base de datos para crear bases de datos relacionales para el procesamiento de transacciones en línea o datos de procesamiento analíticos en línea.

 Se pueden crear tablas para almacenar datos y objetos de base de datos como índices, vistas y procedimientos almacenados para ver, administrar y proteger los datos.

MyISAM


Es el motor de almacenamiento por defecto. por el sistema administrador de bases de datos relacionales MySQL.

Se basa en el código ISAM pero tiene muchas extensiones útiles.

Cada tabla MyISAM se almacena en disco en tres ficheros. Los ficheros tienen nombres que comienzan con el nombre de tabla y tienen una extensión para indicar el tipo de fichero. Un fichero .frm almacena la definición de tabla. El fichero de datos tiene una extensión .MYD (MYData) . El fichero índice tiene una extensión .MYI (MYIndex) .

InnoDB


Es una tecnología de almacenamiento de datos de código abierto para la base de datos MySQL, incluido como formato de tabla estándar en todas las distribuciones de MySQL AB.

Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM


Transacciones tipo ACID.

 

En sus siglas en Ingles:

Atomicity = Atomicidad

Consistency = Consistencia

Isolation = Aislamiento

Durability = Durabilidad

Estas cuatros características de los sistemas gestores de bases de datos se suelen resumir con el acrónimo ACID.

En las base de datos se denomina ACID a un conjunto de características necesarias para que una serie de instrucciones puedan ser consideradas como una transacción

características ACID.

·         Atomicidad: es la propiedad que asegura que la operación se ha realizado o no, y por lo tanto ante un fallo del sistema no puede quedar a medias.


·         Consistencia: es la propiedad que asegura que sólo se empieza aquello que se puede acabar. Por lo tanto se ejecutan aquellas operaciones que no van a romper la reglas y directrices de integridad de la base de datos.


·         Aislamiento: es la propiedad que asegura que una operación no puede afectar a otras. Esto asegura que la realización de dos transacciones sobre la misma información sean independientes y no generen ningún tipo de error.

·         Durabilidad: es la propiedad que asegura que una vez realizada la operación, ésta persistirá y no se podrá deshacer aunque falle el sistema.

Cumpliendo estas 4 condiciones se considera ACID Compliant

Otra característica destacable de una transacción es su durabilidad. Esta garantiza que, en el instante en el que se finaliza la transacción, esta perdura.

Un sistema de transacciones debe garantizar el aislamiento. El aislamiento es la garantía de que los cambios hechos dentro de cualquier transacción son invisibles al resto los usuarios, mientras esta no haya concluido.

Diferencia entre MyISAM y InnoDB.


MyISAM


MyISAM es el motor de almacenamiento por default y está basado en el probado ISAM, incorporando nuevas características pero conservando su fiabilidad.

MyISAM almacena la información en tres archivos por tabla, uno para el formato de tabla, otro para los datos y un tercer archivo para los índices.

Las tablas MyISAM soportan un número de filas máximo de aproximadamente ~4.295E+09 y puede tener hasta 64 archivos índices por tabla.

Los campos Text y Blob pueden ser indexados completamente, lo que es de gran importancia para funciones de búsqueda.

InnoDB


InnoDB es relativamente nuevo comparado con MyISAM. Una de las principales diferencias de InnoDB es el soporte de transacciones e integridad referencial.

InnoDB provee bloqueo a nivel final, en contra del bloqueo a nivel tabla de MyISAM. Esto es, que mientras una consulta está actualizando o insertando una fila, otra consulta puede actualizar una fila diferente al mismo tiempo. Estas características incrementan la performance en concurrencia de múltiples usuarios.

Otra de las principales características es que permite definir Foreign Key Constraints, lo que permite a los desarrolladores asegurarse que los datos insertados con referencia a otra tabla permanecerán válidos (lo que se conoce como integridad referencial).


Comparacion:


MyISAM, en la mayoría de los casos será más rápido que InnoDB en selecciones, actualizaciones e inserciones bajo circunstancias normales.

InnoDB también es un motor de almacenamiento ágil, pero se destaca porque incorpora características como bloqueo a nivel filas, transacciones y diseño de tablas relacionales. Aunque la primera de las características nombradas solo se destaca en tablas que son “martilladas” constantes, como por ejemplo una tabla de logs, para el resto de los casos, un bloqueo a nivel tabla es suficiente en condiciones normales.

InnoDB se recupera de errores o reinicios no esperados del sistema a partir de sus logs, mientras que MyISAM requiere una exploración, reparación y reconstrucción de índices de los datos de las tablas que aun no habían sido volcadas a disco.



¿Cómo podemos activar innoDB?


Para activarlo debemos editar el fichero de configuración de MySQL: my.cnf que dependiendo de nuestro sistema operativo estará en uno u otro sitio.
En window podemos encontrarlo en mysql/bin y en linux dentro de la carpeta etc de nuestra instalación.
Abriendo este fichero, tendremos que comentar la línea donde aparece “skip-innodb’ y descomentar las siguientes líneas, quedando de la siguiente forma:
# Comment the following if you are using InnoDB tables
#skip-innodb
innodb_data_home_dir = "D:/xampplite/mysql/"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "D:/xampplite/mysql/"
innodb_log_arch_dir = "D:/xampplite/mysql/"
## You can set .._buffer_pool_size up to 50 - 80 %
## of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
## Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
Reiniciamos nuestro MySQL y ya tendremos soporte innoDB en nuestra instalación Xampp.
NOTA: Esto se puede aplicar a casi cualquier instalación de MySQL, pero en nuestro caso se ha utilizado Xampp.


No hay comentarios:

Publicar un comentario