Mysql crea una base de datos y crea una base de datos en una ubicación específica. ¿Cómo especificar la ubicación de almacenamiento predeterminada de la base de datos?
¿Qué es un motor de almacenamiento?
Los datos en MySQL se almacenan en archivos (o memoria) utilizando diversas tecnologías. Cada una de estas tecnologías utiliza diferentes mecanismos de almacenamiento, técnicas de indexación, niveles de bloqueo y, en última instancia, proporciona una amplia gama de funciones y capacidades diferentes. Al elegir diferentes tecnologías, puede obtener velocidad o funcionalidad adicional que mejore la funcionalidad general de su aplicación.
Por ejemplo, si está trabajando con grandes cantidades de datos temporales, es posible que desee utilizar un motor de almacenamiento en memoria. El motor de almacenamiento de memoria puede almacenar todos los datos de la tabla en la memoria. O bien, es posible que necesite una base de datos que admita el procesamiento de transacciones (para garantizar la capacidad de revertir los datos si la transacción no tiene éxito).
Estas diferentes tecnologías y funciones relacionadas de soporte se denominan motores de almacenamiento (también llamados tipos de tablas) en MySQL. MySQL está configurado con varios motores de almacenamiento diferentes de forma predeterminada, que pueden preestablecerse o habilitarse en el servidor MySQL. Puede elegir motores de almacenamiento para servidores, bases de datos y tablas para brindarle la máxima flexibilidad al elegir cómo almacenar su información, cómo recuperarla y qué rendimiento y funcionalidad necesita con sus datos.
Esta flexibilidad a la hora de elegir cómo almacenar y recuperar sus datos es la razón principal por la que MySQL es tan popular. Otros sistemas de bases de datos (incluidas la mayoría de las opciones comerciales) admiten sólo un tipo de almacenamiento de datos. Desafortunadamente, el enfoque de "talla única" adoptado por otros tipos de soluciones de bases de datos significa que usted sacrifica algo de rendimiento o pasa horas o incluso días ajustando su base de datos. Usando MySQL, solo necesitamos modificar el motor de almacenamiento que usamos.
En este artículo no nos centraremos en los aspectos técnicos de los diferentes motores de almacenamiento (aunque inevitablemente veremos algunos aspectos de estos factores, nos centraremos en los diferentes motores que son los más adecuados); para qué necesidades y cómo habilitar diferentes motores de almacenamiento. Para lograr este objetivo, debemos comprender algunas cuestiones básicas antes de introducir los detalles de cada motor de almacenamiento.
Cómo determinar qué motores de almacenamiento están disponibles
Puede utilizar el comando display Engine en MySQL (suponiendo que sea el servidor MySQL 4.1.2 o superior) para obtener una lista de motores disponibles. .
mysql> mostrar motores;
+------------+---------+------- ---------------------------------------+
| Motor | Soporte | Comentar |
+------------+--------+--------- -------------------------------------------------- +
| MyISAM | DEFAULT | Motor predeterminado a partir de MySQL 3.23 con gran rendimiento |
| Alias para MEMORIA | SÍ | Basado en hash, almacenado en memoria, útil para tablas temporales |
| MERGE | Colección de tablas MyISAM idénticas |
| Alias |
| ISAM | NO | Motor de almacenamiento obsoleto, ahora reemplazado por MyISAM |
| MRG_ISAM | | InnoDB | SÍ | Soporta transacciones, bloqueo a nivel de fila y claves externas |
| INNOBASE | Alias para INNODB |
| bloqueo a nivel de página |
| BERKELEYDB | NO | Alias para BDB |
| NDBCLUSTER |
| NDB | NO | Alias para NDBCLUSTER | p>
| EJEMPLO | NO | Ejemplo de motor de almacenamiento |
|
| CSV | NO | Motor de almacenamiento CSV |
+----------------+---------+--- -------------------- ------------------------------ --+
16 filas en conjunto (0,01 segundos) en esta tabla Muestra la lista completa de motores de bases de datos disponibles y si son compatibles con el servidor de bases de datos actual.
Para versiones anteriores a MySQL 4.1.2, puedes usar mysql> mostrar variables como "have_%" (mostrar variables como "have_%"):
mysql> mostrar variables como " have_%";
+------------------+----------+
| Nombre_variable | Valor |p>
+------------------+----------+
| have_bdb |
| have_crypt | SÍ |
| tener_symlink | SÍ
| tener_openssl | -------------+----------+
8 filas en conjunto (0,01 segundos)
Puedes establecer los motores disponibles en el software de instalación de MySQL modificando las opciones en el script de instalación. Si está utilizando una distribución binaria MySQL preempaquetada, los motores comúnmente utilizados se incluyen con el software. Sin embargo, cabe señalar que si desea utilizar algunos motores poco comunes, especialmente motores CSV, RCHIVE (archivo) y BLACKHOLE (agujero negro), debe recompilar manualmente el código fuente de MySQL.
Usar un motor de almacenamiento específico
Puedes especificar un motor de almacenamiento para usarlo de muchas maneras. La forma más sencilla es que, si prefiere un motor de almacenamiento que satisfaga la mayoría de las necesidades de su base de datos, puede establecer un tipo de motor predeterminado en el archivo de configuración de MySQL (usando la opción Storage_engine) o en la línea de comando al iniciar el servidor de la base de datos. Siga con el Opción --default-storage-engine o --default-table-type.
Una forma más flexible es especificar el motor de almacenamiento utilizado cuando el cliente MySQL se lanza con el servidor MySQL. La forma más directa es especificar el tipo de motor de almacenamiento al crear la tabla, de la siguiente manera:
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
You También puede cambiar el motor de almacenamiento utilizado por una tabla existente con la siguiente declaración:
ALTER TABLE mytable ENGINE = MyISAM
Sin embargo, debe cambiar el tipo de tabla de esta manera. mucho cuidado, porque realizar cambios en un tipo que no admite los mismos índices, tipos de campos o tamaños de tablas puede provocar la pérdida de datos. Si especifica un motor de almacenamiento que no existe en su base de datos actual, se creará una tabla de tipo MyISAM (predeterminada).
Diferencias entre motores de almacenamiento
Para tomar una decisión sobre qué motor de almacenamiento elegir, primero debemos considerar las diferentes funciones principales que proporciona cada motor de almacenamiento. Esta característica nos permite distinguir entre diferentes motores de almacenamiento. Generalmente dividimos estas funciones principales en cuatro categorías: campos y tipos de datos admitidos, tipos de bloqueo, indexación y procesamiento. Algunos motores tienen características únicas que pueden impulsar sus decisiones, y analizaremos más de cerca estas cuestiones específicas en un momento.
Campos y tipos de datos
Aunque todos estos motores admiten tipos de datos comunes, como enteros, tipos reales y tipos de caracteres, no todos los motores admiten otros tipos de campos, especialmente BLOG (binario). objeto grande) o tipo de texto TEXTO. Es posible que otros motores solo admitan anchos de caracteres y tamaños de datos limitados.
Estas limitaciones pueden afectar directamente a los datos que puedes almacenar, pero también pueden tener un impacto indirecto en los tipos de búsquedas que realizas o en los índices que creas sobre esa información. Estas diferencias pueden afectar el rendimiento y la funcionalidad de su aplicación porque debe tomar decisiones sobre las capacidades del motor de almacenamiento que necesita en función del tipo de datos que desea almacenar.
Bloqueos
La función de bloqueo en el motor de base de datos determina cómo se administra el acceso y las actualizaciones de la información. Cuando un objeto en la base de datos está bloqueado para la actualización de información, otros procesos no pueden modificar los datos (y en algunos casos no pueden leer estos datos) hasta que se complete la actualización.
Los bloqueos no solo afectan la cantidad de aplicaciones diferentes que actualizan información en la base de datos, sino que también afectan las consultas sobre esos datos. Esto se debe a que la consulta puede acceder a datos que se están modificando o actualizando. En general, este retraso es mínimo. La mayoría de los mecanismos de bloqueo están destinados principalmente a evitar que múltiples procesos actualicen los mismos datos. Dado que tanto la inserción como la actualización de información en los datos requieren bloqueo, puede imaginar que tener varias aplicaciones utilizando la misma base de datos puede tener un impacto significativo.
Diferentes motores de almacenamiento admiten el bloqueo en diferentes niveles de objetos, y estos niveles afectarán la información a la que se puede acceder simultáneamente. Se admiten tres niveles: bloqueo de mesa, bloqueo de bloque y bloqueo de fila. El más compatible es el bloqueo de tablas, que se proporciona en MyISAM. Bloquea toda la tabla mientras se actualizan los datos. Esto evita que muchas aplicaciones actualicen una tabla específica al mismo tiempo. Esto tiene un gran impacto en bases de datos multiusuario con muchas aplicaciones, porque retrasa el proceso de actualización.
El bloqueo a nivel de página utiliza el motor Berkeley DB y bloquea los datos según la página de información cargada (8 KB). Este bloqueo no supone un problema cuando las actualizaciones se realizan en muchos lugares de la base de datos. Sin embargo, dado que agregar algunas filas de información requiere bloquear los últimos 8 KB de la estructura de datos, causará problemas cuando sea necesario agregar una gran cantidad de filas, especialmente una gran cantidad de datos pequeños.
El bloqueo a nivel de fila proporciona la mejor funcionalidad de acceso paralelo. Solo se bloquea una fila de datos en una tabla. Esto significa que muchas aplicaciones pueden actualizar datos en diferentes filas de la misma tabla sin causar problemas de bloqueo. Sólo el motor de almacenamiento InnoDB admite el bloqueo a nivel de fila.
Indexación
La indexación puede mejorar significativamente el rendimiento al buscar y restaurar datos en la base de datos. Los diferentes motores de almacenamiento proporcionan diferentes tecnologías de indexación. Algunas técnicas pueden ser más adecuadas para el tipo de datos que almacena.
Algunos motores de almacenamiento no admiten índices en absoluto. La razón puede ser que utilizan índices de tablas básicos (como el motor MERGE) o porque el método de almacenamiento de datos no permite índices (como FEDERADO o. motor BLACKHOLE).
Procesamiento de transacciones
La función de procesamiento de transacciones proporciona confiabilidad durante las actualizaciones e inserciones de información en tablas. Esta confiabilidad se logra al permitirle actualizar los datos en una tabla, pero solo aceptar los cambios en la tabla después de que se hayan completado por completo todas las operaciones relevantes de la aplicación aplicada. Por ejemplo, en el procesamiento contable, cada proceso de asiento contable incluirá cambios en los datos de la cuenta de débito y de la cuenta de crédito. Debe utilizar la función de procesamiento de transacciones para garantizar que los cambios de datos en la cuenta de débito y la cuenta de crédito se completen correctamente antes de aceptar el. modificaciones. Si alguna operación falla, puedes cancelar la transacción y los cambios ya no existirán. Si la transacción se completa, podremos confirmar la operación permitiendo la modificación.