Migrazione degli utenti Oracle a Cloud SQL per MySQL: terminologia e funzionalità

Questo documento fa parte di una serie che fornisce informazioni e indicazioni chiave relative alla pianificazione e all'esecuzione di migrazioni dei database Oracle® 11g/12c verso Istanze Cloud SQL per MySQL versione 5.7, seconda generazione. La serie include le seguenti parti:

Terminologia

Questa sezione descrive in dettaglio le somiglianze e le differenze nella terminologia dei database tra Oracle e Cloud SQL per MySQL. Esamina e confronta gli aspetti di base di ciascuna delle piattaforme di database. Il confronto distingue tra Versioni Oracle 11g e 12c, a causa di differenze architetturali (ad esempio, Oracle 12c introduce la funzionalità multi-tenant). La versione di Cloud SQL per MySQL a cui si fa riferimento qui è 5.7.x.

Differenze nella terminologia tra Oracle 11g e Cloud SQL per MySQL

Oracle 11g Descrizione Cloud SQL per MySQL Differenze principali
Istanza Una singola istanza Oracle 11g può contenere un solo database. Istanza Un'istanza MySQL può contenere più database.
Database Un database si qualifica come una singola istanza (il nome del database è identico al nome dell'istanza). Database Database multipli o singoli gestiscono più applicazioni.
Schema Gli schemi e gli utenti sono identici perché entrambi sono considerati proprietari degli oggetti del database (un utente può essere creato senza specificare o essere allocato a uno schema). Schema Uno schema è definito come database, mentre gli oggetti del database vengono creati in un determinato schema/database.
User Identici allo schema perché entrambi sono proprietari degli oggetti di database, ad ad esempio istanza → database → schemi/utenti → oggetti di database. User Un utente del database con autorizzazioni specifiche per connettersi o modificare il database oggetti su schemi/database specifici, ad esempio istanza → database/schemi → oggetti di database.
Role Insieme definito di autorizzazioni per i database che possono essere concatenati come gruppo e da assegnare agli utenti del database. Privilegi MySQL MySQL 5.7 non supporta la gestione dei ruoli. Le autorizzazioni possono essere configurate utilizzando la clausola GRANT per consentire agli utenti di disporre di privilegi sugli oggetti del database a diversi livelli (READ/WRITE e così via).
Amministratori/Utenti SYSTEM Utenti amministratori Oracle con il massimo livello di accesso:
SYS
SYSTEM
Super utenti Una volta eseguito il deployment, Cloud SQL per MySQL ha l'root@'%' utente (può connettersi da qualsiasi host) e un altro utente con nome mysql.sys, che può connettersi solo dal localhost.
Dizionario/metadati Oracle utilizza le seguenti tabelle di metadati:
USER_TableName
ALL_TableName
DBA_TableName
Dizionario/metadati MySQL utilizza diversi database/schemi per dizionario/metadati:
MYSQL
INFORMATION_SCHEMA
PERFORMANCE_SCHEMA
SYS
Ciascuno di questi database è anche database di sistema e viene creato a ogni deployment Cloud SQL per MySQL.
Visualizzazioni dinamiche del sistema Visualizzazioni dinamiche Oracle:
V$ViewName
Visualizzazioni dinamiche di sistema Le viste dinamiche MySQL sono disponibili in diversi database di sistema:
INFORMATION_SCHEMA
PERFORMANCE_SCHEMA
SYS
Spazio dati Le strutture di archiviazione logiche principali dei database Oracle. Ogni spazio tabella può contenere uno o più file di dati. Spazio tabella Come in Oracle, uno spazio tabella MySQL è un'unità logica, ma rappresenta solo una singola tabella, a differenza dello spazio tabella Oracle, che può avere più file di dati (contiene i dati di più tabelle).

MySQL supporta la creazione di un nuovo tablespace con un set di dati allocato e poi creando una nuova tabella collegata allo spazio delle tabelle appena creato. Tieni presente che le impostazioni di configurazione dello spazio delle tabelle, come il dimensionamento e i limiti, vengano impostati utilizzando i parametri del database e non durante la creazione dello spazio delle tabelle.
File di dati Gli elementi fisici di un database Oracle che contengono i dati e sono definiti in uno specifico spazio tabella.

Un singolo file di dati è definito dalle dimensioni iniziali e massime e può contenere dati per più tabelle.

I file di dati Oracle utilizzano il suffisso .dbf (non obbligatorio).
File di dati Cloud SQL per MySQL utilizza innodb_file_per_table parametro con il valore "ON" (predefinito); questa configurazione genera un nuovo file di dati per ogni tabella e un tablespace dedicato.

I file di dati di MySQL utilizzano i file .ibd (dati) e .frm (metadati).
Spazio delle tabelle di sistema Contiene le tabelle e gli oggetti delle visualizzazioni del dizionario di dati per l'intero database Oracle. Spazio tabella di sistema Come Oracle, contiene le tabelle dizionario/metadati. Archiviato in innodb_system spazio tabella collegato al ibdata1 dei dati nel tuo file di dati.
Spazio tabella temporaneo Contiene oggetti dello schema validi per la durata di una sessione; inoltre, supporta le operazioni in esecuzione che non possono essere inserite nella memoria del server. Spazio tabella temporaneo Lo scopo è identico a quello di Oracle, archiviato nello spazio tabella MySQLinnodb_temporary associato al file di datiibtmp1.
Annulla
tablespace
Un tipo speciale di spazio tabella permanente di sistema utilizzato da Oracle per gestire le operazioni di rollback quando il database viene eseguito in modalità di gestione dell'annullamento automatico (predefinita). Annullare il tablespace Come in Oracle, lo spazio tabella di annullamento di MySQL contiene log di annullamento per scopi di rollback. Per impostazione predefinita, questa opzione è impostata su OFF e viene indicata come deprecata per le release future di MySQL.
ASM Oracle Automatic Storage Management è una piattaforma il file system del database e il gestore del disco vengono eseguiti automaticamente da un configurato con ASM. Non supportata MySQL utilizza il termine motori di archiviazione per descrivere diverse implementazioni di gestione dei dati, ma non supporta Oracle ASM. Cloud SQL per MySQL supporta molte funzionalità che offrono l'automazione dello spazio di archiviazione, ad esempio aumenta lo spazio di archiviazione, le prestazioni e la scalabilità.
Tabelle/visualizzazioni Oggetti di database fondamentali creati dall'utente. Tabelle/visualizzazioni Identico a Oracle.
Viste materializzate Definiti con istruzioni SQL specifiche e possono essere aggiornati manualmente o automaticamente in base a configurazioni specifiche. Non supportato da MySQL Come soluzione alternativa, è possibile usare trigger/visualizzazioni al posto del metodo materializzato Oracle visualizzazioni.
Sequenza Generatore di valori unici Oracle. Incremento automatico MySQL non supporta le sequenze Oracle. utilizza la AUTO_INCREMENT come soluzione alternativa all'automazione funzionalità di generazione di sequenze.
Sinonimo Oggetti del database Oracle che fungono da identificatori alternativi per altri oggetti del database. Non supportato MySQL non supporta il sinonimo Oracle. Come soluzione alternativa, è possibile utilizzare le viste impostando le autorizzazioni appropriate.
Partizionamento Oracle fornisce molte soluzioni di partizionamento per la suddivisione di tabelle di grandi dimensioni in le parti gestite più piccole. Partizionamento MySQL ha un supporto per il partizionamento più limitato per migliorare le prestazioni, mantenendo al contempo le operazioni di gestione e manutenzione dei dati, come le partizioni Oracle.
Database flashback Funzionalità proprietaria di Oracle che può essere utilizzata per inizializzare un database Oracle a un momento precedente definito, consentendo di eseguire query o ripristinare i dati modificati o danneggiati per errore. Non supportata Per una soluzione alternativa, puoi usare Cloud SQL backup e recupero point-in-time per ripristinare lo stato precedente di un database (ad esempio, ripristinando prima di tabella drop).
sqlplus Interfaccia a riga di comando Oracle che consente di eseguire query e gestire l'istanza del database. mysql Interfaccia a riga di comando equivalente a MySQL per l'esecuzione di query e la gestione. Può essere collegato da qualsiasi client con le autorizzazioni appropriate a Cloud SQL.
PL/SQL Oracle ha esteso il linguaggio procedurale ad ANSI SQL. MySQL MySQL ha un proprio linguaggio procedurale esteso con sintassi e dell'implementazione e non ha nomi aggiuntivi per questa estensione lingua.
Pacchetto e corpo del pacchetto Funzionalità specifiche di Oracle per raggruppare stored procedure e funzioni sotto lo stesso riferimento logico. Non supportata MySQL supporta stored procedure e funzioni come singoli oggetti con l'allocazione delle risorse.
Procedure memorizzate e Utilizza PL/SQL per implementare la funzionalità del codice. Stored procedure e La creazione di funzioni e stored procedure è supportata da MySQL con la sua implementazione del linguaggio procedurale proprietario.
Trigger Oggetto Oracle utilizzato per controllare l'implementazione di DML nelle tabelle. Trigger Identico a Oracle.
PFILE/SPFILE I parametri a livello di database e di istanza Oracle sono conservati in un file binario chiamato SPFILE (nelle versioni precedenti, il nome PFILE), utilizzabile come file di testo per l'impostazione manualmente i parametri. Flag del database Cloud SQL per MySQL Puoi impostare o modificare i parametri Cloud SQL per MySQL tramite i flag del database utilità. Non puoi modificare i parametri del database in Cloud SQL per MySQL utilizzando l'interfaccia a riga di comando del client MySQL (ad esempio, mysql> SET GLOBAL ...). Puoi modificare questi parametri solo utilizzando il metodo per i flag di database.
SGA/PGA/AMM Parametri di memoria Oracle che controllano l'allocazione della memoria all'istanza database. INNODB_BUFFER_POOL_SIZE MySQL ha i propri parametri di memoria. Un parametro equivalente potrebbe essere INNODB_BUFFER_POOL_SIZE. In Cloud SQL per MySQL, questo parametro è predefinito dal tipo di istanza scelto e il valore cambia di conseguenza.
Cache dei risultati Riduce le operazioni di I/O SQL recuperando le righe dalla cache del buffer, che può essere gestita utilizzando i parametri e gli indizi del database a livello di sessione. Cache delle query Ha la stessa finalità di base della cache dei risultati di Oracle e può essere gestita a livello di database e di sessione.
Suggerimenti database Impatto controllato sulle istruzioni SQL che influiscono sul comportamento dell'ottimizzatore per ottenere un rendimento migliore. Oracle ha più di 50 diversi suggerimenti per i database. Suggerimenti per i database MySQL supporta un set limitato di hint di database rispetto a Oracle (suggerimenti di ottimizzazione e suggerimenti indice). Tieni presente che MySQL utilizza diversi suggerimenti, sintassi e nomi di database.
RMAN Utilità Oracle Recovery Manager. Utilizzato per eseguire il backup dei database con funzionalità estese per supportare più scenari di ripristino di emergenza e altro ancora (clonazione e così via). Backup Cloud SQL per MySQL Cloud SQL per MySQL offre due metodi per applicare il backup completo: backup automatici on demand.
Data Pump (EXPDP/IMPDP) Utilità di generazione dei dump Oracle che può essere utilizzata per molte funzionalità, ad esempio esportazione/importazione, backup del database (a livello di schema o oggetto), schema metadati, generare file SQL di schema e altro ancora.
mysqldump/mysqlimport
Utilità di dump (esportazione) MySQL che può essere collegata come client (da remoto) e generare un file di dump (SQL). In seguito, puoi comprimere il file di dump in Cloud Storage. L'utilità mysqldump è per solo nel passaggio di esportazione.
SQL*Loader Strumento che offre la possibilità di caricare dati da file esterni come file di testo, file CSV e altro ancora.
mysqlimport/
LOAD FILE INFILE
L'utilità mysqlimport consente di caricare testo o File CSV (Oracle supporta formati file aggiuntivi) in una tabella di database con una struttura corrispondente.
Data Guard Soluzione di disaster recovery di Oracle che utilizza un'istanza di standby, consentendo agli utenti di eseguire operazioni di tipo "READ" dall'istanza di standby. Alta disponibilità e disponibilità di Cloud SQL per MySQL replica Per ottenere il ripristino di emergenza o l'alta disponibilità, Cloud SQL per MySQL offre l'architettura della replica di failover e per le operazioni di sola lettura (separazione LETTURA/SCRITTURA) utilizzando il comando Replica.
Active Data Guard/Golden Gate Le soluzioni di replica principali di Oracle, che possono servire a più scopi, come come standby (RE), istanza di sola lettura, replica bidirezionale (multi-origine), data warehousing e altro ancora. Replica di lettura di Cloud SQL per MySQL Replica di lettura Cloud SQL per MySQL per implementare il clustering con separazione LETTURA/SCRITTURA. Attualmente, la configurazione multi-origine non è supportata, ad esempio Replica bidirezionale Golden Gate o eterogenea.
RAC Oracle Real Application Cluster. Soluzione di clustering di proprietà Oracle per offrendo disponibilità elevata mediante il deployment di più istanze di database con una singola unità di archiviazione. Non supportata L'architettura multi-origine non è ancora supportata in Google Cloud in Cloud SQL. Per ottenere un'architettura di clustering con separazione LETTURA/SCRITTURA e alta disponibilità, utilizza l'alta disponibilità e la replica di lettura di Cloud SQL.
Controllo della rete/del cloud (OEM) Software Oracle per la gestione e il monitoraggio dei database e altro in un formato di app web. Questo strumento è utile per i database per comprendere i carichi di lavoro elevati. Console Cloud SQL per MySQL, Cloud Monitoring Utilizza Cloud SQL per MySQL per il monitoraggio, tra cui orari dettagliati e grafici basati sulle risorse. Utilizza Cloud Monitoring anche per memorizzare metriche di monitoraggio MySQL specifiche e analisi dei log per funzionalità di monitoraggio avanzate.
RIPETI log Log delle transazioni Oracle costituiti da due (o più) definiti preallocati in cui sono archiviate le modifiche apportate ai dati man mano che si verificano. Lo scopo della ripetizione serve a proteggere il database in caso di errore dell'istanza. RIPETI log MySQL dispone anche di file di log di redo, che vengono utilizzati durante il recupero da arresto anomalo per correggere i dati scritti dal meccanismo dei log di redo delle transazioni incomplete.
Archiviare i log I log di archiviazione forniscono supporto per le operazioni di backup e replica e altro ancora. Oracle scrive sui log di archiviazione (se abilitati) dopo ogni opzione di ripetizione log operativa. binlog Implementazione MySQL della conservazione dei log delle transazioni. Utilizzato principalmente per scopi di replica (abilitato per impostazione predefinita con Cloud SQL).
File di controllo Il file di controllo Oracle contiene informazioni sul database, ad esempio file di dati, nomi e posizioni dei log di redo, il numero di sequenza del log corrente e informazioni sul checkpoint dell'istanza. MySQL L'architettura MySQL non include un file di controllo simile all'implementazione di Oracle. Questo viene controllato tramite i parametri MySQL e utilizzando il comando SHOW MASTER STATUS per visualizzare la posizione corrente del log binario.
SCN Oracle SCN (System Change Number) è il metodo principale per la gestione dei dati coerenza da parte di tutti i componenti di database Oracle per soddisfare l'ACID un modello di transazione. Numero di sequenza di log L'implementazione di MySQL per la coerenza del database utilizza l'LSN (Log Sequence Number).
AWR Oracle AWR (Automatic Workload Repository) è un report dettagliato che fornisce informazioni dettagliate sul rendimento dell'istanza del database Oracle ed è considerato uno strumento DBA per la diagnostica delle prestazioni.
performance_schema
MySQL non ha un report equivalente a Oracle AWR, ma raccoglie Dati sul rendimento raccolti da performance_schema. Una soluzione alternativa consiste nell'utilizzare le dashboard sul rendimento di MySQL Workbench.
DBMS_SCHEDULER
Utilità Oracle utilizzata per impostare e cronometrare i valori predefiniti operazioni aziendali.
EVENT_SCHEDULER
Funzionalità di scheduler interno del database MySQL. Per impostazione predefinita, questa funzionalità è impostata su OFF.
Crittografia trasparente dei dati Cripta i dati archiviati sui dischi come protezione dei dati at-rest. Advanced Encryption Standard di Cloud SQL Cloud SQL per MySQL utilizza la versione Advanced a 256 bit Encryption Standard (AES-256) per la protezione della sicurezza dei dati at-rest. nonché per i dati in transito
Compressione avanzata Per migliorare l'ingombro del database, ridurre i costi di archiviazione e migliorare le prestazioni del database, Oracle fornisce funzionalità di compressione avanzata dei dati (tabelle/indici). Compressione delle tabelle InnoDB MySQL offre la compressione delle tabelle creando una tabella utilizzando il parametro ROW_FORMAT impostato su COMPRESSED. Scopri di più sull'indice compressa.
Sviluppatore SQL Interfaccia utente grafica SQL gratuita di Oracle per la gestione ed esecuzione di istruzioni SQL e PL/SQL (può essere utilizzata anche con MySQL). MySQL Workbench GUI SQL gratuita di MySQL per la gestione e l'esecuzione di codice SQL e MySQL istruzioni.
Log degli avvisi Log principale Oracle per operazioni ed errori generali del database. Log degli errori di MySQL Utilizza Logs Viewer di Cloud Logging per visualizzare i log degli errori di MySQL
Tabella DUAL Tabella speciale Oracle utilizzata principalmente per recuperare i valori delle pseudo colonne come SYSDATE o USER Tabella DUAL MySQL consente di specificare DUAL come tabella negli statement SQL che non dipendono dai dati di nessuna tabella.
Tabella esterna Oracle consente agli utenti di creare tabelle esterne con i dati di origine su file esterni al database. Non supportato. Nessun equivalente diretto.
Listener Processo di rete Oracle incaricato di ascoltare le connessioni al database in arrivo Reti autorizzate Cloud SQL MySQL accetta le connessioni da origini remote una volta consentite nella pagina di configurazione delle reti autorizzate di Cloud SQL
TNSNAMES File di configurazione di rete Oracle che definisce gli indirizzi del database per stabilire connessioni utilizzando gli alias di connessione. Non esiste MySQL accetta connessioni esterne che utilizzano l'istanza Cloud SQL nome della connessione o privato/pubblico Indirizzo IP. Cloud SQL Proxy è un metodo di accesso sicuro aggiuntivo per connettersi a Cloud SQL per MySQL (istanze di seconda generazione) senza dover consentire indirizzi IP specifici o configurare SSL.
Porta predefinita dell'istanza 1521 Porta predefinita dell'istanza 3306
Link al database Oggetti schema Oracle che possono essere utilizzati per interagire con dispositivi locali/remoti di oggetti di database. Non supportata Per una soluzione alternativa, utilizza il codice dell'applicazione per connetterti e recuperare i dati da un database remoto.

Differenze nella terminologia tra Oracle 12c e Cloud SQL per MySQL

Oracle 12c Descrizione Cloud SQL per MySQL Differenze principali
Istanza La funzionalità multi-tenant introdotta nell'istanza Oracle 12c che può contenere come database modulare (PDB), a differenza di Oracle 11g, in cui un'istanza Oracle può ottenere un solo database. Istanza Cloud SQL per MySQL può contenere più database con convenzioni di denominazione diverse che forniscono più servizi e applicazioni.
CDB Un database contenitore multi-tenant (CDB) può supportare uno o più PDB, mentre è possibile creare oggetti globali CDB (che interessano tutti i PDB), ad esempio i ruoli. Istanza MySQL L'istanza MySQL è paragonabile al CDB Oracle. Entrambi forniscono un sistema per i PDB.
PDB I PDB (database collegabili) possono essere utilizzati per isolare servizi e applicazioni l'uno dall'altro e possono essere usati come raccolta portabile di schemi. Database/schemi MySQL Un database MySQL può gestire più servizi e applicazioni, molti utenti del database.
Sequenze di sessione A partire da Oracle 12c, le sequenze possono essere create a livello di sessione (restituisce valori univoci solo all'interno di una sessione) o a livello globale (ad esempio, quando si utilizzano tabelle temporanee). Incremento
automatico
Le sequenze non sono supportate da MySQL, ma gli utenti possono utilizzare AUTO_INCREMENT come soluzione alternativa.
Colonne relative all'identità Il tipo IDENTITY di Oracle 12c genera una sequenza e la associa a una colonna della tabella senza dover creare manualmente un oggetto sequenza separato. Incremento automatico Utilizza la proprietà della colonna AUTO_INCREMENT per simulare la stessa come la colonna di identità Oracle 12c (una soluzione alternativa funzionalità di generazione automatica delle sequenze).
Sharding Lo sharding è una soluzione in cui un database Oracle viene partizionato in più database più piccoli (shards) per consentire la scalabilità, disponibilità e distribuzione geografica degli ambienti OLTP. Non supportata (come funzionalità) MySQL non dispone di una funzionalità dello sharding equivalente. Lo sharding può essere implementato utilizzando MySQL (come piattaforma di dati) con un livello di applicazione di supporto.
Database in memoria Oracle fornisce una suite di funzionalità che possono migliorare le prestazioni del database per i carichi di lavoro OLTP e misti. Non supportato MySQL non ha una funzionalità equivalente. In alternativa, puoi utilizzare Memorystore.
Oscuramento Nell'ambito delle funzionalità di sicurezza avanzate di Oracle, l'oscuramento può il mascheramento delle colonne per impedire la visualizzazione di dati sensibili da parte degli utenti diverse applicazioni. Non supportato MySQL non ha una funzionalità equivalente.

Funzionalità

Sebbene i database Oracle 11g/12c e Cloud SQL per MySQL funzionino diverse architetture (infrastrutturale e linguaggi procedurali estesi), condividono gli stessi aspetti fondamentali di un database relazionale. Supportano oggetti di database, carichi di lavoro di concorrenza multiutente e transazioni (compatibilità ACID). Gestiscono inoltre le contese per i blocchi che supportano più livelli di isolamento (in base alle esigenze aziendali) e soddisfano i requisiti delle applicazioni in modo continuativo come un data store relazionale per le operazioni di elaborazione delle transazioni online (OLTP) e di analisi online (OLAP).

La sezione seguente fornisce una panoramica di alcune delle principali differenze funzionali tra Oracle e Cloud SQL per MySQL. In alcuni casi, in cui necessaria, la sezione include confronti tecnici dettagliati.

Creazione e visualizzazione di database esistenti

Oracle 11g/12c Cloud SQL per MySQL 5.7
In genere, crei database e visualizzi quelli esistenti usando lo strumento Database Utility Creation Assistant (DBCA). o database creati manualmente richiedono di specificare parametri aggiuntivi:
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;
Utilizza un'istruzione nel formato CREATE DATABASE Name;, come in questo esempio:
mysql> CREATE DATABASE MYSQLDB;
Oracle 12c Cloud SQL per MySQL 5.7
In Oracle 12c, puoi creare PDB dal seed, da un modello di database di container (CDB) o clonando un PDB da un PDB esistente. Utilizza diversi parametri:

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/';
Utilizza un'istruzione del tipo CREATE DATABASE Name;, come показано в этом примере:
mysql> CREATE DATABASE MYSQLDB;
Elenca tutti i PDB:
SQL> SHOW is PDBS;
Elenca tutti i database esistenti:
mysql> SHOW DATABASES;
Collegati a un PDB diverso:
SQL> ALTER SESSION SET CONTAINER=pdb;
Connettiti a un database diverso:
mysql> use databaseName;
In alternativa:
mysql> \u databaseName;
Apri o chiudi un PDB specifico (aperto/sola lettura):
SQL> ALTER PLUGGABLE DATABASE pdb CLOSE;
Non supportata per un singolo database.

Tutti i database si trovano nella stessa istanza Cloud SQL per MySQL. quindi tutti i database sono attivi o inattivi.

Gestione di un database tramite la console Cloud SQL

  • Nella console Google Cloud, vai a Storage > SQL > Instance > Databases > View/Create.

    Pagina della console per la creazione/visualizzazione di un database MySQL.

Database e schemi di sistema

Le istanze di database Oracle ottengono determinati schemi di sistema, ad esempio SYS/SYSTEM, con il ruolo di proprietario degli oggetti di metadati del database.

Al contrario, MySQL contiene diversi database di sistema (a differenza degli schemi Oracle), che forniscono il livello di metadati (tieni presente che i nomi dei database sono sensibili alle maiuscole):

  • Mysql

    Il database di sistema mysql contiene tabelle che archiviano le informazioni richieste dal server MySQL durante l'esecuzione, come segue:

    • Tabelle dei privilegi di sistema
    • Tabelle di informazioni sugli oggetti
    • Registra tabelle di sistema
    • Tabelle del sistema di replica
    • Tabelle di sistema dello strumento di ottimizzazione
    • Tabelle di sistema dei fusi orari
  • INFORMATION_SCHEMA

    INFORMATION_SCHEMA funge da dizionario principale dei dati del database catalogo di sistema. Fornisce l'accesso ai metadati del database, ovvero alle informazioni interne del database sul server MySQL, come il nome di un database o di una tabella, il tipo di dati della colonna e i privilegi di accesso.

  • performance_schema

    Un database di sistema che raccoglie informazioni statistiche sull'istanza MySQL. Il database di sistema performance_schema contiene le metriche per il monitoraggio dell'esecuzione del server a un livello molto granulare. Lo schema fornisce un'ispezione dell'esecuzione interna del server in fase di esecuzione e può fungere da fonte principale per analizzare i problemi di prestazioni del database.

    performance_schema non è abilitato per impostazione predefinita con Cloud SQL per MySQL. Per abilitare lo schema, utilizza la classe gcloud a strumento a riga di comando:

    gcloud sql instances patch INSTANCE_NAME --database-flags performance_schema=on
    

    Per completare questa configurazione, devi riavviare l'istanza. Non puoi modificare il parametro --database-flags utilizzando Pagina dei flag di database Cloud SQL per MySQL nella console Google Cloud.

  • sys

    Lo schema sys esiste da MySQL versione 5.5.7 e contiene principalmente visualizzazioni nelle tabelle di sistema performance_schema. Questo schema fornisce un insieme di visualizzazioni più leggibili che riassumono i dati di performance_schema in un formato più facilmente comprensibile. Lo schema sys contiene anche diverse procedure e funzioni memorizzate per eseguire operazioni come la configurazione di performance_schema e la generazione di report di diagnostica.

    Lo schema sys mostra informazioni solo quando lo schema performance_schema sia abilitato.

Visualizzazione delle visualizzazioni dinamiche di sistema e dei metadati

Questa sezione fornisce una panoramica di alcune delle tabelle di metadati più comuni e le viste dinamiche di sistema utilizzate in Oracle e nei relativi oggetti di database in Cloud SQL per MySQL versione 5.7.

Oracle fornisce centinaia di tabelle e visualizzazioni di metadati di sistema, mentre solo MySQL contiene diverse decine. Per ogni caso, può essere presente più di un oggetto database, ciascuno con uno scopo specifico.

Oracle fornisce diversi livelli di oggetti di metadati, ognuno dei quali richiede diversi privilegi:

  • USER_TableName: può essere visualizzato dall'utente.
  • ALL_TableName: può essere visualizzato da tutti gli utenti.
  • DBA_TableName: può essere visualizzato solo dagli utenti con il privilegio DBA, ad esempio SYS e SYSTEM.

Per le visualizzazioni dinamiche del rendimento, Oracle utilizza i prefissi V$ e GV$. Affinché un utente MySQL possa visualizzare le tabelle o le viste dei metadati di sistema, deve disporre di autorizzazioni specifiche per gli oggetti di sistema. Per ulteriori informazioni sulla sicurezza, vedi il Sicurezza .

Tipo di metadati Tabella/visualizzazione Oracle Tabella/visualizzazione/show MySQL (CMD di MySQL)
Sessioni aperte
V$SESSION
SHOW PROCESSLIST
INFORMATION_SCHEMA.PROCESSLIST
performance_schema.threads
Transazioni in esecuzione
V$TRANSACTION
INFORMATION_SCHEMA.INNODB_TRX
Oggetti di database
DBA_OBJECTS
Non supportati. Esegui una query su ciascun oggetto in base al tipo.
Tabelle
DBA_TABLES
INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.INNODB_SYS_TABLES
Colonne della tabella
DBA_TAB_COLUMNS
INFORMATION_SCHEMA.COLUMNS
INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
Privilegi per tabelle e colonne
TABLE_PRIVILEGES
DBA_COL_PRIVS
ROLE_TAB_PRIVS
INFORMATION_SCHEMA.COLUMN_PRIVILEGES
Partizioni
DBA_TAB_PARTITIONS
DBA_TAB_SUBPARTITIONS
INFORMATION_SCHEMA.PARTITIONS
SHOW CREATE TABLE TableName
SHOW TABLE STATUS LIKE 'TableName'
Viste
DBA_VIEWS
INFORMATION_SCHEMA.VIEWS
Vincoli
DBA_CONSTRAINTS
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
SHOW CREATE TABLE TableName
Indici
DBA_INDEXES
DBA_PART_INDEXES
INFORMATION_SCHEMA.STATISTICS
INFORMATION_SCHEMA.INNODB_SYS_INDEXES
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
Viste materializzate
DBA_MVIEWS
Non supportata
Stored procedure
DBA_PROCEDURES
INFORMATION_SCHEMA.ROUTINES
Funzioni memorizzate
DBA_PROCEDURES
INFORMATION_SCHEMA.ROUTINES
Trigger
DBA_TRIGGERS
INFORMATION_SCHEMA.TRIGGERS
Utenti
DBA_USERS
mysql.user
Privilegi utente
DBA_SYS_PRIVS
DBA_ROLE_PRIVS
SESSION_PRIVS
INFORMATION_SCHEMA.USER_PRIVILEGES
Job/
Pianificazione
DBA_JOBS
DBA_JOBS_RUNNING
DBA_SCHEDULER_JOBS
DBA_SCHEDULER_JOB_LOG
INFORMATION_SCHEMA.EVENTS
Tablespace
DBA_TABLESPACES
INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
File di dati
DBA_DATA_FILES
INFORMATION_SCHEMA.FILES
INFORMATION_SCHEMA.INNODB_SYS_DATAFILES
Sinonimi
DBA_SYNONYMS
Non supportata
Sequenze
DBA_SEQUENCES
Non supportata
Link al database
DBA_DB_LINKS
Non supportata
Statistiche
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
Serrature
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
Parametri del database
V$PARAMETER
V$NLS_PARAMETERS
SHOW PARAMETER Param
performance_schema.global_variables
performance_schema.session_variables
INFORMATION_SCHEMA.CHARACTER_SETS
SHOW VARIABLES LIKE '%variable%';
Segmenti
DBA_SEGMENTS
La tabella dei segmenti non è supportata. Esegui query su ogni oggetto in base al tipo.
Ruoli
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
Cronologia delle sessioni
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
Versione
V$VERSION
sys.version
SHOW VARIABLES LIKE '%version%';
Eventi di attesa
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
Ottimizzazione SQL e
analizzare
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%';
Istanza
ottimizzazione della memoria
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

Motori di archiviazione MySQL

A differenza di molti altri RDBMS (incluso Oracle), MySQL può funzionare in modo polimorfico grazie al suo sistema di archiviazione pluggable. Il motore di archiviazione modulare MySQL consente a un amministratore di database di selezionare un'istanza di archiviazione specializzata per una particolare esigenza dell'applicazione.

Il componente del motore di archiviazione collegabile MySQL nel server di database MySQL è responsabile dell'esecuzione delle operazioni di I/O dei dati, inclusa l'archiviazione dei dati nei dischi o nei buffer di memoria. L'architettura del motore di archiviazione modulare offre un insieme standard di servizi di gestione e assistenza comuni tutti i motori di archiviazione sottostanti.

A partire dalla versione 5.5 di MySQL, il motore di archiviazione predefinito è il motore di archiviazione InnoDB, mentre InnoDB gestisce anche le tabelle temporanee. Puoi configurare gli engine di archiviazione durante la tabella CREATE o ALTER, come nell'esempio seguente:

mysql> SHOW CREATE TABLE JOBS \G;

L'output è il seguente:

*************************** 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

Per ulteriori informazioni, consulta MySQL diversi motori di archiviazione.
Puoi visualizzare la configurazione del motore di archiviazione utilizzando la query seguente:

mysql> SHOW VARIABLES LIKE '%storage%';

L'output è simile al seguente:

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

Puoi visualizzare tutti i motori di archiviazione integrati:

mysql> SHOW STORAGE ENGINES;

L'output è simile al seguente:

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

Tieni presente che InnoDB è il motore di archiviazione predefinito ed è l'unico motore di archiviazione che supporta le transazioni (conforme ad ACID). Perché InnoDB è l'unico spazio di archiviazione che approssima la funzionalità Oracle, ti consigliamo di utilizzare InnoDB in qualsiasi momento. Cloud SQL per MySQL Seconda generazione supporta solo il motore di archiviazione InnoDB.

Parametri di sistema

Sia i database Oracle che Cloud SQL per MySQL possono essere configurati in modo specifico per ottenere determinate funzionalità oltre la configurazione predefinita. Per modificare i parametri di configurazione in Oracle, sono necessarie alcune autorizzazioni di amministrazione (principalmente le autorizzazioni utente SYS/SYSTEM).

Di seguito è riportato un esempio di modifica della configurazione di Oracle mediante l'istruzione ALTER SYSTEM. In questo esempio, l'utente modifica il valore tentativi per accessi non riusciti" solo a livello di configurazione spfile (con la modifica valida solo dopo il riavvio):

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

Nel prossimo esempio, l'utente chiede semplicemente di visualizzare il parametro Oracle valore:

SQL> SHOW PARAMETER SEC_MAX_FAILED_LOGIN_ATTEMPTS;

L'output è simile al seguente:

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

La modifica del parametro Oracle funziona in tre ambiti:

  • SPFILE: le modifiche ai parametri vengono scritte in spfile di Oracle, con un riavvio dell'istanza necessario per l'applicazione del parametro.
  • MEMORIA: le modifiche dei parametri vengono applicate solo nel livello di memoria. mentre non è consentita la modifica di parametri statici.
  • BOTH: le modifiche dei parametri vengono applicate in entrambi i server e nella memoria dell'istanza, dove non è possibile modificare i parametri statici è consentito.

Flag di configurazione di Cloud SQL per MySQL

Puoi modificare i parametri di sistema di Cloud SQL per MySQL utilizzando i flag di configurazione nella console Google Cloud, in gcloud CLI o in CURL. Consulta le Elenco completo di tutti i parametri supportate da Cloud SQL per MySQL.

I parametri MySQL possono essere suddivisi in diversi ambiti:

  • Parametri dinamici: possono essere modificati in fase di esecuzione.
  • Parametri statici: richiedono il riavvio di un'istanza per essere applicati.
  • Parametri globali: avranno un effetto globale su tutti i parametri attuali e sessioni future.
  • Parametri di sessione: possono essere modificati a livello di sessione per i solo per la durata della sessione corrente, isolata dalle altre sessioni.

Il parametro di memoria Cloud SQL per MySQL innodb_buffer_pool_size (uno dei parametri fondamentali da considerare durante la pianificazione e la definizione delle dimensioni di un ambiente MySQL) è determinato dal tipo di istanza e non può essere modificato utilizzando i flag di configurazione o qualsiasi altro metodo, ad esempio:

  • Il tipo di istanza db-n1-standard-1 ha 1,4 GB di allocazione della memoria.
  • Il tipo di istanza db-n1-highmem-8 ha 38 GB di allocazione della memoria.

Esempi di modifica dei parametri Cloud SQL per MySQL

Console

Utilizza la console Google Cloud per attivare il parametro event_scheduler.

  1. Vai alla pagina Modifica istanza di Cloud Storage.

    Vai a Modifica istanza

  2. In Contrassegni, fai clic su Aggiungi elemento e cerca event_scheduler come. nello screenshot seguente.

    Modifica l'istanza dello scheduler di eventi nella console.

gcloud

  • Utilizza gcloud CLI per abilitare il parametro event_scheduler.

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

    L'output è il seguente:

    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)?
    

Sessione MySQL

Disattiva la modalità AUTOCOMMIT a livello di sessione. Questa modifica rimane per la sessione corrente e blocchi per la durata della sessione.

  1. Mostra variabili come autocommit:

    mysql> SHOW VARIABLES LIKE '%autoc%';
    

    Verrà visualizzato il seguente output, dove autocommit è ON:

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

    mysql> SET autocommit=off;
    
  3. Mostra variabili come autocommit:

    mysql> SHOW VARIABLES LIKE '%autoc%';
    

    Viene visualizzato il seguente output, dove autocommit è OFF:

    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | OFF   |
    +---------------+-------+
    

Livelli di transazione e isolamento

Questa sezione descrive le principali differenze tra Oracle e Cloud SQL per MySQL pertinente al livello di transazione e isolamento migrazioni di Kubernetes.

Modalità di commit

Oracle funziona per impostazione predefinita in modalità non automatico, in cui ogni transazione DML deve da determinare con istruzioni COMMIT/ROLLBACK. Uno dei principi fondamentali tra Oracle e MySQL è che MySQL funziona per impostazione predefinita autocommit e ogni transazione DML viene impegnata automaticamente con che specifica le istruzioni COMMIT/ROLLBACK.

Per forzare MySQL a funzionare in una modalità non di commit automatico, sono disponibili diverse opzioni:

  • Quando gestisci le transazioni nell'ambito delle stored procedure, utilizza la clausola START TRANSACTION per inserire la stessa modalità transazionale di Oracle.
  • Utilizza la seguente istruzione per impostare il parametro di sistema autocommit su OFF a livello di sessione e utilizza esplicitamente le istruzioni COMMIT/ROLLBACK nelle transazioni DML:

    mysql> SET autocommit=off;
    

Livelli di isolamento

Lo standard SQL ANSI/ISO (SQL92) definisce quattro livelli di isolamento. Ogni livello offre un approccio diverso per la gestione dell'esecuzione simultanea del database transactions:

  • Lettura non confermata: una transazione attualmente in fase di elaborazione può vedere i dati non confermati creati dall'altra transazione. Se viene eseguito un rollback, tutti i dati vengono ripristinati allo stato precedente.
  • Lettura impegnata: una transazione vede solo le modifiche ai dati che sono state committed; le modifiche di cui non è stato eseguito il commit ("letture errate") non sono possibili.
  • Lettura ripetibile: una transazione può visualizzare le modifiche apportate dall'altro solo dopo che entrambe le transazioni hanno emesso un COMMIT o entrambe sono eseguito il rollback.
  • Serializzabile:il livello di isolamento più rigido e massimo. Questo livello blocca tutti i record a cui viene eseguito l'accesso e la risorsa in modo che i record non possano essere aggiunti alla tabella.

I livelli di isolamento delle transazioni gestiscono la visibilità dei dati modificati come visto da altre transazioni in corso. Inoltre, quando agli stessi dati accede per transazioni simultanee, il livello selezionato di isolamento delle transazioni influisce come interagiscono le diverse transazioni.

Oracle supporta i seguenti livelli di isolamento:

  • Lettura confermata (valore predefinito)
  • Serializable
  • Sola lettura (non fa parte dello standard SQL ANSI/ISO (SQL92)

Controllo della concorrenza multiversione (MVCC) di Oracle:

  • Oracle utilizza il meccanismo MVCC per fornire coerenza di lettura automatica nell'intero database e in tutte le sessioni.
  • Oracle si basa sul numero di modifica di sistema (SCN) della transazione corrente per ottenere una vista coerente del database. Pertanto, tutte le query del database restituiscono solo i dati committati rispetto all'SCN al momento dell'esecuzione della query.
  • I livelli di isolamento possono essere modificati a livello di transazione e sessione.

Ecco un esempio di impostazione dei livelli di isolamento:

-- 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 per MySQL, ad esempio Oracle, supporta le seguenti quattro livelli di isolamento delle transazioni specificato nello standard ANSI SQL:92:

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ (default)
  • SERIALIZABLE

Il livello di isolamento predefinito di Cloud SQL per MySQL è REPEATABLE READ. Qualsiasi i nuovi dati saranno disponibili per entrambi solo dopo che entrambe le transazioni emettono un Comando COMMIT. Questi livelli di isolamento possono essere modificati a livello di SESSION e GLOBAL (la modifica a livello globale è attualmente in versione beta e utilizza i flag di configurazione).

Per verificare i livelli di isolamento attuali sia a livello di SESSION che di GLOBAL, utilizza la seguente istruzione:

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

L'output è il seguente:

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

Puoi modificare la sintassi del livello di isolamento nel seguente modo:

SET [SESSION] TRANSACTION ISOLATION LEVEL [READ WRITE | READ ONLY]
| REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE]

Inoltre puoi modificare il livello di isolamento a livello di SESSION:

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

       -- Verify

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

L'output è il seguente:

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

Struttura delle transazioni Cloud SQL per MySQL

Sintassi di Transazioni:

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}

Le transazioni possono essere implementate con START TRANSACTION o BEGIN.

L'opzione WITH CONSISTENT SNAPSHOT avvia una transazione READ coerente, che è in pratica la stessa cosa che emettere un START TRANSACTION, seguito da un SELECT da qualsiasi tabella. La clausola WITH CONSISTENT SNAPSHOT che avvia un READ coerente (un'operazione READ che utilizza le informazioni sulle istantanee per presentare risultati di query in base a un determinato momento) non modifica il livello di isolamento delle transazioni ed è supportata solo dal livello di isolamento REPEATABLE READ.

Un READ coerente utilizza le informazioni dello snapshot per rendere disponibili i risultati della query in base a un determinato momento, indipendentemente dalle modifiche eseguite transazioni. Se i dati per cui è stata eseguita la query sono stati modificati da un'altra transazione, i dati originali vengono ricostruiti utilizzando il log di annullamento. In questo modo eviterai problemi di blocco che potrebbero ridurre la concorrenza.

Con il livello di isolamento REPEATABLE READ, lo snapshot si basa sull'ora in cui che viene eseguita la prima operazione READ. Con il livello di isolamento READ COMMITTED, lo snapshot viene reimpostato sull'ora di ogni operazione READ coerente.

Ecco un esempio di impostazione del livello di isolamento e transazione:

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;