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 ed esecuzione delle migrazioni dei database Oracle® 11g/12c a Cloud SQL per MySQL versione 5.7, istanze di seconda generazione. La serie include le seguenti parti:

Terminologia

Questa sezione illustra 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 le versioni Oracle 11g e 12c a causa di differenze di architettura (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 è considerato una singola istanza (il nome del database è identico al nome dell'istanza). Database Uno o più database servono 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 database, mentre gli oggetti del database vengono creati in un determinato schema/database.
User Identità dello schema perché entrambi sono proprietari di oggetti database, ad esempio istanza → database → schemi/utenti → oggetti database. User Un utente del database con autorizzazioni specifiche per connettere o modificare gli oggetti del database su schemi/database specifici, ad esempio istanza → database/schemi → oggetti del database.
Role Set definito di autorizzazioni di database che possono essere collegate come gruppo e assegnate 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 (LETTURA/SCRITTURA e così via).
Utenti amministratore/SYSTEM Utenti amministratori Oracle con il massimo livello di accesso:
SYS
SYSTEM
Super user Una volta disegnato, Cloud SQL per MySQL ha l'utente root@'%' (che può connettersi da qualsiasi host) e un utente aggiuntivo chiamato mysql.sys, che può connettersi solo da localhost.
Dizionario/metadati Oracle utilizza le seguenti tabelle di metadati:
USER_TableName
ALL_TableName
DBA_TableName
Dizionario/metadati MySQL utilizza diversi database/schemi per i dizionari/metadati:
MYSQL
INFORMATION_SCHEMA
PERFORMANCE_SCHEMA
SYS
Ciascuno di questi database è anche un database di sistema e viene creato con ogni implementazione di Cloud SQL per MySQL.
Visualizzazioni dinamiche del sistema Visualizzazioni dinamiche Oracle:
V$ViewName
Visualizzazioni dinamiche del sistema Le visualizzazioni dinamiche di 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 tablespace può contenere uno o più file di dati. Spazio dati 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 spazio tabella con un file di dati allocato, quindi la creazione di una nuova tabella collegata allo spazio tabella appena creato. Tieni presente che le impostazioni di configurazione dello spazio tabella, come le dimensioni e i limiti, vengono impostate utilizzando i parametri del database e non durante la creazione dello spazio tabella.
File di dati Gli elementi fisici di un database Oracle che contengono i dati e sono definiti in un tablespace specifico.

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 il parametro innodb_file_per_table con il valore "ON" (predefinito); questa configurazione genera un nuovo file di dati per ogni tabella e un tablespace dedicato.

I file di dati MySQL utilizzano i file .ibd (dati) e .frm (metadati).
Spazio tabella di sistema Contiene gli oggetti delle tabelle e delle viste del dizionario di dati per l'intero database Oracle. Spazio tabella di sistema Come in Oracle, contiene le tabelle di dizionario/metadati. Memorizzati nello spazio tabella innodb_system associato al file di dati ibdata1.
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 menzionata come deprecata per le release future di MySQL.
ASM Oracle Automatic Storage Management è un gestore di dischi e un file system di database integrato e ad alte prestazioni, eseguito automaticamente da un database Oracle configurato con ASM. Non supportato 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 forniscono l'automazione dello spazio di archiviazione, come gli incrementi automatici dello 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 utilizzare trigger/viste anziché viste materializzate di Oracle.
Sequenza Generatore di valori univoci Oracle. Incremento automatico MySQL non supporta le sequenze Oracle. Utilizza AUTO_INCREMENT come soluzione alternativa alla funzionalità di generazione automatica delle sequenze.
Sinonimi 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 suddividere le tabelle di grandi dimensioni in 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 supportato Come soluzione alternativa, puoi utilizzare i backup di Cloud SQL e il recupero point-in-time per ripristinare un database a uno stato precedente (ad esempio, prima dell'eliminazione di una tabella).
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 query e gestione. Può essere collegato da qualsiasi client con le autorizzazioni appropriate a Cloud SQL.
PL/SQL Oracle ha esteso il linguaggio procedurale a ANSI SQL. MySQL MySQL ha un proprio linguaggio procedurale esteso con sintassi e implementazione diverse e non ha nomi aggiuntivi per questo linguaggio esteso.
Pacchetto e corpo del pacchetto Funzionalità specifica di Oracle per raggruppare procedure e funzioni archiviate sotto lo stesso riferimento logico. Non supportato MySQL supporta le stored procedure e le funzioni come singoli oggetti con allocazione di gruppo.
Funzioni e stored procedure Utilizza PL/SQL per implementare la funzionalità del codice. Funzioni e stored procedure 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 istanza e di database di Oracle vengono conservati in un file binario chiamato SPFILE (nelle versioni precedenti il file si chiamava PFILE), che può essere utilizzato come file di testo per impostare i parametri manualmente. Flag del database Cloud SQL per MySQL Puoi impostare o modificare i parametri di Cloud SQL per MySQL tramite l'utilità flag di database. 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 l'utilità dei 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 per i 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 insieme limitato di suggerimenti per il database rispetto a Oracle (suggerimenti per l'ottimizzatore e suggerimenti per gli indici). 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 on demand e automatici.
Data Pump (EXPDP/IMPDP) Utilità di generazione di dump Oracle che può essere utilizzata per molte funzionalità, come esportazione/importazione, backup del database (a livello di schema o oggetto), metadati dello schema, generazione di file SQL dello 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 un secondo momento, puoi comprimere il file dump e spostarlo in Cloud Storage. L'utilità mysqldump è solo per il passaggio di esportazione.
SQL*Loader Strumento che consente 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 file di testo o CSV (Oracle supporta formati di file aggiuntivi) in una tabella di database con una struttura corrispondente.
Data Guard Soluzione di ripristino di emergenza di Oracle che utilizza un'istanza di standby, consentendo agli utenti di eseguire operazioni di tipo "READ" dall'istanza di standby. Repliche e disponibilità elevata di Cloud SQL per MySQL Per realizzare 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 la replica di lettura.
Active Data Guard/Golden Gate Le principali soluzioni di replica di Oracle, che possono avere più scopi, ad esempio come standby (RE), istanze di sola lettura, replica bidirezionale (multi-source), data warehousing e altro ancora. Replica di lettura Cloud SQL per MySQL Replica di lettura Cloud SQL per MySQL per implementare il clustering con separazione LETTURA/SCRITTURA. Al momento, non è supportata la configurazione multi-origine, come la replica bidirezionale Golden Gate o la replica eterogenea.
RAC Oracle Real Application Cluster. Soluzione di clustering proprietaria di Oracle per fornire alta disponibilità tramite il deployment di più istanze di database con una singola unità di archiviazione. Non supportato L'architettura multi-source non è ancora supportata in Google Cloud 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 di database e altri servizi correlati in formato app web. Questo strumento è utile per l'analisi del database in tempo reale per comprendere i carichi di lavoro elevati. Console Cloud SQL per MySQL, Cloud Monitoring Utilizza Cloud SQL per MySQL per il monitoraggio, inclusi grafici dettagliati in base al tempo e alle risorse. Utilizza Cloud Monitoring anche per memorizzare metriche di monitoraggio MySQL specifiche e analisi dei log per funzionalità di monitoraggio avanzate.
Log REDO Log delle transazioni Oracle costituiti da due o più file definiti preallocati che archiviano tutte le modifiche dei dati man mano che si verificano. Lo scopo del log di redo è proteggere il database in caso di guasto dell'istanza. Log REDO 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 archiviati forniscono supporto per le operazioni di backup e replica e altro ancora. Oracle scrive nei log di archivio (se abilitati) dopo ogni operazione di trasferimento del log di redo. binlogs Implementazione di 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 L'SCN (System Change Number) di Oracle è il metodo principale per mantenere la coerenza dei dati da parte di tutti i componenti del database Oracle al fine di soddisfare il modello ACID delle transazioni. Numero di sequenza del 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 dispone di un report equivalente ad AWR di Oracle, ma raccoglie i dati sulle prestazioni raccolti da performance_schema. Una soluzione alternativa consiste nell'utilizzare le dashboard sul rendimento di Workbench.
DBMS_SCHEDULER
Utilità Oracle utilizzata per impostare e temporizzare operazioni predefinite.
EVENT_SCHEDULER
Funzionalità di pianificatore 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 l'Advanced Encryption Standard (AES-256) a 256 bit per la protezione della sicurezza dei dati a riposo, 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ù sulla compressione dell'indice.
SQL Developer 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 Interfaccia utente grafica SQL gratuita di MySQL per gestire ed eseguire istruzioni di codice SQL e MySQL.
Log degli avvisi Log principale di Oracle per errori e operazioni 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 utilizzando il nome di connessione dell'istanza Cloud SQL o l'indirizzo IP privato/pubblico. 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 dello schema Oracle che possono essere utilizzati per interagire con gli oggetti del database locale/remoto. Non supportato 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 più database come database modulare (PDB), diversamente da Oracle 11g, dove un'istanza Oracle può ottenere un solo database. Istanza Cloud SQL per MySQL può contenere più database con nomi diversi che servono 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 livello di sistema per i PDB.
PDB I database pluggable (PDB) possono essere utilizzati per isolare i servizi e le applicazioni tra loro e possono essere utilizzati come raccolta portatile di schemi. Database/schemi MySQL Un database MySQL può supportare più servizi e applicazioni, nonché molti utenti di database.
Sequenze di sessioni 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 la proprietà della colonna AUTO_INCREMENT come soluzione alternativa.
Colonne di 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 funzionalità della colonna di identità di Oracle 12c (una soluzione alternativa alla funzionalità di generazione automatica di sequenze).
Sharding L'implementazione di sharding di Oracle è una soluzione in cui un database Oracle viene suddiviso in più database più piccoli (shard) per consentire scalabilità, disponibilità e distribuzione geografica per gli ambienti OLTP. Non supportato (come funzionalità) MySQL non dispone di una funzionalità di suddivisione 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ò eseguire il mascheramento delle colonne per impedire la visualizzazione di dati sensibili da parte di utenti e applicazioni. Non supportato MySQL non ha una funzionalità equivalente.

Funzionalità

Sebbene i database Oracle 11g/12c e Cloud SQL per MySQL funzionino su architetture diverse (infrastruttura 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 corso come un datastore 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, se necessario, la sezione include confronti tecnici dettagliati.

Creazione e visualizzazione di database esistenti

Oracle 11g/12c Cloud SQL per MySQL 5.7
In genere, crei i database e visualizzi quelli esistenti utilizzando l'utilità Oracle Database Creation Assistant (DBCA). I database o le istanze creati manualmente richiedono la specifica di 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 del tipo 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;
Connettiti a un altro PDB:
SQL> ALTER SESSION SET CONTAINER=pdb;
Connettiti a un altro database:
mysql> use databaseName;
Oppure:
mysql> \u databaseName;
Apri o chiudi un PDB specifico (aperto/sola lettura):
SQL> ALTER PLUGGABLE DATABASE pdb CLOSE;
Non supportato per un singolo database.

Tutti i database si trovano nella stessa istanza Cloud SQL per MySQL. Pertanto, 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 proprietari degli oggetti 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, ad esempio:

    • Tabelle dei privilegi di sistema
    • Tabelle di informazioni sugli oggetti
    • Tabelle di sistema dei log
    • 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 dei dati e catalogo di sistema principali del database. 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 attivare lo schema, utilizza lo strumento a riga di comando gcloud:

    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 la pagina dei flag di database Cloud SQL per MySQL nella console Google Cloud.

  • sys

    Lo schema sys esiste dalla versione 5.5.7 di MySQL e contiene principalmente visualizzazioni delle 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 le informazioni solo quando performance_schema è attivo.

Visualizzazione dei metadati e delle visualizzazioni dinamiche del sistema

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

Oracle fornisce centinaia di tabelle e viste dei metadati di sistema, mentre MySQL ne contiene solo alcune dozzine. 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, consulta la sezione Sicurezza.

Tipo di metadati Tabella/visualizzazione Oracle Tabella/visualizzazione/programma MySQL (comando 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 query su ogni 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'
Visualizzazioni
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
Spazi dati
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 ai 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 Segments 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 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 e
analisi di 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%';
Ottimizzazione della
memoria dell'istanza
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. L'architettura del motore di archiviazione pluggable di MySQL consente a un amministratore di database di selezionare un motore di archiviazione specializzato per una determinata esigenza dell'applicazione.

Il componente del motore di archiviazione pluggable di MySQL nel server del database MySQL è responsabile dell'esecuzione delle operazioni di I/O dei dati, inclusa la memorizzazione dei dati nei dischi o nei buffer della memoria. L'architettura dell'engine di archiviazione plug-in fornisce un insieme standard di servizi di gestione e assistenza comuni a tutti gli engine 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 i diversi motori di archiviazione di MySQL.
Puoi visualizzare la configurazione del motore di archiviazione utilizzando la seguente query:

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). Poiché InnoDB è l'unico motore di archiviazione che si avvicina alla funzionalità di Oracle, ti consigliamo di utilizzarlo sempre. Cloud SQL per MySQL di 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 parametro "massimo tentativi di accesso non riusciti" solo a livello di configurazione spfile (con la modifica valida solo dopo un riavvio):

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

Nell'esempio seguente, l'utente chiede di visualizzare semplicemente il valore del parametro Oracle:

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 ai parametri vengono applicate solo nel livello di memoria, mentre non è consentita alcuna modifica dei parametri statici.
  • ENTRAMBI: le modifiche ai parametri vengono applicate sia nel file del parametro del server sia nella memoria dell'istanza, dove non è consentita alcuna modifica dei parametri statici.

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 l'elenco completo di tutti i parametri supportati da Cloud SQL per MySQL che puoi modificare.

I parametri MySQL possono essere suddivisi in diversi ambiti:

  • Parametri dinamici:possono essere modificati in fase di esecuzione.
  • Parametri statici:richiedono il riavvio dell'istanza per essere applicati.
  • Parametri globali:avranno un effetto globale su tutte le sessioni attuali e future.
  • Parametri sessione:possono essere modificati a livello di sessione solo per la durata della sessione corrente, in modo isolato 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 un'allocazione di memoria di 1,4 GB.
  • Il tipo di istanza db-n1-highmem-8 ha un'allocazione di memoria di 38 GB.

Esempi di modifica dei parametri di 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 Flag, fai clic su Aggiungi elemento e cerca event_scheduler come показано во скриншоте ниже.

    Modifica l'istanza del programma degli eventi nella console.

gcloud

  • Utilizza gcloud CLI per attivare 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 alterazione rimane in vigore per la sessione corrente e si applica solo per la durata della sessione.

  1. Mostra variabili come autocommit:

    mysql> SHOW VARIABLES LIKE '%autoc%';
    

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

Transazioni e livelli di isolamento

Questa sezione descrive le principali differenze tra Oracle e Cloud SQL per MySQL pertinenti alle migrazioni a livello di transazione e isolamento.

Modalità di commit

Per impostazione predefinita, Oracle funziona in modalità di commit non automatico, in cui ogni transazione DML deve essere determinata con istruzioni COMMIT/ROLLBACK. Una delle differenze fondamentali tra Oracle e MySQL è che MySQL funziona per impostazione predefinita in modalità di commit automatico e ogni transazione DML viene eseguita con commit automatico specificando esplicitamente 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 ANSI/ISO SQL (SQL92) definisce quattro livelli di isolamento. Ogni livello offre un approccio diverso per gestire l'esecuzione simultanea delle transazioni di database:

  • 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 confermata:una transazione vede solo le modifiche ai dati che sono state confermate. Le modifiche non confermate("letture sporche") non sono possibili.
  • Lettura ripetibile: una transazione può visualizzare le modifiche apportate dall'altra transazione solo dopo che entrambe le transazioni hanno emesso un COMMIT o dopo che entrambe sono state annullate.
  • Serializable:il livello di isolamento più rigoroso/sicuro. 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 li vedono altre transazioni in esecuzione. Inoltre, quando più transazioni contemporaneamente accedono agli stessi dati, il livello di isolamento delle transazioni selezionato influisce sul modo in cui le diverse transazioni interagiscono.

Oracle supporta i seguenti livelli di isolamento:

  • Lettura confermata (valore predefinito)
  • Serializable
  • Solo 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 in tutto il 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, come Oracle, supporta i seguenti quattro livelli di isolamento delle transazioni specificati 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. Eventuali nuovi dati saranno disponibili per entrambi solo dopo che entrambe le transazioni avranno emesso 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 sia a livello 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]

Puoi anche 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 di 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 relative agli istantanei per rendere disponibili i risultati delle query in base a un determinato momento, indipendentemente dalle modifiche eseguite dalle transazioni simultanee. Se i dati sottoposti a 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 sul momento in cui viene eseguita la prima operazione READ. Con il livello di isolamento READ COMMITTED, lo snapshot viene reimpostato sul momento di ogni operazione READ coerente.

Di seguito è riportato un esempio di impostazione del livello di transazione e isolamento:

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;