Migra usuarios de Oracle a Cloud SQL para MySQL: terminología y funcionalidad

Este documento es parte de una serie que proporciona información clave y orientación relacionada con la planificación y la realización de migraciones de bases de datos de Oracle® 11g o 12c a instancias de segunda generación con versión 5.7 de Cloud SQL para MySQL. En la serie, se incluyen las siguientes partes:

Terminología

En esta sección, se detallan las similitudes y las diferencias en la terminología de la base 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. En la comparación, se hace una distinción entre las versiones 11g y 12c de Oracle debido a diferencias arquitectónicas (por ejemplo, Oracle 12c presenta la característica de multiusuarios). 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 clave
Instancia Una sola instancia de Oracle 11g puede contener solo una base de datos. Instancia Una instancia de MySQL puede contener varias bases de datos.
Base de datos Una base de datos califica como 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, entregan varias aplicaciones.
Esquema El esquema y los usuarios son idénticos porque se los considera propietarios de los objetos de la base de datos (se puede crear un usuario sin especificarlo ni asignarlo a un esquema). Esquema Un esquema se conoce como una base de datos, mientras que los objetos de la base de datos se crean en un esquema o una base de datos determinados.
Usuario Es idéntico al esquema porque 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 base de datos con permisos específicos para conectar o modificar objetos de base de datos en esquemas o bases de datos específicos, por ejemplo, instancia → bases de datos/esquemas → objetos de base de datos.
Función Conjunto definido de permisos de la base de datos que se puede encadenar como un grupo y se puede asignar a los usuarios de la base de datos. Privilegios de MySQL MySQL 5.7 no admite la administración de funciones. Los permisos se pueden configurar mediante la cláusula GRANT para que los usuarios tengan privilegios en los objetos de la base de datos en diferentes niveles (LECTURA/ESCRITURA, etcétera).
Usuarios administradores/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 usuario root@'%' (puede conectarse desde cualquier host) y un usuario adicional llamado mysql.sys, que puede conectarse solo desde el localhost.
Diccionario/metadatos Oracle usa las siguientes tablas de metadatos:

USER_TableName
ALL_TableName
DBA_TableName
Diccionario/metadatos MySQL usa varias bases de datos/esquemas para diccionario/metadatos:

MYSQL
INFORMATION_SCHEMA
PERFORMANCE_SCHEMA
SYS
Cada una de estas bases de datos también son bases de datos del sistema y se crean con cada implementación de Cloud SQL para MySQL.
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 espacio de tabla puede contener uno o más archivos de datos. Espacio de tabla Al igual que en Oracle, un espacio de tabla de MySQL es una unidad lógica, pero representa solo una tabla, a diferencia del espacio de tabla de Oracle, que puede tener varios archivos de datos (contiene datos para varias tablas).

MySQL admite la creación de un espacio de tabla nuevo con un archivo de datos asignado y, luego, se puede crear una tabla nueva conectada al espacio de tabla recién creado. Ten en cuenta que la configuración de los espacios de tabla, como el tamaño y los límites, se establece mediante los parámetros de la base de datos y no durante la creación de los espacios 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 único archivo de datos se define por el tamaño inicial y el tamaño máximo, y puede contener datos para varias tablas.

Los archivos de datos de Oracle usan el sufijo .dbf (no 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 espacio de tabla dedicado.

Los archivos de datos de MySQL usan archivos .ibd (datos) y .frm (metadatos).
Espacio de tabla del sistema Contiene las tablas del diccionario de datos y los objetos de vistas para toda la base de datos de Oracle. Espacio de tabla del sistema Igual que Oracle, contiene las tablas de diccionario/metadatos. Almacenado en el espacio de tabla innodb_system conectado al archivo de datos ibdata1.
Espacio de tabla temporal Contiene objetos de esquema válidos por la duración de una sesión; además, admite operaciones en ejecución que no caben en la memoria del servidor. Espacio de tabla temporal El propósito es idéntico al de Oracle, almacenado en el espacio de tabla innodb_temporary de MySQL conectado al archivo de datos ibtmp1.
Espacio de tabla
para deshacer
Un tipo especial de espacio de tabla permanente que usa Oracle a fin de administrar las operaciones de reversión cuando se ejecuta la base de datos en el modo de administración para deshacer automático (predeterminado). Espacio de tabla para deshacer Al igual que en Oracle, el espacio de tabla de MySQL para deshacer contiene registros de deshacer con fines de reversión. De forma predeterminada, esta opción se establece en OFF y se menciona como obsoleta para las versiones futuras de MySQL.
ASM La Administración automática de almacenamiento de Oracle es un administrador de discos y sistema de archivos de base de datos integrado y de alto rendimiento que se ejecuta de forma automática mediante una base de datos de Oracle configurada con ASM. No compatible MySQL usa el término motores de almacenamiento para describir diferentes implementaciones de control de datos, pero no es compatible con Oracle ASM. Cloud SQL para MySQL es compatible con muchas características que proporcionan automatización del almacenamiento, como el aumento de almacenamiento automático, el rendimiento y la escalabilidad.
Tablas/vistas Objetos de base de datos fundamentales creados por el usuario. Tablas/vistas Idénticas a Oracle.
Vistas materializadas Se definen con instrucciones de SQL específicas y se pueden actualizar de forma manual o automática según opciones de configuración específicas. No compatible con MySQL Como solución alternativa, se pueden usar activadores o vistas en lugar de las vistas materializadas de Oracle.
Secuencia Generador de valor único de Oracle. Incremento automático MySQL no admite secuencias de Oracle; usa AUTO_INCREMENT como una solución alternativa a la funcionalidad de generación automática de secuencias.
Sinónimo Objetos de base de datos de Oracle que sirven como identificadores alternativos para otros objetos de base de datos. No compatible MySQL no admite el sinónimo de Oracle; como solución alternativa, las vistas se pueden usar si se configuran los permisos adecuados.
Partición Oracle proporciona muchas soluciones de partición para dividir tablas grandes en partes administradas más pequeñas. Partición MySQL tiene una compatibilidad de partición más limitada para mejorar el rendimiento y, al mismo tiempo, conservar las operaciones de administración y mantenimiento de datos, como las particiones de Oracle.
Base de datos flashback Característica exclusiva de Oracle que se puede usar para inicializar una base de datos de Oracle en un momento anterior definido, lo que te permite consultar o restablecer datos que se modificaron o dañaron por error. No compatible Como una solución alternativa, puedes usar las copias de seguridad de Cloud SQL y la recuperación de un momento determinado a fin de restablecer una base de datos a un estado anterior (por ejemplo, restablecer antes de que se descarte una tabla).
sqlplus Interfaz de línea de comandos de Oracle que te permite consultar y administrar la instancia de base de datos. mysql Interfaz de línea de comandos equivalente a MySQL para consultas y administración. Se puede conectar desde cualquier cliente con los permisos adecuados a Cloud SQL.
PL/SQL Oracle extendió el lenguaje de procedimiento a ANSI SQL. MySQL MySQL tiene su propio lenguaje de procedimiento extendido con diferente implementación y sintaxis, y no tiene nombres adicionales para este lenguaje extendido.
Paquete y cuerpo del paquete Funcionalidad específica de Oracle para agrupar procedimientos y funciones almacenados en la misma referencia lógica. No compatible MySQL admite procedimientos y funciones almacenados como objetos individuales con asignación de grupo.
Funciones y procedimientos almacenados Usa PL/SQL para implementar la funcionalidad de código. Funciones y procedimiento almacenados MySQL admite la creación de procedimientos y funciones almacenados con su propia implementación de lenguaje de procedimiento.
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 del nivel de instancia y la base de datos de Oracle se guardan en un archivo binario conocido como el SPFILE (en versiones anteriores, el archivo se llamaba PFILE), que se puede usar como un archivo de texto para configurar parámetros de forma manual. Marcas de base de datos de Cloud SQL para MySQL Puedes configurar o modificar los parámetros de Cloud SQL para MySQL a través de la utilidad de marcas de base 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 MySQL (por ejemplo, mysql> SET GLOBAL ...). Solo puedes cambiar estos parámetros mediante la utilidad de marcas de base de datos.
SGA/PGA/AMM Parámetros de memoria de Oracle que controlan la asignación de memoria a la instancia de 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 según corresponda.
Almacenamiento en caché de los resultados Reduce las operaciones de E/S de SQL mediante la recuperación de filas de la caché del búfer, que se puede administrar mediante parámetros de base de datos y sugerencias a nivel de sesión. Almacenamiento en caché de la consulta Tiene el mismo propósito fundamental que el almacenamiento en caché de los resultados de Oracle y se puede administrar a nivel de base de datos y de sesión.
Sugerencias para la base de datos Impacto controlado en las instrucciones de SQL que influyen en el comportamiento del optimizador para lograr un mejor rendimiento. Oracle tiene más de 50 sugerencias diferentes para la base de datos. Sugerencias para la base de datos MySQL admite un conjunto limitado de sugerencias para la base de datos en comparación con Oracle (sugerencias de optimizador y de índice). Ten en cuenta que MySQL usa sugerencias de base de datos, sintaxis y nombres diferentes.
RMAN Utilidad de administrador de recuperación de Oracle. Se usa para crear copias de seguridad de bases de datos con funciones extendidas que admiten varias situaciones de recuperación ante desastres y más (clonación, etcétera). Copia de seguridad de Cloud SQL para MySQL Cloud SQL para MySQL ofrece dos métodos para aplicar copias de seguridad completas: a pedido y automáticas.
Volcado de datos (EXPDP/IMPDP) Utilidad de generación de volcado de Oracle que se puede usar para muchas características, como exportar o importar, crear copias de seguridad de la base de datos (a nivel de esquema o de objeto), metadatos de esquema, generar archivos SQL del esquema y más opciones.

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). Luego, puedes comprimir el archivo de volcado y moverlo a Cloud Storage. La utilidad mysqldump es solo para el paso de exportación.
SQL*Loader Herramienta que permite subir datos desde archivos externos, como archivos de texto, CSV y muchos más.

mysqlimport/
LOAD FILE INFILE
La utilidad mysqlimport proporciona la capacidad de cargar archivos de texto o CSV (Oracle admite formatos de archivo adicionales) en una tabla de base de datos con una estructura correspondiente.
Data Guard Solución de recuperación ante desastres de Oracle mediante una instancia en espera, lo que permite a los usuarios realizar operaciones de “LECTURA” desde la instancia en espera. Alta disponibilidad y replicación de Cloud SQL para MySQL Para lograr una recuperación ante desastres o una alta disponibilidad, Cloud SQL para MySQL ofrece la arquitectura de réplica de conmutación por error y para operaciones de solo lectura (separación LECTURA/ESCRITURA) mediante la réplica de lectura.
Data Guard/Golden Gate activas Las principales soluciones de replicación de Oracle, que pueden tener varios propósitos, como instancia de solo lectura, en espera (DR), replicación bidireccional (de varias fuentes), almacenamiento de datos y mucho más. Réplica de lectura de Cloud SQL para MySQL Réplica de lectura de Cloud SQL para MySQL con el fin de implementar la agrupación en clústeres con separación LECTURA/ESCRITURA. Por el momento, no hay compatibilidad con la configuración de varias fuentes, como la replicación bidireccional de Golden Gate o heterogénea.
RAC Clústeres de aplicación real de Oracle. Solución de agrupamiento en clústeres, propiedad de Oracle, para proporcionar alta disponibilidad mediante la implementación de varias instancias de bases de datos con una sola unidad de almacenamiento. No compatible Aún no se admite la arquitectura de varias fuentes en Cloud SQL de Google Cloud. Para lograr una arquitectura de agrupamiento en clústeres con separación LECTURA/ESCRITURA y alta disponibilidad, usa la alta disponibilidad y la réplica de lectura de Cloud SQL.
Grid/Cloud Control (OEM) Software de Oracle para administrar y supervisar bases de datos y otros servicios relacionados en un formato de aplicación web. Esta herramienta es útil para el análisis de bases de datos en tiempo real a fin de comprender las cargas de trabajo altas. Consola de Cloud SQL para MySQL, Cloud Monitoring Usa Cloud SQL para MySQL para la supervisión, incluidos los gráficos detallados de tiempo y recursos. También usa Cloud Monitoring para contener métricas de supervisión y análisis de registros de MySQL específicos a fin de obtener capacidades de supervisión avanzadas.
Registros REDO Registros de transacciones de Oracle que constan de dos (o más) archivos definidos asignados con anterioridad que almacenan todas las modificaciones de datos a medida que ocurren. El propósito del registro redo es proteger la base de datos en caso de una falla de la instancia. Registros REDO MySQL también tiene archivos de registros redo, que se usan durante la recuperación ante fallas para corregir los datos escritos por el mecanismo de registros redo de transacciones incompletas.
Registros de archivo Los registros de archivo brindan asistencia para operaciones de copia de seguridad y replicación, y mucho más. Oracle escribe en los registros (si están habilitados) después de cada operación de cambio de registro redo. binlogs Implementación de MySQL de retención de registros de transacciones. Se usa en particular para fines de replicación (habilitada de forma predeterminada con Cloud SQL).
Archivo de control El archivo de control de Oracle contiene información sobre la base de datos, como archivos de datos, nombres y ubicaciones de registros redo, el número de secuencia de registro actual y la 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. Se controla a través de los parámetros de MySQL y mediante el comando SHOW MASTER STATUS para ver la posición del registro binario actual.
SCN El SCN (número de cambio del sistema) de Oracle es el método principal para mantener la coherencia de los datos de todos los componentes de la base de datos de Oracle a fin de satisfacer el modelo de transacción ACID. 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 (repositorio automático de cargas de trabajo) es un informe de verbosidad que proporciona información detallada sobre el rendimiento de las instancias de bases de datos de Oracle y se considera una herramienta de DBA para el diagnóstico del rendimiento.

performance_schema
MySQL no tiene un informe equivalente a Oracle AWR, pero MySQL junta datos de rendimiento recopilados por performance_schema. Una solución alternativa sería usar los paneles de rendimiento de Workbench de MySQL.

DBMS_SCHEDULER
Utilidad de Oracle que se usa para establecer y determinar el tiempo de las operaciones predefinidas.

EVENT_SCHEDULER
Funcionalidad del programador interno de la base de datos de MySQL. De forma predeterminada, esta función está configurada en OFF.
Encriptación de datos transparente Encripta los datos almacenados en discos como protección de datos en reposo. Estándar de encriptación avanzada de Cloud SQL Cloud SQL para MySQL usa el Estándar de encriptación avanzada (AES-256) de 256 bits para la protección de seguridad de datos en reposo y datos en tránsito.
Compresión avanzada Para mejorar la huella de almacenamiento de la base de datos, reducir los costos de almacenamiento y mejorar el rendimiento de la base de datos, Oracle proporciona capacidades avanzadas de compresión de datos (tablas/índices). Compresión de tablas de InnoDB MySQL ofrece compresión de tablas si se crea una tabla mediante el parámetro ROW_FORMAT establecido en COMPRESSED. Obtén más información sobre la compresión de índices.
SQL Developer La GUI de SQL gratuita de Oracle para administrar y ejecutar instrucciones de SQL o PL/SQL (también se puede usar con MySQL). MySQL Workbench La GUI de SQL gratuita de MySQL para administrar y ejecutar instrucciones de código de SQL y MySQL.
Registro de alerta Registro principal de Oracle para operaciones y errores generales de la base de datos. Registro de errores de MySQL Usa el Visor de registros de Cloud Logging para mirar los registros de errores de MySQL.
Tabla DUAL Tabla especial de Oracle que se conserva sobre todo para recuperar valores de seudocolumnas como SYSDATE o USER Tabla DUAL MySQL permite especificar DUAL como una tabla en las instrucciones de SQL que no dependen de los 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 compatible. Sin equivalente directo.
Objeto de escucha Proceso de red de Oracle con tareas de escucha de las conexiones de bases de datos entrantes. Redes autorizadas de Cloud SQL MySQL acepta conexiones de fuentes remotas una vez permitidas en la página de configuración de las redes autorizadas de Cloud SQL.
TNSNAMES Archivo de configuración de red de Oracle que define direcciones de bases de datos para establecer conexiones mediante el uso de 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 o pública. Si deseas conectarte a Cloud SQL para MySQL (instancias de segunda generación) sin tener que permitir direcciones IP específicas o configurar SSL, el proxy de Cloud SQL es un método de acceso seguro adicional.
Puerto predeterminado de la instancia 1521 Puerto predeterminado de la instancia 3306
Vínculo a la base de datos Objetos de esquema de Oracle que se pueden usar para interactuar con objetos de bases de datos locales o remotas. No compatible Para obtener una solución alternativa, usa el código de la aplicación a fin de 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 clave
Instancia La capacidad multiusuario incorporada en la instancia de Oracle 12c que puede contener varias bases de datos como una base de datos conectable (PDB), como contraparte de Oracle 11g, en la que 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 entregan varios servicios y aplicaciones.
CDB Una base de datos de contenedores multiusuario (CDB) puede admitir una o más PDB, mientras que se pueden crear objetos globales de CDB (afecta a todas las PDB), como las funciones. Instancia de MySQL La instancia de MySQL es similar a la de CDB de Oracle. Ambas proporcionan una capa de sistema para las PDB.
PDB Las PDB (bases de datos conectables) se pueden usar para aislar servicios y aplicaciones entre sí, y como una colección portátil de esquemas. Bases de datos/esquemas de MySQL Una base de datos de MySQL puede entregar varios servicios y aplicaciones, así como 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 (solo muestran valores únicos dentro de una sesión) o a nivel global (por ejemplo, cuando se usan tablas temporales). Incremento
automático
Las secuencias no son compatibles con MySQL, pero los usuarios pueden usar la propiedad de columna AUTO_INCREMENT como una solución alternativa.
Columnas de identidad El tipo IDENTITY de Oracle 12c genera una secuencia y la asocia con una columna de tabla sin necesidad de crear de forma manual un objeto de secuencia por separado. Incremento automático Usa la propiedad de columna AUTO_INCREMENT para simular la misma funcionalidad que la columna de identidad de Oracle 12c (una solución alternativa a la funcionalidad de generación automática de secuencias).
Fragmentación La fragmentación de Oracle es una solución en la que una base de datos de Oracle se particiona en varias bases de datos más pequeñas (fragmentos) a fin de permitir la escalabilidad, la disponibilidad y la distribución geográfica para entornos de OLTP. No compatible (como una característica) MySQL no tiene una característica de fragmentación equivalente. La fragmentación se puede implementar mediante MySQL (como la plataforma de datos) con una capa de aplicación compatible.
Base de datos en memoria Oracle proporciona un conjunto de características que pueden mejorar el rendimiento de la base de datos para OLTP y cargas de trabajo mixtas. No compatible MySQL no tiene una característica equivalente. Puedes usar Memorystore como alternativa.
Ocultamiento Como parte de las características de seguridad avanzadas de Oracle, el ocultamiento puede realizar el enmascaramiento de columnas para evitar que los usuarios y las aplicaciones muestren datos sensibles. No compatible MySQL no tiene una característica equivalente.

Funcionalidad

Aunque las bases de datos de Oracle 11g o 12c y Cloud SQL para MySQL funcionan en diferentes arquitecturas (infraestructura y lenguajes de procedimiento extendidos), comparten los mismos aspectos fundamentales de las bases de datos relacionales. Admiten objetos de base de datos, cargas de trabajo de simultaneidad multiusuario y transacciones (compatibilidad con ACID). También administran las contenciones de bloqueo que admiten varios niveles de aislamiento (según las necesidades de la empresa) y cumplen con los requisitos de aplicaciones actuales como un almacén de datos relacional para operaciones de transacción en línea (OLTP) y procesamiento analítico en línea (OLAP).

En la siguiente sección, se proporciona 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.

Crea y visualiza bases de datos existentes

Oracle 11g/12c Cloud SQL para MySQL 5.7
Por lo general, puedes crear bases de datos y ver las existentes mediante la utilidad asistente de creación de base de datos (DBCA) de Oracle. Las instancias o bases de datos creadas de forma manual requieren que especifiques 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 declaració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 PDB desde el origen, ya sea desde una plantilla de base de datos de contenedores (CDB) o mediante la clonación de una PDB desde una PDB existente. Usa 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 declaración con el formato CREATE DATABASE Name;, como en este ejemplo:

mysql> CREATE DATABASE MYSQLDB;
Enumera todas las PDB:

SQL> SHOW is PDBS;
Enumera todas las bases de datos existentes:

mysql> SHOW DATABASES;
Conéctate a otra PDB:

SQL> ALTER SESSION SET CONTAINER=pdb;
Conéctate a una base de datos diferente de este modo:

mysql> use databaseName;
O de este otro modo:

mysql> \u databaseName;
Abre o cierra una PDB específica (abierta/solo lectura):

SQL> ALTER PLUGGABLE DATABASE pdb CLOSE;
No es compatible con una sola base de datos.

Todas las bases de datos están en la misma instancia de Cloud SQL para MySQL; por lo tanto, todas las bases de datos están activas o inactivas.

Administra una base de datos a través de la consola de Cloud SQL

  • En la consola de Google Cloud, ve a Almacenamiento > SQL > Instancia > Databases (Bases de datos) > Ver/crear.

    Página de la consola para crear o ver una base de datos MySQL.

Esquemas y bases de datos del sistema

Las instancias de base de datos de Oracle obtienen ciertos esquemas del sistema, por ejemplo, SYS/SYSTEM, con la función de propietarios 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 entregan la capa de metadatos (ten en cuenta que los nombres de las bases de datos distinguen entre mayúsculas y minúsculas):

  • Mysql

    La base de datos del sistema mysql contiene tablas que almacenan información requerida por el servidor MySQL mientras se ejecuta, como se muestra a continuación:

    • Tablas de privilegios del sistema
    • Tablas de información de objetos
    • Tablas del sistema de registros
    • Tablas del sistema de replicación
    • Tablas del sistema optimizador
    • Tablas del sistema por zonas horarias
  • INFORMATION_SCHEMA

    INFORMATION_SCHEMA funciona como el diccionario de datos y catálogo del sistema de la base de datos principal. Proporciona acceso a los metadatos de la base de datos, que es información interna de la base de datos sobre el servidor de MySQL, como el nombre de una base de datos o tabla, el tipo de datos de columna y los privilegios de acceso.

  • performance_schema

    Una base de datos del sistema que recopila información estadística sobre la instancia de MySQL. La base de datos del sistema performance_schema contiene métricas para la supervisión de la ejecución del servidor a un nivel muy detallado. El esquema proporciona una inspección de ejecución interna del servidor al momento de la ejecución y puede servir como fuente principal para analizar problemas de rendimiento de la base de datos.

    El performance_schema no está habilitado de forma predeterminada cuando se usa Cloud SQL para MySQL. Para habilitar el esquema, usa la herramienta de línea de comandos de gcloud:

    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 la base de datos de Cloud SQL para MySQL en la consola de Google Cloud.

  • sys

    El esquema sys existe desde la versión 5.5.7 de MySQL y conserva más que nada las vistas en las tablas del sistema performance_schema. Este esquema proporciona un conjunto de vistas más legibles que resumen los datos de performance_schema en un formulario más fácil de comprender. El esquema sys también contiene varios procedimientos y funciones almacenados para realizar operaciones como configurar performance_schema y generar informes de diagnóstico.

    El esquema sys muestra información solo cuando performance_schema está habilitado.

Visualiza metadatos y vistas dinámicas del sistema

En esta sección, se proporciona 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 y sus objetos de base de datos correspondientes en Cloud SQL para MySQL 5.7.

Oracle proporciona cientos de tablas y vistas de metadatos del sistema, mientras que MySQL solo contiene varias decenas. Para cada caso, puede haber más de un objeto de base de datos con un propósito específico.

Oracle proporciona varios niveles de objetos de metadatos, cada uno de los cuales requiere privilegios diferentes:

  • USER_TableName: El usuario puede verlo.
  • ALL_TableName: Todos los usuarios pueden verlo.
  • DBA_TableName: Solo pueden verlo los usuarios con el privilegio de DBA, como SYS y SYSTEM.

Para las vistas de rendimiento dinámico, Oracle usa los prefijos V$ y GV$. Para que un usuario de MySQL pueda ver las tablas o vistas de metadatos del sistema, debe tener permisos específicos sobre los objetos del sistema. Para obtener más información sobre la seguridad, consulta la sección Seguridad.

Tipo de metadatos Vista/Tabla de Oracle Tabla/Vista/Muestra de MySQL (CMD de MySQL)
Sesiones abiertas

V$SESSION

SHOW PROCESSLIST
INFORMATION_SCHEMA.PROCESSLIST
performance_schema.threads
Transacciones en ejecución

V$TRANSACTION

INFORMATION_SCHEMA.INNODB_TRX
Objetos de base de datos

DBA_OBJECTS
No compatible. Consulta cada objeto por su tipo.
Tablas

DBA_TABLES

INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.INNODB_SYS_TABLES
Columnas de la tabla

DBA_TAB_COLUMNS

INFORMATION_SCHEMA.COLUMNS
INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
Privilegios de tablas y columnas

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'
Vistas

DBA_VIEWS

INFORMATION_SCHEMA.VIEWS
Limitaciones

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
Trabajos/
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
Vínculos a 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
Bloqueos

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 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
La tabla Segmentos no es compatible. Consulta cada objeto por su tipo.
Funciones

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 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 RDBMS (incluido el de Oracle), MySQL puede funcionar de manera polimórfica debido a su sistema de almacenamiento conectable. La arquitectura del motor de almacenamiento conectable de MySQL permite que un administrador de base de datos seleccione un motor de almacenamiento especializado para una necesidad en particular de una aplicación.

El componente del motor de almacenamiento conectable de MySQL en el servidor de la base de datos de MySQL es responsable de realizar las operaciones de E/S de los datos, incluido el almacenamiento de datos en los discos o búferes de memoria. La arquitectura del motor de almacenamiento conectable proporciona un conjunto estándar de servicios de asistencia y administración que son comunes entre todos los motores de almacenamiento subyacentes.

En MySQL 5.5 y versiones posteriores, el motor de almacenamiento predeterminado es el motor de almacenamiento InnoDB, mientras que InnoDB también maneja las tablas temporales. Puedes configurar los motores de almacenamiento durante los pasos CREATE o ALTER de la tabla, como en el siguiente ejemplo:

mysql> SHOW CREATE TABLE JOBS \G;

Este es el resultado:

*************************** 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.
Puedes ver la configuración del motor de almacenamiento mediante la siguiente consulta:

mysql> SHOW VARIABLES LIKE '%storage%';

El resultado es similar a este:

+----------------------------------+--------+
| 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 es similar a este:

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| 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 es el único que admite transacciones (cumple con ACID). Debido a que InnoDB es el único motor de almacenamiento que se aproxima a la funcionalidad de Oracle, te recomendamos usar InnoDB en todo momento. La segunda generación de Cloud SQL para MySQL solo admite el motor de almacenamiento InnoDB.

Parámetros del sistema

Las bases de datos de Oracle y Cloud SQL para MySQL pueden configurarse de manera específica para lograr cierta funcionalidad más allá de la configuración predeterminada. Para alterar los parámetros de configuración en Oracle, se requieren ciertos permisos de administración (en especial, los permisos del usuario SYS/SYSTEM).

A continuación, se muestra un ejemplo de cómo alterar la configuración de Oracle mediante la declaración ALTER SYSTEM. En este ejemplo, el usuario cambia el parámetro “cantidad máxima de intentos de acceso con errores” solo en el nivel de configuración spfile (con la modificación válida solo después de un reinicio):

SQL> ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=2 SCOPE=spfile;

En el siguiente ejemplo, el usuario solo solicita ver el valor del parámetro de Oracle:

SQL> SHOW PARAMETER SEC_MAX_FAILED_LOGIN_ATTEMPTS;

El resultado es similar a este:

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_max_failed_login_attempts        integer     2

La modificación del parámetro de Oracle funciona en tres permisos:

  • SPFILE: Las modificaciones de parámetros se escriben en el spfile de Oracle, con un reinicio de instancia necesario para que el parámetro surta efecto.
  • MEMORIA: Las modificaciones de parámetros se aplican en la capa de memoria solo cuando no se permite el cambio de parámetros estáticos.
  • AMBOS: Las modificaciones de parámetros se aplican en el archivo de parámetros del servidor y en la memoria de la instancia, en la que no se permite el cambio de parámetros estáticos.

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 consola de Google Cloud, la CLI de gcloud o CURL. Consulta la lista completa de todos los parámetros compatibles con Cloud SQL para MySQL que puedes modificar.

Los parámetros de MySQL se pueden dividir en varios permisos:

  • Parámetros dinámicos: se pueden modificar en el tiempo de ejecución.
  • Parámetros estáticos: requieren que se reinicie la instancia para surtir efecto.
  • 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 la sesión solo durante la vida útil de la sesión actual, aislada de otras sesiones.

El parámetro de memoria innodb_buffer_pool_size de Cloud SQL para MySQL (uno de los parámetros fundamentales que se debe tener en cuenta cuando se planifica y ajusta el tamaño de un entorno de MySQL) se determina por el tipo de instancia y no se puede alterar mediante el uso de marcas de configuración ni por cualquier 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 alteración de los parámetros de Cloud SQL para MySQL

Console

Usa la consola de Google Cloud para habilitar el parámetro event_scheduler.

  1. Ve a la página Edit instance (Editar instancia) de Cloud Storage.

    Ir a Editar instancia

  2. En Marcas, haz clic en Agregar elemento y busca event_scheduler, como en la siguiente captura de pantalla.

    Edita la instancia del programador de eventos en la consola.

gcloud

  • Usa la CLI de gcloud para habilitar el parámetro event_scheduler:

    gcloud sql instances patch INSTANCE_NAME \
        --database-flags event_scheduler=on
    

    Este es el resultado:

    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 alteración se mantiene vigente durante la sesión actual y solo durante el ciclo de vida de la sesión.

  1. Muestra variables como autocommit:

    mysql> SHOW VARIABLES LIKE '%autoc%';
    

    Verás el siguiente resultado, en el que autocommit está ON:

    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | ON    |
    +---------------+-------+
    
  2. Inhabilita autocommit:

    mysql> SET autocommit=off;
    
  3. Muestra variables como autocommit:

    mysql> SHOW VARIABLES LIKE '%autoc%';
    

    Verás el siguiente resultado, en el que autocommit está OFF:

    +---------------+-------+
    | 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 relevantes para las migraciones a nivel de transacción y aislamiento.

Modo de confirmación

Oracle funciona de forma predeterminada en el modo sin confirmación automática, en el que cada transacción de DML se debe determinar con declaraciones 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 de DML se confirma de manera automática con la especificación explícita de declaraciones COMMIT/ROLLBACK.

Para forzar el funcionamiento de MySQL en un modo sin confirmación automática, existen varias opciones:

  • Cuando administres transacciones dentro del alcance de los procedimientos almacenados, usa la cláusula START TRANSACTION para ingresar al mismo modo transaccional que el de Oracle.
  • Usa la siguiente declaración para establecer el parámetro del sistema autocommit en OFF a nivel de la sesión y usa de forma explícita las declaraciones COMMIT/ROLLBACK en las transacciones de DML:

    mysql> SET autocommit=off;
    

Niveles de aislamiento

El estándar ANSI/ISO de SQL (SQL92) define cuatro niveles de aislamiento. Cada nivel proporciona un enfoque diferente para manejar la ejecución simultánea de transacciones de bases de datos:

  • Lectura no confirmada: Una transacción en proceso en ese momento puede ver los datos no confirmados que realiza otra transacción. Si se realiza una reversión, todos los datos se restablecen a su estado anterior.
  • Lectura confirmada: Una transacción solo ve los cambios de datos que se confirmaron; no es posible ver los cambios no confirmados (“lecturas sucias”).
  • Lectura repetible: Una transacción puede ver los cambios realizados por la otra transacción solo después de que ambas transacciones emiten una COMMIT o ambas se revierten.
  • Serializable: El nivel de aislamiento más estricto y potente. Este nivel bloquea todos los registros a los que se accede, y bloquea el recurso para que no se puedan agregar registros a la tabla.

Los niveles de aislamiento de transacciones administran la visibilidad de los datos modificados según cómo lo ven otras transacciones en ejecución. Además, cuando varias transacciones simultáneas acceden a los mismos datos, el nivel de aislamiento de transacción seleccionado afecta la forma en que interactúan las diferentes transacciones.

Oracle admite los siguientes niveles de aislamiento:

  • Lectura confirmada (predeterminado)
  • Serializable
  • Solo lectura (no es parte del estándar ANSI/ISO de SQL (SQL92)

MVCC en Oracle (Control de simultaneidad de varias versiones):

  • Oracle usa el mecanismo de VMCC para proporcionar coherencia de lectura automática en toda la base de datos y en todas las sesiones.
  • Oracle depende del 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 bases de datos solo muestran datos confirmados con respecto al SCN al momento de la ejecución de la consulta.
  • Los niveles de aislamiento se pueden cambiar a nivel de transacción y de sesión.

Este es un ejemplo de configuración de los 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, como Oracle, admite los siguientes 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. Cualquier dato nuevo estará disponible para ambos solo 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 de nivel global se encuentra en etapa Beta mediante marcas de configuración).

Para verificar los niveles de aislamiento actuales en los niveles SESSION y GLOBAL, usa la siguiente declaración:

mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;

Este es el resultado:

+-----------------------+-----------------+
| @@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]

Además, 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;

Este es el resultado:

+-----------------------+------------------+
| @@GLOBAL.tx_isolation | @@tx_isolation   |
+-----------------------+------------------+
| REPEATABLE-READ       | READ-UNCOMMITTED |
+-----------------------+------------------+

Estructura de transacciones de Cloud SQL para MySQL

Sintaxis de las transacciones:


START TRANSACTION
    [transaction_characteristic [, transaction_characteristic] ...]

transaction_characteristic: { WITH CONSISTENT SNAPSHOT | READ WRITE | READ ONLY }
BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET autocommit = {0 | 1}

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 START TRANSACTION, seguido de un SELECT de cualquier tabla. La cláusula WITH CONSISTENT SNAPSHOT que inicia una READ coherente (una operación READ que usa información de instantáneas para presentar resultados de consultas basadas en un momento determinado) no cambia el nivel de aislamiento de la transacción y solo es compatible con el nivel de aislamiento REPEATABLE READ.

Una READ coherente usa información de instantáneas para que los resultados de las consultas estén disponibles en función de un momento determinado, sin tener en cuenta las modificaciones realizadas por transacciones simultáneas. Si otra transacción cambió los datos consultados, los datos originales se reconstruyen mediante el registro de deshacer. Esto ayudará a evitar problemas de bloqueo que puedan reducir la simultaneidad.

Con el nivel de aislamiento REPEATABLE READ, la instantánea 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 al momento de cada operación READ coherente.

Este es un ejemplo de configuración del nivel de la transacción y del aislamiento:

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;