Este documento forma parte de una serie que proporciona información y directrices clave relacionadas con la planificación y la realización de migraciones de bases de datos Oracle® 11g/12c a instancias de segunda generación de Cloud SQL para MySQL versión 5.7. La serie incluye las siguientes partes:
- Migrar usuarios de Oracle a Cloud SQL para MySQL: terminología y funciones (este documento)
- Migrar usuarios de Oracle a Cloud SQL para MySQL: tipos de datos, usuarios y tablas
- Migrar usuarios de Oracle a Cloud SQL para MySQL: consultas, procedimientos almacenados, funciones y activadores
- Migrar usuarios de Oracle a Cloud SQL para MySQL: seguridad, operaciones, monitorización y registro
Terminología
En esta sección se detallan las similitudes y diferencias en la terminología de las bases de datos entre Oracle y Cloud SQL para MySQL. Revisa y compara los aspectos principales de cada una de las plataformas de bases de datos. La comparación distingue entre las versiones 11g y 12c de Oracle debido a las diferencias arquitectónicas (por ejemplo, Oracle 12c introduce la función de multitenancy). La versión de Cloud SQL para MySQL a la que se hace referencia aquí es la 5.7.x.
Diferencias en la terminología entre Oracle 11g y Cloud SQL para MySQL
Oracle 11g | Descripción | Cloud SQL para MySQL | Diferencias principales |
---|---|---|---|
Instancia | Una sola instancia de Oracle 11g solo puede contener una base de datos. | Instancia | Una instancia de MySQL puede contener varias bases de datos. |
Base de datos | Una base de datos se considera una sola instancia (el nombre de la base de datos es idéntico al nombre de la instancia). | Base de datos | Varias bases de datos o una sola sirven a varias aplicaciones. |
Esquema | El esquema y los usuarios son idénticos porque ambos se consideran propietarios de objetos de la base de datos (se puede crear un usuario sin especificar o asignar un esquema). | Esquema | Un esquema se denomina base de datos, mientras que los objetos de base de datos se crean en un esquema o base de datos concreto. |
Usuario | Es idéntico al esquema, ya que ambos son propietarios de objetos de base de datos. Por ejemplo, instancia → base de datos → esquemas/usuarios → objetos de base de datos. | Usuario | Un usuario de la base de datos con permisos específicos para conectar o modificar objetos de la base de datos en esquemas o bases de datos concretos. Por ejemplo, instancia → bases de datos o esquemas → objetos de la base de datos. |
Role | Conjunto definido de permisos de base de datos que se pueden encadenar como un grupo y que se pueden asignar a usuarios de la base de datos. | Privilegios de MySQL | MySQL 5.7 no admite la gestión de roles. Los permisos se pueden configurar mediante la cláusula GRANT para que los usuarios tengan privilegios en objetos de la base de datos a diferentes niveles (LECTURA/ESCRITURA, etc.). |
Usuarios de administrador o del sistema | Usuarios administradores de Oracle con el nivel de acceso más alto:SYS SYSTEM |
Superusuarios | Una vez implementado, Cloud SQL para MySQL tiene el root@'%'
usuario (puede conectarse desde cualquier host) y un usuario adicional llamado
mysql.sys , que solo puede conectarse desde localhost. |
Diccionario o metadatos | Oracle usa las siguientes tablas de metadatos:USER_TableName ALL_TableName DBA_TableName |
Diccionario o metadatos | MySQL usa varias bases de datos o esquemas para el diccionario o los metadatos:MYSQL INFORMATION_SCHEMA PERFORMANCE_SCHEMA SYS |
Vistas dinámicas del sistema | Vistas dinámicas de Oracle:V$ViewName |
Vistas dinámicas del sistema | Las vistas dinámicas de MySQL se pueden encontrar en varias de las bases de datos del sistema:INFORMATION_SCHEMA PERFORMANCE_SCHEMA SYS |
Espacio de tabla | Las estructuras de almacenamiento lógicas principales de las bases de datos de Oracle. Cada tablespace puede contener uno o varios archivos de datos. | Espacio de tabla | Al igual que Oracle, un espacio de tablas de MySQL es una unidad lógica, pero solo representa una tabla, a diferencia del espacio de tablas de Oracle, que puede tener varios archivos de datos (contiene datos de varias tablas). MySQL permite crear un nuevo espacio de tabla con un archivo de datos asignado y, a continuación, crear una tabla asociada al espacio de tabla recién creado. Ten en cuenta que los ajustes de configuración del espacio de tabla, como el tamaño y los límites, se definen mediante parámetros de la base de datos y no durante la creación del espacio de tabla. |
Archivos de datos | Los elementos físicos de una base de datos de Oracle que contienen los datos y se definen en un espacio de tabla específico. Un archivo de datos se define por el tamaño inicial y el tamaño máximo, y puede contener datos de varias tablas. Los archivos de datos de Oracle usan el sufijo .dbf (no es obligatorio). |
Archivos de datos | Cloud SQL para MySQL usa el parámetro innodb_file_per_table
con el valor "ON " (predeterminado). Esta configuración
genera un archivo de datos nuevo para cada tabla y un tablespace dedicado.Los archivos de datos de MySQL usan archivos .ibd (datos) y .frm (metadatos).
|
Tablespace del sistema | Contiene las tablas del diccionario de datos y los objetos de vistas de toda la base de datos de Oracle. | Tablespace del sistema | Igual que Oracle, contiene las tablas de diccionario o metadatos. Se almacena en el espacio de tabla innodb_system adjunto al archivo de datos ibdata1 . |
Tablespace temporal | Contiene objetos de esquema válidos durante la duración de una sesión. Además, admite operaciones que no caben en la memoria del servidor. | Tablespace temporal | El propósito es idéntico al de Oracle, almacenado en el espacio de tabla de MySQL
innodb_temporary adjunto al ibtmp1
archivo de datos. |
Deshacer tablespace |
Un tipo especial de tablespace permanente del sistema que usa Oracle para gestionar las operaciones de rollback cuando la base de datos se ejecuta en el modo de gestión automática de deshacer (predeterminado). | Espacio de tabla de deshacer | Al igual que Oracle, el espacio de tabla de deshacer de MySQL contiene registros de deshacer para las reversiones. De forma predeterminada, esta opción está definida como OFF y se menciona como obsoleta para futuras versiones de MySQL. |
ASM | Oracle Automatic Storage Management es un sistema de archivos de base de datos integrado y de alto rendimiento, así como un gestor de discos que se ejecutan automáticamente en una base de datos de Oracle configurada con ASM. | No se admite | MySQL usa el término "motores de almacenamiento" para describir las diferentes implementaciones de gestión de datos, pero no admite Oracle ASM. Cloud SQL para MySQL admite muchas funciones que proporcionan automatización del almacenamiento, como el aumento automático del almacenamiento, el rendimiento y la escalabilidad. |
Tablas o vistas | Objetos de base de datos fundamentales creados por el usuario. | Tablas o vistas | Idéntico a Oracle. |
Vistas materializadas | Se definen con instrucciones SQL específicas y se pueden actualizar manualmente o automáticamente en función de configuraciones concretas. | No admitido por MySQL | Como solución alternativa, se pueden usar activadores o vistas en lugar de vistas materializadas de Oracle. |
Secuencia | Generador de valores únicos de Oracle. | Incremento automático | MySQL no admite secuencias de Oracle. Utiliza AUTO_INCREMENT como solución alternativa a la función de generación automática de secuencias. |
Sinónimo | Objetos de base de datos de Oracle que sirven como identificadores alternativos de otros objetos de base de datos. | No se admite | MySQL no admite sinónimos de Oracle. Como solución alternativa, se pueden usar vistas al configurar los permisos adecuados. |
Particiones | Oracle ofrece muchas soluciones de partición para dividir tablas grandes en partes gestionadas más pequeñas. | Particiones | MySQL tiene una compatibilidad con particiones más limitada para mejorar el rendimiento, al tiempo que conserva las operaciones de gestión y mantenimiento de datos, como las particiones de Oracle. |
Base de datos Flashback | Función propia de Oracle que se puede usar para inicializar una base de datos de Oracle en un momento definido anteriormente, lo que te permite consultar o restaurar datos que se hayan modificado o dañado por error. | No se admite | Como solución alternativa, puedes usar las copias de seguridad de Cloud SQL y la recuperación a un momento dado para restaurar una base de datos a un estado anterior (por ejemplo, restaurar una base de datos antes de eliminar una tabla). |
sqlplus | Interfaz de línea de comandos de Oracle que te permite consultar y gestionar la instancia de la base de datos. | mysql | Interfaz de línea de comandos equivalente a MySQL para consultar y gestionar. Se puede conectar desde cualquier cliente con los permisos adecuados a Cloud SQL. |
PL/SQL | Lenguaje procedimental ampliado de Oracle a ANSI SQL. | MySQL | MySQL tiene su propio lenguaje de procedimiento ampliado con una sintaxis y una implementación diferentes, y no tiene ningún nombre adicional para este lenguaje ampliado. |
Paquete y cuerpo del paquete | Funcionalidad específica de Oracle para agrupar procedimientos y funciones almacenados en la misma referencia lógica. | No se admite | MySQL admite procedimientos y funciones almacenados como objetos únicos con asignación de grupos. |
Procedimientos y funciones almacenados | Usa PL/SQL para implementar la funcionalidad del código. | Procedimientos almacenados y funciones | MySQL admite la creación de procedimientos y funciones almacenados con su implementación de lenguaje de procedimiento propietario. |
Activador | Objeto de Oracle que se usa para controlar la implementación de DML en las tablas. | Activador | Idéntico a Oracle. |
PFILE/SPFILE | Los parámetros de nivel de instancia y de base de datos de Oracle se conservan en un archivo binario conocido como SPFILE (en versiones anteriores, el archivo se llamaba PFILE ), que se puede usar como archivo de texto para definir parámetros manualmente. |
Flags de bases de datos de Cloud SQL para MySQL | Puedes definir o modificar los parámetros de Cloud SQL para MySQL mediante la utilidad marcas de bases de datos. No puedes cambiar los parámetros de la base de datos en Cloud SQL para MySQL mediante la interfaz de línea de comandos del cliente de MySQL (por ejemplo, mysql>
SET GLOBAL ... ). Solo puedes cambiar estos parámetros mediante la utilidad de marcas de bases de datos. |
SGA/PGA/AMM | Parámetros de memoria de Oracle que controlan la asignación de memoria a la instancia de la base de datos. |
INNODB_BUFFER_POOL_SIZE
|
MySQL tiene sus propios parámetros de memoria. Un parámetro equivalente podría ser
INNODB_BUFFER_POOL_SIZE . En Cloud SQL para MySQL, este parámetro está predefinido por el tipo de instancia elegido y el valor cambia en consecuencia. |
Caché de resultados | Reduce las operaciones de E/S de SQL recuperando filas de la caché de búfer, que se puede gestionar mediante parámetros de base de datos y sugerencias a nivel de sesión. | Caché de consultas | Tiene el mismo propósito fundamental que la caché de resultados de Oracle y se puede gestionar a nivel de base de datos y de sesión. |
Pistas de bases de datos | Impacto controlado en las instrucciones SQL que influyen en el comportamiento del optimizador para conseguir un mejor rendimiento. Oracle tiene más de 50 sugerencias de bases de datos diferentes. | Pistas de bases de datos | MySQL admite un conjunto limitado de sugerencias de bases de datos en comparación con Oracle (sugerencias del optimizador y sugerencias de índices). Ten en cuenta que MySQL usa diferentes sugerencias, sintaxis y nombres de bases de datos. |
RMAN | Utilidad Recovery Manager de Oracle. Se usa para crear copias de seguridad de bases de datos con funciones ampliadas para admitir varios escenarios de recuperación tras desastres y más (clonación, etc.). | Copia de seguridad de Cloud SQL para MySQL | Cloud SQL para MySQL ofrece dos métodos para aplicar copias de seguridad completas: copias de seguridad bajo demanda y automáticas. |
Data Pump (EXPDP/IMPDP) | Utilidad de generación de volcado de Oracle que se puede usar para muchas funciones, como la exportación o importación, la copia de seguridad de bases de datos (a nivel de esquema u objeto), los metadatos de esquemas, la generación de archivos SQL de esquemas y más. | mysqldump/mysqlimport |
Utilidad de volcado (exportación) de MySQL que se puede conectar como cliente (de forma remota) y generar un archivo de volcado (SQL). Más adelante, puedes comprimir el archivo de volcado y moverlo a Cloud Storage. La utilidad mysqldump solo se usa en el paso de exportación. |
SQL*Loader | Herramienta que permite subir datos de archivos externos, como archivos de texto o CSV, entre otros. | mysqlimport/ |
La utilidad mysqlimport permite cargar archivos de texto o CSV (Oracle admite otros formatos de archivo) en una tabla de base de datos con una estructura correspondiente. |
Data Guard | Solución de recuperación ante desastres de Oracle que usa una instancia de espera, lo que permite a los usuarios realizar operaciones `READ` desde la instancia de espera. | Alta disponibilidad y replicación de Cloud SQL para MySQL | Para conseguir la recuperación ante desastres o la alta disponibilidad, Cloud SQL para MySQL ofrece la arquitectura de réplica de conmutación por error y, para las operaciones de solo lectura (separación de lectura y escritura), la réplica de lectura. |
Active Data Guard/Golden Gate | Las principales soluciones de replicación de Oracle, que pueden servir para varios propósitos, como la instancia de espera (recuperación ante desastres), la instancia de solo lectura, la replicación bidireccional (multifuente) y el almacenamiento de datos, entre otros. | Réplica de lectura de Cloud SQL para MySQL | Réplica de lectura de Cloud SQL para MySQL para implementar la creación de clústeres con separación de lectura y escritura. Actualmente, no se admite la configuración de varias fuentes, como la replicación bidireccional de Golden Gate o la replicación heterogénea. |
RAC | Oracle Real Application Cluster. Solución de clustering propiedad de Oracle para proporcionar alta disponibilidad mediante el despliegue de varias instancias de base de datos con una sola unidad de almacenamiento. | No se admite | La arquitectura de varias fuentes aún no se admite en Google Cloud Cloud SQL. Para conseguir una arquitectura de clúster con separación de lectura y escritura, así como alta disponibilidad, usa la alta disponibilidad y la réplica de lectura de Cloud SQL. |
Control de la red o de la nube (OEM) | Software de Oracle para gestionar y monitorizar bases de datos y otros servicios relacionados en formato de aplicación web. Esta herramienta es útil para analizar bases de datos en tiempo real y comprender cargas de trabajo elevadas. | Consola de Cloud SQL para MySQL y Cloud Monitoring | Usa Cloud SQL para MySQL para la monitorización, incluidos gráficos detallados basados en el tiempo y los recursos. También puedes usar Cloud Monitoring para conservar métricas de monitorización específicas de MySQL y analizar registros para disfrutar de funciones de monitorización avanzadas. |
Registros de rehacer | Registros de transacciones de Oracle que constan de dos o más archivos definidos preasignados que almacenan todas las modificaciones de datos a medida que se producen. El objetivo del registro de rehacer es proteger la base de datos en caso de que falle una instancia. | Registros de rehacer | MySQL también tiene archivos de registros de rehacer, que se usan durante la recuperación tras un fallo para corregir los datos escritos por el mecanismo de registros de rehacer de transacciones incompletas. |
Archivar registros | Los registros de archivo admiten operaciones de copia de seguridad y replicación, entre otras. Oracle escribe en los registros de archivo (si están habilitados) después de cada operación de cambio de registro de rehacer. | binlogs | Implementación de MySQL de la conservación de registros de transacciones. Se usa principalmente para la replicación (está habilitado de forma predeterminada en Cloud SQL). |
Archivo de control | El archivo de control de Oracle contiene información sobre la base de datos, como los archivos de datos, los nombres y las ubicaciones de los registros de rehacer, el número de secuencia de registro actual e información sobre el punto de control de la instancia. | MySQL | La arquitectura de MySQL no incluye un archivo de control similar a la implementación de Oracle. Esto se controla mediante los parámetros de MySQL y con el comando SHOW MASTER STATUS para ver la posición actual del registro binario. |
SCN | El SCN (System Change Number) de Oracle es el método principal para mantener la coherencia de los datos por parte de todos los componentes de la base de datos de Oracle para cumplir el modelo ACID de las transacciones. | Número de secuencia de registro | La implementación de MySQL para la coherencia de la base de datos usa el LSN (número de secuencia de registro). |
AWR | Oracle AWR (Automatic Workload Repository) es un informe detallado que proporciona información sobre el rendimiento de la instancia de la base de datos de Oracle y se considera una herramienta de administrador de bases de datos para el diagnóstico del rendimiento. | performance_schema |
MySQL no tiene un informe equivalente a Oracle AWR, pero recoge datos de rendimiento recogidos por performance_schema . Otra solución sería usar los paneles de rendimiento de Workbench de MySQL. |
DBMS_SCHEDULER |
Utilidad de Oracle que se usa para definir y programar operaciones predefinidas. | EVENT_SCHEDULER |
Función de programador interno de la base de datos MySQL. De forma predeterminada, esta función está definida en OFF . |
Cifrado de datos transparente | Cifra los datos almacenados en discos para protegerlos en reposo. | Estándar de cifrado avanzado de Cloud SQL | Cloud SQL para MySQL usa el estándar de cifrado avanzado (AES-256) de 256 bits para proteger los datos en reposo, así como los datos en tránsito. |
Compresión avanzada | Para mejorar la huella de almacenamiento de la base de datos, reducir los costes de almacenamiento y mejorar el rendimiento de la base de datos, Oracle ofrece funciones de compresión avanzada de datos (tablas o índices). | Compresión de tablas InnoDB | MySQL ofrece compresión de tablas mediante la creación de una tabla con el ROW_FORMAT parámetro definido en COMPRESSED . Consulta más información sobre la compresión de índices. |
SQL Developer | GUI de SQL gratuita de Oracle para gestionar y ejecutar instrucciones SQL y PL/SQL (también se puede usar con MySQL). | MySQL Workbench | GUI de SQL gratuita para MySQL que permite gestionar y ejecutar instrucciones de código SQL y MySQL. |
Registro de alertas | Registro principal de Oracle para operaciones y errores generales de la base de datos. | Registro de errores de MySQL | Usa Logs Viewer de Cloud Logging para monitorizar los registros de errores de MySQL. |
DUAL tabla |
Tabla especial de Oracle que se usa principalmente para obtener valores de pseudocolumnas, como SYSDATE o USER . |
Tabla DUAL | MySQL permite que se especifique DUAL como una tabla en instrucciones SQL que no dependan de datos de ninguna tabla. |
Tabla externa | Oracle permite a los usuarios crear tablas externas con los datos de origen en archivos fuera de la base de datos. | No se admite. | No hay ningún equivalente directo. |
Listener | Proceso de red de Oracle encargado de escuchar las conexiones de bases de datos entrantes. | Redes autorizadas de Cloud SQL | MySQL acepta conexiones de fuentes remotas una vez que se permiten en la página de configuración Redes autorizadas de Cloud SQL. |
TNSNAMES | Archivo de configuración de red de Oracle que define las direcciones de la base de datos para establecer conexiones mediante alias de conexión. | No existe | MySQL acepta conexiones externas mediante el nombre de conexión de la instancia de Cloud SQL o la dirección IP privada/pública. Proxy de Cloud SQL es un método de acceso seguro adicional para conectarse a Cloud SQL para MySQL (instancias de segunda generación) sin tener que permitir direcciones IP específicas ni configurar SSL. |
Puerto predeterminado de la instancia | 1521 | Puerto predeterminado de la instancia | 3306 |
Enlace de base de datos | Objetos de esquema de Oracle que se pueden usar para interactuar con objetos de bases de datos locales o remotos. | No se admite | Como solución alternativa, usa código de aplicación para conectarte y recuperar datos de una base de datos remota. |
Diferencias en la terminología entre Oracle 12c y Cloud SQL para MySQL
Oracle 12c | Descripción | Cloud SQL para MySQL | Diferencias principales |
---|---|---|---|
Instancia | La función multi-tenant introducida en la instancia de Oracle 12c, que puede contener varias bases de datos como una base de datos conectable (PDB), a diferencia de Oracle 11g, donde una instancia de Oracle solo puede obtener una base de datos. | Instancia | Cloud SQL para MySQL puede contener varias bases de datos con diferentes nombres que ofrecen servicio a varias aplicaciones. |
CDB | Una base de datos de contenedor (CDB) multiinquilino puede admitir una o varias PDBs, mientras que se pueden crear objetos globales de CDB (que afectan a todas las PDBs), como los roles. | Instancia de MySQL | La instancia de MySQL es comparable a la CDB de Oracle. Ambos proporcionan una capa de sistema para los PDBs. |
PDB | Las PDBs (bases de datos conectables) se pueden usar para aislar servicios y aplicaciones entre sí, así como para crear colecciones portátiles de esquemas. | Bases de datos o esquemas de MySQL | Una base de datos MySQL puede dar servicio a varias aplicaciones y servicios, así como a muchos usuarios de bases de datos. |
Secuencias de sesión | A partir de Oracle 12c, las secuencias se pueden crear a nivel de sesión (devuelven valores únicos solo dentro de una sesión) o a nivel global (por ejemplo, al usar tablas temporales). | Auto increment |
MySQL no admite secuencias, pero los usuarios pueden usar la propiedad de columna AUTO_INCREMENT como solución alternativa. |
Columnas de identidad | El tipo IDENTITY de Oracle 12c genera una secuencia y la asocia a una columna de tabla sin necesidad de crear manualmente un objeto de secuencia independiente. |
Incremento automático | Use la propiedad de columna AUTO_INCREMENT para simular la misma función que la columna de identidad de Oracle 12c (una solución alternativa a la función de generación automática de secuencias). |
Fragmentación | El particionamiento de Oracle es una solución en la que una base de datos de Oracle se divide en varias bases de datos más pequeñas (particiones) para permitir la escalabilidad, la disponibilidad y la distribución geográfica en entornos OLTP. | No disponible (como función) | MySQL no tiene una función de partición equivalente. La fragmentación se puede implementar con MySQL (como plataforma de datos) con una capa de aplicación compatible. |
Base de datos en memoria | Oracle ofrece un conjunto de funciones que pueden mejorar el rendimiento de las bases de datos para OLTP, así como para cargas de trabajo mixtas. | No se admite | MySQL no tiene una función equivalente. Puedes usar Memorystore como alternativa. |
Redacción | Como parte de las funciones de seguridad avanzadas de Oracle, la ocultación puede realizar un enmascaramiento de columnas para evitar que los usuarios y las aplicaciones muestren datos sensibles. | No se admite | MySQL no tiene una función equivalente. |
Funcionalidad
Aunque las bases de datos de Oracle 11g/12c y Cloud SQL para MySQL funcionan con arquitecturas diferentes (infraestructura y lenguajes procedimentales ampliados), comparten los mismos aspectos fundamentales de una base de datos relacional. Admiten objetos de base de datos, cargas de trabajo de simultaneidad multiusuario y transacciones (compatibilidad con ACID). También gestionan las disputas de bloqueo que admiten varios niveles de aislamiento (en función de las necesidades empresariales) y satisfacen los requisitos de las aplicaciones en curso como almacén de datos relacional para las operaciones de procesamiento de transacciones online (OLTP) y de procesamiento analítico online (OLAP).
En la siguiente sección se ofrece una descripción general de algunas de las principales diferencias funcionales entre Oracle y Cloud SQL para MySQL. En algunos casos, cuando es necesario, la sección incluye comparaciones técnicas detalladas.
Crear y ver bases de datos
Oracle 11g/12c | Cloud SQL para MySQL 5.7 |
---|---|
Normalmente, las bases de datos se crean y se consultan con la utilidad Database Creation Assistant (DBCA) de Oracle. En las bases de datos o instancias creadas manualmente, debe especificar parámetros adicionales:SQL> CREATE DATABASE ORADB USER SYS IDENTIFIED BY password USER SYSTEM IDENTIFIED BY password EXTENT MANAGEMENT LOCAL DEFAULT TEMPORARY TABLESPACE temp UNDO TABLESPACE undotbs1 DEFAULT TABLESPACE users; |
Usa una instrucción con el formato CREATE DATABASE Name; , como en este ejemplo:
mysql> CREATE DATABASE MYSQLDB; |
Oracle 12c | Cloud SQL para MySQL 5.7 |
En Oracle 12c, puedes crear PDBs a partir de la semilla, ya sea a partir de una plantilla de base de datos de contenedor (CDB) o clonando una PDB de una PDB existente. Utiliza varios parámetros:SQL> CREATE PLUGGABLE DATABASE PDB ADMIN USER usr IDENTIFIED BY passwd ROLES = (dba) DEFAULT TABLESPACE sales DATAFILE '/disk1/ora/dbs/db/db.dbf' SIZE 250M AUTOEXTEND ON FILE_NAME_CONVERT = ('/disk1/oracle/dbs/pdbseed/', '/disk1/oracle/dbs/salespdb/') STORAGE (MAXSIZE 2G) PATH_PREFIX = '/disk1/oracle/dbs/salespdb/'; |
Usa una instrucción con el formato CREATE DATABASE Name; , como en este ejemplo:mysql> CREATE DATABASE MYSQLDB; |
Mostrar todas las PDBs:SQL> SHOW is PDBS; |
Mostrar todas las bases de datos:mysql> SHOW DATABASES; |
Conectarse a otra PDB:SQL> ALTER SESSION SET CONTAINER=pdb; |
Conectarse a otra base de datos:mysql> use databaseName; mysql> \u databaseName; |
Abrir o cerrar un archivo PDB específico (abrir o abrir solo lectura):SQL> ALTER PLUGGABLE DATABASE pdb CLOSE; |
No se admite en una sola base de datos. Todas las bases de datos están en la misma instancia de Cloud SQL para MySQL, por lo que todas están activas o inactivas. |
Gestionar una base de datos a través de la consola de Cloud SQL
En la Google Cloud consola, ve a Storage > SQL > Instance > Databases > View/Create.
Bases de datos y esquemas del sistema
Las instancias de la base de datos Oracle obtienen determinados esquemas del sistema (por ejemplo,
SYS/SYSTEM
) con el rol de propietario de los objetos de metadatos de la base de datos.
Por el contrario, MySQL contiene varias bases de datos del sistema (a diferencia de los esquemas de Oracle), que sirven para la capa de metadatos (ten en cuenta que los nombres de las bases de datos distinguen entre mayúsculas y minúsculas):
-
La base de datos del sistema
mysql
contiene tablas que almacenan la información que necesita el servidor MySQL mientras se ejecuta, como la siguiente:- Tablas de privilegios del sistema
- Tablas de información de objetos
- Registrar tablas del sistema
- Tablas del sistema de replicación
- Tablas de sistema de Optimizer
- Tablas de sistema de zona horaria
-
INFORMATION_SCHEMA
actúa como diccionario de datos de la base de datos principal y como catálogo del sistema. Proporciona acceso a los metadatos de la base de datos, que es información interna de la base de datos sobre el servidor MySQL, como el nombre de una base de datos o una tabla, el tipo de datos de la columna y los privilegios de acceso. -
Una base de datos del sistema que recoge información estadística sobre la instancia de MySQL. La base de datos del sistema
performance_schema
contiene métricas para la monitorización de la ejecución del servidor a un nivel muy granular. El esquema proporciona una inspección interna de la ejecución del servidor en tiempo de ejecución y puede servir como fuente principal para analizar los problemas de rendimiento de la base de datos.La opción
performance_schema
no está habilitada de forma predeterminada en Cloud SQL para MySQL. Para habilitar el esquema, usa la herramienta de línea de comandosgcloud
:gcloud sql instances patch INSTANCE_NAME --database-flags performance_schema=on
Para completar esta configuración, debes reiniciar la instancia. No puedes modificar el parámetro
--database-flags
mediante la página de marcas de bases de datos de Cloud SQL para MySQL en la consola de Google Cloud . -
El esquema
sys
existe desde la versión 5.5.7 de MySQL y contiene principalmente vistas de las tablas del sistemaperformance_schema
. Este esquema proporciona un conjunto de vistas más legible que resume los datos deperformance_schema
en un formato más fácil de entender. El esquemasys
también contiene varios procedimientos y funciones almacenados para realizar operaciones como la configuraciónperformance_schema
y la generación de informes de diagnóstico.El esquema
sys
solo muestra información cuando la opciónperformance_schema
está habilitada.
Ver metadatos y vistas dinámicas del sistema
En esta sección se ofrece una descripción general de algunas de las tablas de metadatos y vistas dinámicas del sistema más comunes que se usan en Oracle, así como de los objetos de base de datos correspondientes en Cloud SQL para MySQL versión 5.7.
Oracle proporciona cientos de tablas y vistas de metadatos del sistema, mientras que MySQL solo contiene varias docenas. En cada caso, puede haber más de un objeto de base de datos que cumpla un propósito específico.
Oracle ofrece varios niveles de objetos de metadatos, cada uno de los cuales requiere diferentes privilegios:
USER_TableName
: el usuario puede verla.ALL_TableName
: todos los usuarios pueden verla.DBA_TableName
: solo pueden verlo los usuarios con el privilegio DBA, comoSYS
ySYSTEM
.
En las vistas de rendimiento dinámicas, Oracle usa los prefijos V$
y GV$
. Para que un usuario de MySQL pueda ver tablas o vistas de metadatos del sistema, debe tener permisos específicos en los objetos del sistema. Para obtener más información sobre la seguridad, consulta la sección Seguridad.
Tipo de metadatos | Tabla o vista de Oracle | Tabla, vista o show de MySQL (comando de MySQL) |
---|---|---|
Sesiones abiertas | V$SESSION |
SHOW PROCESSLIST INFORMATION_SCHEMA.PROCESSLIST performance_schema.threads |
Ejecutar transacciones | V$TRANSACTION |
INFORMATION_SCHEMA.INNODB_TRX |
Objetos de base de datos | DBA_OBJECTS |
No es compatible. Consulta cada objeto por su tipo. |
Tablas | DBA_TABLES |
INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA.INNODB_SYS_TABLES |
Columnas de tabla | DBA_TAB_COLUMNS |
INFORMATION_SCHEMA.COLUMNS INFORMATION_SCHEMA.INNODB_SYS_COLUMNS |
Privilegios de tabla y columna | TABLE_PRIVILEGES DBA_COL_PRIVS ROLE_TAB_PRIVS |
INFORMATION_SCHEMA.COLUMN_PRIVILEGES |
Particiones | DBA_TAB_PARTITIONS DBA_TAB_SUBPARTITIONS |
INFORMATION_SCHEMA.PARTITIONS SHOW CREATE TABLE TableName SHOW TABLE STATUS LIKE 'TableName' |
Visualizaciones | DBA_VIEWS |
INFORMATION_SCHEMA.VIEWS |
Restricciones | DBA_CONSTRAINTS |
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS SHOW CREATE TABLE TableName |
Índices | DBA_INDEXES DBA_PART_INDEXES |
INFORMATION_SCHEMA.STATISTICS INFORMATION_SCHEMA.INNODB_SYS_INDEXES INFORMATION_SCHEMA.KEY_COLUMN_USAGE |
Vistas materializadas | DBA_MVIEWS |
No compatible |
Procedimientos almacenados | DBA_PROCEDURES |
INFORMATION_SCHEMA.ROUTINES |
Funciones almacenadas | DBA_PROCEDURES |
INFORMATION_SCHEMA.ROUTINES |
Activadores | DBA_TRIGGERS |
INFORMATION_SCHEMA.TRIGGERS |
Usuarios | DBA_USERS |
mysql.user |
Privilegios de usuario | DBA_SYS_PRIVS DBA_ROLE_PRIVS SESSION_PRIVS |
INFORMATION_SCHEMA.USER_PRIVILEGES |
Tareas/ Programador |
DBA_JOBS DBA_JOBS_RUNNING DBA_SCHEDULER_JOBS DBA_SCHEDULER_JOB_LOG |
INFORMATION_SCHEMA.EVENTS |
Espacios de tabla | DBA_TABLESPACES |
INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES |
Archivos de datos | DBA_DATA_FILES |
INFORMATION_SCHEMA.FILES INFORMATION_SCHEMA.INNODB_SYS_DATAFILES |
Sinónimos | DBA_SYNONYMS |
No compatible |
Secuencias | DBA_SEQUENCES |
No compatible |
Enlaces de bases de datos | DBA_DB_LINKS |
No compatible |
Estadísticas | DBA_TAB_STATISTICS DBA_TAB_COL_STATISTICS DBA_SQLTUNE_STATISTICS DBA_CPU_USAGE_STATISTICS |
INFORMATION_SCHEMA.STATISTICS INFORMATION_SCHEMA.KEY_COLUMN_USAGE SHOW INDEXES FROM TableName |
Cerraduras | DBA_LOCK DBA_DDL_LOCKS DBA_DML_LOCKS V$SESSION_BLOCKERS V$LOCKED_OBJECT |
INFORMATION_SCHEMA.INNODB_LOCKS INFORMATION_SCHEMA.INNODB_LOCK_WAITS INFORMATION_SCHEMA.INNODB_TRX performance_schema.metadata_locks performance_schema.rwlock_instances SHOW PROCESSLIST |
Parámetros de la base de datos | V$PARAMETER V$NLS_PARAMETERS SHOW PARAMETER Param |
performance_schema.global_variables performance_schema.session_variables INFORMATION_SCHEMA.CHARACTER_SETS SHOW VARIABLES LIKE '%variable%'; |
Segmentos | DBA_SEGMENTS |
No se admite la tabla de segmentos. Consulta cada objeto por su tipo. |
Roles | DBA_ROLES DBA_ROLE_PRIVS USER_ROLE_PRIVS |
Roles not supported use instead: information_schema.COLUMN_PRIVILEGES information_schema.SCHEMA_PRIVILEGES information_schema.TABLE_PRIVILEGES information_schema.USER_PRIVILEGES mysql.columns_priv mysql.procs_priv mysql.proxies_priv mysql.tables_priv |
Historial de sesiones | V$ACTIVE_SESSION_HISTORY DBA_HIST_* |
sys.statement_analysis performance_schema.events_stages_history performance_schema.events_stages_history_long performance_schema.events_statements_history performance_schema.events_statements_history_long performance_schema.events_transactions_history performance_schema.events_transactions_history_long performance_schema.events_waits_history performance_schema.events_waits_history_long |
Versión | V$VERSION |
sys.version SHOW VARIABLES LIKE '%version%'; |
Eventos de espera | V$WAITCLASSMETRIC V$WAITCLASSMETRIC_HISTORY V$WAITSTAT V$WAIT_CHAINS |
performance_schema.events_waits_current performance_schema.events_waits_history performance_schema.events_waits_history_long sys.innodb_lock_waits sys.io_global_by_wait_by_bytes sys.io_global_by_wait_by_latency sys.schema_table_lock_waits sys.wait_classes_global_by_avg_latency sys.wait_classes_global_by_latency sys.waits_by_host_by_latency sys.waits_by_user_by_latency sys.waits_global_by_latency |
Ajuste y análisis de SQL |
V$SQL V$SQLAREA V$SESS_IO V$SYSSTAT V$STATNAME V$OSSTAT V$ACTIVE_SESSION_HISTORY V$SESSION_WAIT V$SESSION_WAIT_CLASS V$SYSTEM_WAIT_CLASS V$LATCH V$SYS_OPTIMIZER_ENV V$SQL_PLAN V$SQL_PLAN_STATISTICS |
performance_schema.events_statements_current performance_schema.events_statements_history performance_schema.events_statements_history_long sys.statement_analysis sys.host_summary_by_statement_latency sys.host_summary_by_statement_type sys.statements_with_errors_or_warnings sys.statements_with_full_table_scans sys.statements_with_runtimes_in_95th_percentile sys.statements_with_sorting sys.statements_with_temp_tables sys.user_summary_by_statement_latency sys.user_summary_by_statement_type slow-query-log general-log SHOW STATUS LIKE '%StatusName%'; |
Ajuste de la memoria de la instancia |
V$SGA V$SGASTAT V$SGAINFO V$SGA_CURRENT_RESIZE_OPS V$SGA_RESIZE_OPS V$SGA_DYNAMIC_COMPONENTS V$SGA_DYNAMIC_FREE_MEMORY V$PGASTAT |
information_schema.INNODB_CMPMEM_RESET information_schema.INNODB_CMPMEM performance_schema.memory_summary_by_account_by_event_name performance_schema.memory_summary_by_host_by_event_name performance_schema.memory_summary_by_thread_by_event_name performance_schema.memory_summary_by_user_by_event_name performance_schema.memory_summary_global_by_event_name performance_schema.replication_group_member_stats performance_schema.replication_group_members sys.memory_by_host_by_current_bytes sys.memory_by_thread_by_current_bytes sys.memory_by_user_by_current_bytes sys.memory_global_by_current_bytes sys.memory_global_total |
Motores de almacenamiento de MySQL
A diferencia de muchos otros SGBDR (incluido Oracle), MySQL puede funcionar de forma polimórfica gracias a su sistema de almacenamiento conectable. La arquitectura del motor de almacenamiento conectable de MySQL permite a un administrador de bases de datos seleccionar un motor de almacenamiento especializado para una necesidad de aplicación concreta.
El componente de motor de almacenamiento conectable de MySQL en el servidor de bases de datos MySQL se encarga de realizar las operaciones de E/S de datos, incluido el almacenamiento de los datos en los discos o en los búferes de memoria. La arquitectura de motor de almacenamiento conectable proporciona un conjunto estándar de servicios de gestión y asistencia que son comunes en todos los motores de almacenamiento subyacentes.
A partir de la versión 5.5 de MySQL, el motor de almacenamiento predeterminado es InnoDB, que también gestiona las tablas temporales. Puedes configurar los motores de almacenamiento durante la creación CREATE
o la modificación ALTER
de una tabla, como en el siguiente ejemplo:
mysql> SHOW CREATE TABLE JOBS \G;
El resultado es el siguiente:
*************************** 1. row *************************** Table: JOBS Create Table: CREATE TABLE `JOBS` ( `JOB_ID` varchar(10) NOT NULL, `JOB_TITLE` varchar(35) NOT NULL, `MIN_SALARY` decimal(6,0) DEFAULT NULL, `MAX_SALARY` decimal(6,0) DEFAULT NULL, PRIMARY KEY (`JOB_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
Para obtener más información, consulta los diferentes motores de almacenamiento de MySQL.
Para ver la configuración del motor de almacenamiento, usa la siguiente consulta:
mysql> SHOW VARIABLES LIKE '%storage%';
El resultado debería ser similar al siguiente:
+----------------------------------+--------+ | Variable_name | Value | +----------------------------------+--------+ | default_storage_engine | InnoDB | | default_tmp_storage_engine | InnoDB | | disabled_storage_engines | | | enforce_storage_engine | Innodb | | internal_tmp_disk_storage_engine | InnoDB | +----------------------------------+--------+
Puedes ver todos los motores de almacenamiento integrados:
mysql> SHOW STORAGE ENGINES;
El resultado debería ser similar al siguiente:
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | CSV | YES | CSV storage engine | NO | NO | NO | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
Ten en cuenta que InnoDB es el motor de almacenamiento predeterminado y el único que admite transacciones (cumple los requisitos de ACID). Como InnoDB es el único motor de almacenamiento que se aproxima a la funcionalidad de Oracle, le recomendamos que lo utilice en todo momento. Cloud SQL para MySQL de segunda generación solo admite el motor de almacenamiento InnoDB.
Parámetros del sistema
Las bases de datos de Oracle y Cloud SQL para MySQL se pueden configurar específicamente para conseguir determinadas funciones que van más allá de la configuración predeterminada. Para modificar los parámetros de configuración en Oracle, se necesitan ciertos permisos de administración (principalmente, los permisos de usuario SYS/SYSTEM
).
A continuación, se muestra un ejemplo de cómo modificar la configuración de Oracle mediante la instrucción ALTER SYSTEM
. En este ejemplo, el usuario cambia el parámetro "maximum
attempts for failed logins" (máximo número de intentos de inicio de sesión fallidos) solo en el nivel de configuración spfile
(la modificación solo es válida después de reiniciar):
SQL> ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=2 SCOPE=spfile;
En el siguiente ejemplo, el usuario solicita ver el valor del parámetro de Oracle:
SQL> SHOW PARAMETER SEC_MAX_FAILED_LOGIN_ATTEMPTS;
El resultado debería ser similar al siguiente:
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sec_max_failed_login_attempts integer 2
La modificación de parámetros de Oracle funciona en tres ámbitos:
- SPFILE las modificaciones de los parámetros se escriben en el archivo
spfile
de Oracle y es necesario reiniciar la instancia para que el parámetro surta efecto. - MEMORY las modificaciones de los parámetros solo se aplican en la capa de memoria y no se permite ningún cambio de parámetro estático.
- BOTH las modificaciones de los parámetros se aplican tanto en el archivo de parámetros del servidor como en la memoria de la instancia, donde no se permite ningún cambio de parámetro estático.
Marcas de configuración de Cloud SQL para MySQL
Puedes modificar los parámetros del sistema de Cloud SQL para MySQL mediante las marcas de configuración en la Google Cloud consola, la CLI de gcloud o CURL. Consulta la lista completa de todos los parámetros que puedes modificar y que son compatibles con Cloud SQL para MySQL.
Los parámetros de MySQL se pueden dividir en varios ámbitos:
- Parámetros dinámicos: se pueden modificar durante el tiempo de ejecución.
- Parámetros estáticos: requieren reiniciar la instancia para que se apliquen.
- Parámetros globales: tendrán un efecto global en todas las sesiones actuales y futuras.
- Parámetros de sesión: se pueden modificar a nivel de sesión solo durante el tiempo de vida de la sesión actual, aislados de otras sesiones.
El parámetro de memoria de Cloud SQL para MySQL
innodb_buffer_pool_size
(uno de los parámetros cruciales que se deben tener en cuenta al planificar y dimensionar un entorno de MySQL) se determina en función del tipo de instancia y no se puede modificar mediante las marcas de configuración ni con ningún otro método. Por ejemplo:
- El tipo de instancia
db-n1-standard-1
tiene 1,4 GB de asignación de memoria. - El tipo de instancia
db-n1-highmem-8
tiene 38 GB de asignación de memoria.
Ejemplos de modificación de parámetros de Cloud SQL para MySQL
Consola
Usa la consola Google Cloud para habilitar el parámetro event_scheduler
.
Ve a la página Editar instancia de Cloud Storage.
En Flags (Marcas), haz clic en Add item (Añadir elemento) y busca
event_scheduler
, como se muestra en la siguiente captura de pantalla.
gcloud
Usa gcloud CLI para habilitar el parámetro
event_scheduler
:gcloud sql instances patch INSTANCE_NAME \ --database-flags event_scheduler=on
El resultado es el siguiente:
WARNING: This patch modifies database flag values, which may require your instance to be restarted. Check the list of supported flags - /sql/docs/mysql/flags - to see if your instance will be restarted when this patch is submitted. Do you want to continue (Y/n)?
Sesión de MySQL
Inhabilita el modo AUTOCOMMIT
a nivel de sesión. Esta modificación se mantiene en vigor durante la sesión actual y solo se aplica durante la duración de la sesión.
Mostrar variables como
autocommit
:mysql> SHOW VARIABLES LIKE '%autoc%';
Verás el siguiente resultado, donde
autocommit
esON
:+---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+
Inhabilitar
autocommit
:mysql> SET autocommit=off;
Mostrar variables como
autocommit
:mysql> SHOW VARIABLES LIKE '%autoc%';
Verás el siguiente resultado, donde
autocommit
esOFF
:+---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | OFF | +---------------+-------+
Transacciones y niveles de aislamiento
En esta sección se describen las principales diferencias entre Oracle y Cloud SQL para MySQL que son relevantes para las migraciones de transacciones y niveles de aislamiento.
Modo de confirmación
Oracle funciona de forma predeterminada en el modo sin confirmación automática, en el que cada transacción DML debe determinarse con instrucciones COMMIT/ROLLBACK
. Una de las diferencias fundamentales entre Oracle y MySQL es que MySQL funciona de forma predeterminada en el modo de confirmación automática y cada transacción DML se confirma automáticamente especificando explícitamente las instrucciones COMMIT/ROLLBACK
.
Para forzar que MySQL funcione en un modo que no sea de confirmación automática, hay varias opciones:
- Cuando gestione transacciones en el ámbito de los procedimientos almacenados, utilice la cláusula
START TRANSACTION
para introducir el mismo modo transaccional que Oracle. Usa la siguiente instrucción para definir el parámetro de sistema
autocommit
enOFF
a nivel de sesión y usa explícitamente las instruccionesCOMMIT/ROLLBACK
en las transacciones DML:mysql> SET autocommit=off;
Niveles de aislamiento
El estándar SQL de ANSI/ISO (SQL92) define cuatro niveles de aislamiento. Cada nivel proporciona un enfoque diferente para gestionar la ejecución simultánea de transacciones de bases de datos:
- Lectura de datos no confirmados: una transacción que se esté procesando puede ver los datos no confirmados de otra transacción. Si se realiza una reversión, todos los datos se restauran a su estado anterior.
- Lectura confirmada: una transacción solo ve los cambios de datos que se han confirmado. No se pueden realizar cambios no confirmados("lecturas sucias").
- Lectura repetible: una transacción puede ver los cambios realizados por otra transacción solo después de que ambas transacciones hayan emitido un
COMMIT
o se hayan revertido. - Serializable: el nivel de aislamiento más estricto o sólido. Este nivel bloquea todos los registros a los que se accede y bloquea el recurso para que no se puedan añadir registros a la tabla.
Los niveles de aislamiento de las transacciones gestionan la visibilidad de los datos modificados que ven otras transacciones en curso. Además, cuando varias transacciones simultáneas acceden a los mismos datos, el nivel de aislamiento de las transacciones seleccionado afecta a la forma en que interactúan las diferentes transacciones.
Oracle admite los siguientes niveles de aislamiento:
- Confirmación de lectura (predeterminado)
- Serializable
- Solo lectura (no forma parte del estándar SQL ANSI/ISO [SQL92])
MVCC (control de simultaneidad multiversión) de Oracle:
- Oracle usa el mecanismo MVCC para proporcionar coherencia de lectura automática en toda la base de datos y en todas las sesiones.
- Oracle se basa en el número de cambio del sistema (SCN) de la transacción actual para obtener una vista coherente de la base de datos. Por lo tanto, todas las consultas de la base de datos solo devuelven datos confirmados con respecto al SCN en el momento de la ejecución de la consulta.
- Los niveles de aislamiento se pueden cambiar a nivel de transacción y de sesión.
A continuación, se muestra un ejemplo de cómo definir niveles de aislamiento:
-- Transaction Level
SQL> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SQL> SET TRANSACTION READ ONLY;
-- Session Level
SQL> ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;
SQL> ALTER SESSION SET ISOLATION_LEVEL = READ COMMITTED;
Cloud SQL para MySQL, al igual que Oracle, admite los cuatro niveles de aislamiento de transacciones especificados en el estándar ANSI SQL:92:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ (default)
SERIALIZABLE
El nivel de aislamiento predeterminado de Cloud SQL para MySQL es REPEATABLE READ
. Los nuevos datos solo estarán disponibles para ambos después de que ambas transacciones emitan un comando COMMIT
. Estos niveles de aislamiento se pueden modificar a nivel de SESSION
y a nivel de GLOBAL
(la modificación a nivel global se encuentra actualmente en fase beta mediante marcas de configuración).
Para verificar los niveles de aislamiento actuales tanto en el nivel SESSION
como en el GLOBAL
, usa la siguiente instrucción:
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
El resultado es el siguiente:
+-----------------------+-----------------+ | @@GLOBAL.tx_isolation | @@tx_isolation | +-----------------------+-----------------+ | REPEATABLE-READ | REPEATABLE-READ | +-----------------------+-----------------+
Puedes modificar la sintaxis del nivel de aislamiento de la siguiente manera:
SET [SESSION] TRANSACTION ISOLATION LEVEL [READ WRITE | READ ONLY]
| REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE]
También puedes modificar el nivel de aislamiento a nivel de SESSION
:
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-- Verify
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;
El resultado es el siguiente:
+-----------------------+------------------+ | @@GLOBAL.tx_isolation | @@tx_isolation | +-----------------------+------------------+ | REPEATABLE-READ | READ-UNCOMMITTED | +-----------------------+------------------+
Estructura de las transacciones de Cloud SQL para MySQL
Sintaxis de Transacciones:
START TRANSACTION [transaction_characteristic [, transaction_characteristic] ...] |
---|
Las transacciones se pueden implementar con START TRANSACTION
o BEGIN
.
La opción WITH CONSISTENT SNAPSHOT
inicia una transacción READ
coherente, que es lo mismo que emitir un START TRANSACTION
seguido de un SELECT
de cualquier tabla. La cláusula WITH CONSISTENT SNAPSHOT
que inicia una lectura
coherente READ
(una operación READ
que usa información de la instantánea para presentar
resultados de consulta basados en un momento dado) no cambia el nivel de aislamiento de la transacción y solo se admite en el nivel de aislamiento REPEATABLE READ
.
Un READ
coherente usa información de la vista general para que los resultados de las consultas estén disponibles en un momento concreto, independientemente de las modificaciones realizadas por transacciones simultáneas. Si otra transacción ha cambiado los datos consultados, los datos originales se reconstruyen mediante el registro de deshacer. De esta forma, se evitan problemas de bloqueo que pueden reducir la simultaneidad.
Con el nivel de aislamiento REPEATABLE READ
, la copia se basa en el momento en que se realiza la primera operación READ
. Con el nivel de aislamiento READ COMMITTED
, la instantánea se restablece a la hora de cada operación READ
coherente.
A continuación, se muestra un ejemplo de cómo definir el nivel de aislamiento y de transacción:
mysql> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
mysql> START TRANSACTION;
mysql> INSERT INTO tbl1 VALUES (1, 'A');
mysql> UPDATE tbl2 SET col1 = 'Done' WHERE KeyColumn = 1;
mysql> COMMIT;