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:
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: terminologia e funzionalità (questo documento)
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: tipi di dati, utenti e tabelle
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: query, stored procedure, funzioni e trigger
- Migrazione degli utenti Oracle a Cloud SQL per MySQL: sicurezza, operazioni, monitoraggio e registrazione
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 |
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/ |
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; 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.
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):
-
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
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. -
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 classegcloud
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. -
Lo schema
sys
esiste da MySQL versione 5.5.7 e contiene principalmente visualizzazioni nelle tabelle di sistemaperformance_schema
. Questo schema fornisce un insieme di visualizzazioni più leggibili che riassumono i dati diperformance_schema
in un formato più facilmente comprensibile. Lo schemasys
contiene anche diverse procedure e funzioni memorizzate per eseguire operazioni come la configurazione diperformance_schema
e la generazione di report di diagnostica.Lo schema
sys
mostra informazioni solo quando lo schemaperformance_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 esempioSYS
eSYSTEM
.
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
.
Vai alla pagina Modifica istanza di Cloud Storage.
In Contrassegni, fai clic su Aggiungi elemento e cerca
event_scheduler
come. nello screenshot seguente.
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.
Mostra variabili come
autocommit
:mysql> SHOW VARIABLES LIKE '%autoc%';
Verrà visualizzato il seguente output, dove
autocommit
èON
:+---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+
Disattiva
autocommit
:mysql> SET autocommit=off;
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
suOFF
a livello di sessione e utilizza esplicitamente le istruzioniCOMMIT/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] ...] |
---|
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;