Memigrasikan pengguna Oracle ke Cloud SQL untuk MySQL: Terminologi dan fungsionalitas

Dokumen ini adalah bagian dari rangkaian yang menyajikan informasi dan panduan penting terkait perencanaan dan migrasi database Oracle® 11g/12c ke Cloud SQL untuk MySQL versi 5.7, instance generasi kedua. Seri ini mencakup bagian-bagian berikut:

Terminologi

Bagian ini menjelaskan persamaan dan perbedaan terminologi database antara Oracle dan Cloud SQL untuk MySQL. Bagian ini meninjau dan membandingkan aspek inti dari setiap platform database. Perbandingan ini membedakan antara versi Oracle 11g dan 12c karena perbedaan arsitektur (misalnya, Oracle 12c memperkenalkan fitur multi-tenant). Versi Cloud SQL untuk MySQL yang dirujuk di sini adalah 5.7.x.

Perbedaan terminologi antara Oracle 11g dan Cloud SQL untuk MySQL

Oracle 11g Deskripsi Cloud SQL untuk MySQL Perbedaan utama
Instance Satu instance Oracle 11g hanya dapat menyimpan satu database. Instance Satu instance MySQL dapat menyimpan beberapa database.
Database Database dapat diklasifikasikan sebagai instance tunggal (nama database identik dengan nama instance). Database Satu atau beberapa database menyajikan beberapa aplikasi.
Skema Skema dan pengguna bersifat identik karena keduanya dianggap sebagai pemilik objek database (pengguna dapat dibuat tanpa menentukan atau dialokasikan ke skema). Skema Skema disebut sebagai database, sedangkan objek database dibuat dalam skema/database tertentu.
Pengguna Sama dengan skema karena keduanya merupakan pemilik objek database—misalnya, instance → database → skema/pengguna → objek database. Pengguna Pengguna database dengan izin tertentu untuk menghubungkan atau mengubah objek database pada skema/database tertentu—misalnya, instance → database/skema → objek database.
Role Kumpulan izin database yang ditentukan yang dapat dirantai sebagai grup dan dapat ditetapkan kepada pengguna database. Hak istimewa MySQL MySQL 5.7 tidak mendukung pengelolaan peran. Izin dapat dikonfigurasi menggunakan klausa GRANT bagi pengguna yang memiliki hak istimewa pada objek database di berbagai tingkat (BACA/TULIS, dll.).
Pengguna Admin/SISTEM Pengguna administrator Oracle dengan tingkat akses tertinggi:
SYS
SYSTEM
Super user Setelah di-deploy, Cloud SQL untuk MySQL memiliki pengguna root@'%' (dapat terhubung dari host mana pun) dan pengguna tambahan bernama mysql.sys, yang hanya dapat terhubung dari localhost.
Kamus/metadata Oracle menggunakan tabel metadata berikut:
USER_TableName
ALL_TableName
DBA_TableName
Kamus/metadata MySQL menggunakan beberapa database/skema untuk kamus/metadata:
MYSQL
INFORMATION_SCHEMA
PERFORMANCE_SCHEMA
SYS
Tiap database ini juga merupakan database sistem dan dibuat dengan masing-masing deployment Cloud SQL untuk MySQL.
Tampilan dinamis sistem Tampilan dinamis Oracle:
V$ViewName
Tampilan dinamis sistem Tampilan dinamis MySQL dapat ditemukan di beberapa database sistem:
INFORMATION_SCHEMA
PERFORMANCE_SCHEMA
SYS
Tablespace Struktur penyimpanan logis utama dari database Oracle; setiap tablespace dapat menyimpan satu atau beberapa file data. Tablespace Serupa dengan Oracle, tablespace MySQL adalah unit logis, tetapi hanya mewakili satu tabel, tidak seperti tablespace Oracle, yang dapat memiliki beberapa file data (menyimpan data untuk beberapa tabel).

MySQL mendukung pembuatan tablespace baru dengan file data yang dialokasikan, lalu membuat tabel baru yang dilampirkan ke tablespace yang baru dibuat. Perhatikan bahwa setelan konfigurasi tablespace seperti ukuran dan batas ditetapkan menggunakan parameter database, bukan selama pembuatan tablespace.
File data Elemen fisik database Oracle yang menyimpan data dan ditentukan dalam tablespace tertentu.

File data tunggal ditentukan oleh ukuran awal dan ukuran maksimum, serta dapat menyimpan data untuk beberapa tabel.

File data Oracle menggunakan akhiran .dbf (tidak wajib).
File data Cloud SQL untuk MySQL menggunakan parameter innodb_file_per_table dengan nilai "ON" (default); konfigurasi ini akan menghasilkan file data baru untuk setiap tabel dan tablespace khusus.

File data MySQL menggunakan file .ibd (data) dan .frm (metadata).
Tablespace sistem Berisi objek tabel virtual dan tabel kamus data untuk seluruh database Oracle. Tablespace sistem Sama seperti Oracle, berisi tabel kamus/metadata. Disimpan di Tablespace innodb_system yang dilampirkan dengan file data ibdata1.
Tablespace sementara Berisi objek skema yang valid selama durasi sesi; selain itu, juga mendukung operasi yang sedang berjalan yang tidak bisa masuk ke dalam memori server. Tablespace sementara Tujuannya identik dengan Oracle, disimpan di tablespace innodb_temporary MySQL yang dilampirkan dengan file data ibtmp1.
Urungkan
tablespace
Jenis tablespace permanen sistem khusus yang digunakan oleh Oracle untuk mengelola operasi rollback saat menjalankan database dalam mode pengelolaan urungkan otomatis (default). Mengurungkan tablespace Serupa dengan Oracle, tablespace MySQL Undo berisi log urung untuk tujuan rollback. Secara default, opsi ini ditetapkan ke OFF dan disebutkan sebagai tidak digunakan lagi untuk rilis MySQL mendatang.
ASM Pengelolaan Penyimpanan Otomatis Oracle adalah pengelola disk dan sistem file database berperforma tinggi yang terintegrasi dan prosesnya dilakukan secara otomatis oleh database Oracle yang dikonfigurasi dengan ASM. Tidak didukung MySQL menggunakan istilah mesin penyimpanan untuk menjelaskan implementasi penanganan data yang berbeda, tetapi tidak mendukung ASM Oracle. Cloud SQL untuk MySQL mendukung banyak fitur yang menyediakan otomatisasi penyimpanan, seperti peningkatan penyimpanan otomatis, performa, dan skalabilitas.
Tabel/tampilan Objek database dasar buatan pengguna. Tabel/tampilan Sama dengan Oracle.
Tabel virtual terwujud Ditentukan dengan pernyataan SQL tertentu dan dapat dimuat ulang secara manual atau otomatis berdasarkan konfigurasi tertentu. Tidak didukung oleh MySQL Sebagai solusinya, pemicu/tampilan dapat digunakan sebagai pengganti tampilan terwujud Oracle.
Urutan Generator nilai unik Oracle. Auto increment MySQL tidak mendukung urutan Oracle; menggunakan AUTO_INCREMENT sebagai solusi alternatif untuk fungsi pembuatan urutan otomatis.
Sinonim Objek database Oracle yang berfungsi sebagai ID alternatif untuk objek database lainnya. Tidak didukung MySQL tidak mendukung Sinonim Oracle; sebagai solusinya, view dapat digunakan sambil mengatur izin akses yang sesuai.
Membuat partisi Oracle menyediakan banyak solusi partisi untuk membagi tabel berukuran besar menjadi beberapa bagian kecil yang terkelola. Membuat partisi MySQL memiliki dukungan partisi yang lebih terbatas untuk meningkatkan performa, sekaligus mempertahankan operasi pemeliharaan dan pengelolaan data, seperti partisi Oracle.
Database flashback Fitur eksklusif Oracle yang dapat digunakan untuk menginisialisasi database Oracle ke waktu yang ditentukan sebelumnya, sehingga Anda dapat membuat kueri atau memulihkan data yang telah diubah atau rusak secara tidak sengaja. Tidak didukung Untuk solusi alternatif, Anda dapat menggunakan pencadangan Cloud SQL dan pemulihan point-in-time untuk memulihkan database ke status sebelumnya (misalnya, memulihkan sebelum tabel penurunan).
sqlplus Antarmuka command line Oracle yang dapat Anda gunakan untuk mengkueri dan mengelola instance database. mysql Antarmuka command line setara MySQL untuk pembuatan kueri dan pengelolaan. Dapat dihubungkan dari klien mana pun dengan izin yang sesuai untuk Cloud SQL.
PL/SQL Oracle memperluas bahasa prosedur ke ANSI SQL. MySQL MySQL memiliki bahasa proseduralnya sendiri yang diperluas dengan sintaksis dan implementasi yang berbeda, dan tidak memiliki penamaan tambahan untuk bahasa yang diperluas ini.
Paket & isi paket Fungsi khusus Oracle untuk mengelompokkan prosedur dan fungsi yang tersimpan dalam referensi logis yang sama. Tidak didukung MySQL mendukung prosedur dan fungsi yang tersimpan sebagai objek tunggal dengan alokasi grup.
Prosedur & fungsi yang tersimpan Menggunakan PL/SQL untuk mengimplementasikan fungsi kode. Prosedur & fungsi tersimpan Pembuatan prosedur dan fungsi yang tersimpan didukung oleh MySQL dengan implementasi bahasa prosedur dan kepemilikannya.
Pemicu Objek Oracle yang digunakan untuk mengontrol implementasi DML atas tabel. Pemicu Sama dengan Oracle.
PFILE/SPFILE Parameter level database dan instance Oracle disimpan dalam file biner yang dikenal sebagai SPFILE (di versi sebelumnya, file ini disebut PFILE), yang dapat digunakan sebagai file teks untuk menyetel parameter secara manual. Flag database Cloud SQL untuk MySQL Anda dapat menetapkan atau mengubah parameter Cloud SQL untuk MySQL melalui utilitas flag database. Anda tidak dapat mengubah parameter database di Cloud SQL untuk MySQL menggunakan antarmuka command line klien MySQL (misalnya, mysql> SET GLOBAL ...). Anda dapat mengubah parameter ini hanya menggunakan utilitas flag database.
SGA/PGA/AMM Parameter memori Oracle yang mengontrol alokasi memori ke instance database. INNODB_BUFFER_POOL_SIZE MySQL memiliki parameter memorinya sendiri. Parameter yang setara dapat berupa INNODB_BUFFER_POOL_SIZE. Di Cloud SQL untuk MySQL, parameter ini telah ditentukan sebelumnya oleh jenis instance yang dipilih, dan nilainya juga berubah.
Cache Hasil Mengurangi operasi SQL I/O dengan mengambil baris dari cache buffer, yang dapat dikelola menggunakan petunjuk dan parameter database di tingkat sesi. Query Cache Memiliki tujuan dasar yang sama dengan Oracle Result Cache dan dapat dikelola di tingkat database serta tingkat sesi.
Petunjuk database Dampak terkontrol pada pernyataan SQL yang memengaruhi perilaku pengoptimal untuk mencapai performa yang lebih baik. Oracle memiliki lebih dari 50 petunjuk database yang berbeda. Petunjuk database MySQL mendukung sekumpulan petunjuk database terbatas dibandingkan dengan Oracle (petunjuk pengoptimal dan petunjuk indeks). Perhatikan bahwa MySQL menggunakan petunjuk, sintaksis, dan penamaan database yang berbeda.
RMAN Utilitas Oracle Recovery Manager. Digunakan untuk mengambil cadangan database dengan fungsi tambahan untuk mendukung beberapa skenario pemulihan dari bencana (disaster recovery), dan lainnya (kloning, dll.). Pencadangan Cloud SQL untuk MySQL Cloud SQL untuk MySQL menawarkan dua metode untuk menerapkan pencadangan penuh: cadangan sesuai permintaan dan otomatis.
Data Pump (EXPDP/IMPDP) Utilitas pembuatan dump Oracle yang dapat digunakan untuk banyak fitur, seperti ekspor/impor, pencadangan database (pada tingkat skema atau objek), metadata skema, pembuatan file SQL skema, dan lainnya.
mysqldump/mysqlimport
Utilitas dump (ekspor) MySQL yang dapat dihubungkan sebagai klien (dari jarak jauh) dan menghasilkan file dump (SQL). Anda dapat mengompresi file dump tersebut dan memindahkannya ke Cloud Storage. Utilitas mysqldump hanya untuk langkah ekspor.
SQL*Loader Alat yang memberikan kemampuan untuk mengupload data dari file eksternal seperti file teks, file CSV, dan lainnya.
mysqlimport/
LOAD FILE INFILE
Utilitas mysqlimport memberikan kemampuan untuk memuat file teks atau CSV (Oracle mendukung format file tambahan) ke tabel database dengan struktur yang sesuai.
Data Guard Solusi pemulihan dari bencana Oracle menggunakan instance standby, sehingga pengguna dapat melakukan operasi 'READ' dari instance standby. Ketersediaan dan replikasi tinggi Cloud SQL untuk MySQL Untuk mencapai pemulihan dari bencana (disaster recovery) atau ketersediaan tinggi, Cloud SQL untuk MySQL menawarkan replika failoverarsitektur dan untuk operasi hanya baca (pemisahan BACA/TULIS) menggunakanBaca Replika singkat ini.
Active Data Guard/Golden Gate Solusi replikasi utama Oracle, yang dapat digunakan untuk berbagai tujuan seperti Standby (DR), instance Hanya-Baca, replikasi Dua Arah (multi-sumber), data warehousing, dan banyak lagi. Replika Baca Cloud SQL untuk MySQL Read Replica Cloud SQL untuk MySQL untuk menerapkan pengelompokan dengan pemisahan READ/WRITE. Saat ini, tidak ada dukungan untuk konfigurasi multi-sumber, seperti replikasi Dua Arah Golden Gate, atau replikasi heterogen.
RAC Cluster Oracle Real Application. Solusi pengelompokan eksklusif Oracle untuk memberikan ketersediaan tinggi dengan men-deploy beberapa instance database menggunakan satu unit penyimpanan. Tidak didukung Arsitektur multi-sumber belum didukung di Google Cloud Cloud SQL. Untuk mencapai arsitektur pengelompokan dengan pemisahan READ/WRITE dan ketersediaan tinggi, gunakan replika baca dan ketersediaan tinggi Cloud SQL.
Grid/Cloud Control (OEM) Software Oracle untuk mengelola dan memantau database serta layanan terkait lainnya dalam format aplikasi web. Alat ini berguna untuk analisis database secara real-time guna memahami workload yang tinggi. Konsol Cloud SQL untuk MySQL, Cloud Monitoring Gunakan Cloud SQL untuk MySQL untuk pemantauan, termasuk grafik berbasis waktu dan resource yang mendetail. Gunakan juga Cloud Monitoring untuk menyimpan metrik pemantauan MySQL dan analisis log tertentu untuk kemampuan pemantauan tingkat lanjut.
Log REDO Log transaksi Oracle yang terdiri dari dua (atau beberapa) file yang telah ditentukan dan dialokasikan sebelumnya yang menyimpan semua modifikasi data saat terjadi. Tujuan log diulangi adalah untuk melindungi database jika terjadi kegagalan instance. Log REDO MySQL juga memiliki file redo log, yang digunakan selama pemulihan error untuk memperbaiki data yang ditulis oleh mekanisme log ulang transaksi yang tidak lengkap.
Mengarsipkan log Log arsip memberikan dukungan untuk operasi pencadangan dan replikasi, serta banyak lagi. Oracle menulis untuk mengarsipkan log (jika diaktifkan) setelah setiap operasi pengalihan log redo. binlogs Implementasi MySQL untuk retensi log transaksi. Digunakan terutama untuk tujuan replikasi (diaktifkan secara default dengan Cloud SQL).
File kontrol File kontrol Oracle menyimpan informasi tentang database, seperti file data, nama log redo, dan lokasi, nomor urut log saat ini, dan informasi tentang checkpoint instance. MySQL Arsitektur MySQL tidak menyertakan file kontrol yang mirip dengan implementasi Oracle. Ini dikontrol melalui parameter MySQL dan dengan menggunakan perintah SHOW MASTER STATUS untuk melihat posisi log biner saat ini.
SCN SCN (System Change Number) Oracle adalah metode utama dalam mempertahankan konsistensi data oleh semua komponen database Oracle untuk memenuhi model transaksi ACID. Log Sequence Number Implementasi MySQL untuk konsistensi database menggunakan LSN (Log Sequence Number).
AWR Oracle AWR (Automatic Workload Repository) adalah laporan panjang yang memberikan informasi mendetail tentang performa instance database Oracle dan dianggap sebagai alat DBA untuk diagnostik performa.
performance_schema
MySQL tidak memiliki laporan yang setara dengan Oracle AWR, tetapi MySQL mengumpulkan data performa yang dikumpulkan oleh performance_schema. Solusi alternatifnya adalah menggunakan dasbor performa Workbench MySQL.
DBMS_SCHEDULER
Utilitas Oracle yang digunakan untuk menyetel dan mengatur waktu operasi yang telah ditetapkan.
EVENT_SCHEDULER
Fungsionalitas penjadwal internal database MySQL. Secara default, fitur ini disetel ke OFF.
Enkripsi data transparan Mengenkripsi data yang disimpan di disk sebagai perlindungan data dalam penyimpanan. Advanced Encryption Standard Cloud SQL Cloud SQL untuk MySQL menggunakan Advanced Encryption Standard (AES-256) 256 bit untuk perlindungan keamanan data dalam penyimpanan, serta untuk data selama transit
Kompresi lanjutan Untuk meningkatkan jejak penyimpanan database, mengurangi biaya penyimpanan, dan meningkatkan performa database, Oracle menyediakan kemampuan kompresi lanjutan data (tabel/indeks). Kompresi tabel InnoDB MySQL menawarkan kompresi tabel dengan membuat tabel menggunakan parameter ROW_FORMAT yang disetel ke COMPRESSED. Baca selengkapnya tentang kompresi indeks.
SQL Developer Oracle GUI SQL gratis untuk mengelola dan menjalankan pernyataan SQL dan PL/SQL (juga dapat digunakan dengan MySQL). MySQL Workbench SQL GUI gratis MySQL untuk mengelola dan menjalankan pernyataan kode SQL dan MySQL.
Log Peringatan Log utama Oracle untuk operasi dan error database umum. Log Error MySQL Menggunakan Logs Viewer Cloud Logging untuk menonton log error MySQL
Tabel DUAL Tabel khusus Oracle yang sebagian besar disimpan untuk mengambil nilai kolom pseudo seperti SYSDATE atau USER Tabel DUAL MySQL memungkinkan DUAL untuk ditentukan sebagai tabel dalam pernyataan SQL yang tidak bergantung pada data dari tabel mana pun.
Tabel eksternal Oracle memungkinkan pengguna membuat tabel eksternal yang memiliki data sumber pada file di luar database. Tidak didukung. Tidak ada padanan langsung.
Pemroses Proses jaringan Oracle yang bertugas memproses koneksi database yang masuk Jaringan yang Diizinkan Cloud SQL MySQL menerima koneksi dari sumber jarak jauh setelah diizinkan di halaman konfigurasi Jaringan yang Diizinkan Cloud SQL
TNSNAMES File konfigurasi jaringan Oracle yang menentukan alamat database untuk membuat koneksi menggunakan alias koneksi. Tidak ada MySQL menerima koneksi eksternal menggunakan nama koneksi Instance Cloud SQL atau alamat IP pribadi/publik. Proxy Cloud SQL adalah metode akses aman tambahan untuk terhubung ke Cloud SQL untuk MySQL (instance generasi kedua) tanpa harus mengizinkan alamat IP tertentu atau mengonfigurasi SSL.
Port default instance 1521 Port default instance 3306
Link database Objek skema Oracle yang dapat digunakan untuk berinteraksi dengan objek database lokal/jarak jauh. Tidak didukung Sebagai solusi alternatif, gunakan kode aplikasi untuk menghubungkan dan mengambil data dari database jarak jauh.

Perbedaan terminologi antara Oracle 12c dan Cloud SQL untuk MySQL

Oracle 12c Deskripsi Cloud SQL untuk MySQL Perbedaan utama
Instance Kemampuan multi-tenant yang diperkenalkan dalam instance Oracle 12c yang dapat menyimpan beberapa database sebagai database yang dapat dicocokkan (PDB), berbeda dengan Oracle 11g, dengan instance Oracle hanya dapat memperoleh satu database. Instance Cloud SQL untuk MySQL dapat menyimpan beberapa database dengan penamaan berbeda yang menyajikan beberapa layanan dan aplikasi.
CDB Database container multi-tenant (CDB) dapat mendukung satu atau beberapa PDB, sedangkan objek global CDB (memengaruhi semua PDB) dapat dibuat, seperti peran. Instance MySQL Instance MySQL sebanding dengan Oracle CDB. Keduanya menyediakan lapisan sistem untuk PDB.
PDB PDB (database yang dapat di-plug) dapat digunakan untuk mengisolasi layanan dan aplikasi dari satu sama lain, dan dapat digunakan sebagai kumpulan skema portabel. Database/skema MySQL Database MySQL dapat melayani beberapa layanan dan aplikasi serta banyak pengguna database.
Urutan sesi Mulai dari Oracle 12c, urutan dapat dibuat di tingkat sesi (menampilkan nilai unik hanya dalam sesi) atau di tingkat global (misalnya, saat menggunakan tabel sementara). Auto
increment
Urutan tidak didukung oleh MySQL, tetapi pengguna dapat menggunakan properti kolom AUTO_INCREMENT sebagai solusi alternatif.
Kolom identitas Jenis IDENTITY Oracle 12c menghasilkan urutan dan mengaitkannya dengan kolom tabel tanpa perlu membuat objek urutan terpisah secara manual. Auto increment Gunakan properti kolom AUTO_INCREMENT untuk menyimulasikan fungsi yang sama dengan kolom identitas Oracle 12c (solusi alternatif untuk fungsi pembuatan urutan otomatis).
Sharding Sharding Oracle adalah solusi di mana satu database Oracle dipartisi menjadi beberapa database yang berukuran lebih kecil (potongan) untuk memungkinkan skalabilitas, ketersediaan, dan distribusi geografis untuk lingkungan OLTP. Tidak didukung (sebagai fitur) MySQL tidak memiliki fitur sharding yang setara. Sharding dapat diterapkan menggunakan MySQL (sebagai platform data) dengan lapisan aplikasi pendukung.
Database dalam memori Oracle menyediakan serangkaian fitur yang dapat meningkatkan performa database untuk OLTP dan workload campuran. Tidak didukung MySQL tidak memiliki fitur yang setara. Anda dapat menggunakan Memorystore sebagai alternatif.
Penyamaran Sebagai bagian dari fitur keamanan lanjutan Oracle, penyamaran dapat melakukan penyamaran kolom untuk mencegah data sensitif ditampilkan oleh pengguna dan aplikasi. Tidak didukung MySQL tidak memiliki fitur yang setara.

Fungsi

Meskipun database Oracle 11g/12c dan Cloud SQL untuk MySQL berfungsi pada arsitektur yang berbeda (infrastruktur dan bahasa prosedural yang diperluas), keduanya memiliki aspek dasar yang sama dari database relasional. Library ini mendukung objek database, workload serentak multi-pengguna, dan transaksi (kompatibilitas ACID). Class ini juga mengelola pertentangan penguncian yang mendukung beberapa tingkat isolasi (berdasarkan kebutuhan bisnis), dan melayani persyaratan aplikasi yang sedang berlangsung sebagai penyimpanan data relasional untuk operasi Pemrosesan Transaksi Online (OLTP) dan Pemrosesan Analitis Online (OLAP).

Bagian berikut memberikan ringkasan beberapa perbedaan fungsional utama antara Oracle dan Cloud SQL untuk MySQL. Dalam beberapa kasus, jika diperlukan, bagian ini menyertakan perbandingan teknis yang mendetail.

Membuat dan melihat database yang ada

Oracle 11g/12c Cloud SQL untuk MySQL 5.7
Anda umumnya membuat database dan melihat database yang sudah ada dengan menggunakan utilitas Database Creation Assistant (DBCA) Oracle. Database atau instance yang dibuat secara manual mengharuskan Anda menentukan parameter tambahan:
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;
Gunakan pernyataan bentuk CREATE DATABASE Name;, seperti dalam contoh ini:
mysql> CREATE DATABASE MYSQLDB;
Oracle 12c Cloud SQL untuk MySQL 5.7
Di Oracle 12c, Anda dapat membuat PDB dari seed, baik dari template database container (CDB) atau dengan meng-clone PDB dari PDB yang sudah ada. Anda menggunakan beberapa parameter:

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/';
Gunakan pernyataan bentuk CREATE DATABASE Name;, seperti dalam contoh ini:
mysql> CREATE DATABASE MYSQLDB;
Mencantumkan semua PDB:
SQL> SHOW is PDBS;
Tampilkan daftar semua database yang ada:
mysql> SHOW DATABASES;
Hubungkan ke PDB yang berbeda:
SQL> ALTER SESSION SET CONTAINER=pdb;
Menghubungkan ke database yang berbeda:
mysql> use databaseName;
Atau:
mysql> \u databaseName;
Buka atau tutup PDB tertentu (terbuka/hanya baca):
SQL> ALTER PLUGGABLE DATABASE pdb CLOSE;
Tidak didukung untuk satu database.

Semua database berada di instance Cloud SQL untuk MySQL yang sama; dengan demikian, semua database semuanya naik atau turun.

Mengelola database melalui konsol Cloud SQL

  • Di konsol Google Cloud, buka Storage > SQL > Instance > Databases > View/Create.

    Halaman konsol untuk membuat/menampilkan database MySQL.

Database dan skema sistem

Instance database Oracle mendapatkan skema sistem tertentu—misalnya, SYS/SYSTEM—dengan peran pemilik objek metadata database.

Sebaliknya, MySQL memiliki beberapa database sistem (bukan skema Oracle), yang menyalurkan lapisan metadata (perhatikan bahwa nama database peka huruf besar/kecil):

  • Mysql

    Database sistem mysql menyimpan tabel yang menyimpan informasi yang diperlukan oleh server MySQL saat dijalankan, seperti berikut:

    • Tabel hak istimewa sistem
    • Tabel informasi objek
    • Tabel sistem log
    • Tabel sistem replikasi
    • Tabel sistem pengoptimal
    • Tabel sistem zona waktu
  • INFORMATION_SCHEMA

    INFORMATION_SCHEMA berfungsi sebagai kamus data database utama dan katalog sistem. Library ini memberikan akses ke metadata database, yang merupakan informasi database internal mengenai server MySQL, seperti nama database atau tabel, jenis data kolom, dan hak istimewa akses.

  • performance_schema

    Database sistem yang mengumpulkan informasi statistik tentang instance MySQL. Database sistem performance_schema menyimpan metrik untuk pemantauan eksekusi server pada tingkat yang sangat terperinci. Skema ini menyediakan pemeriksaan eksekusi internal server saat runtime, dan dapat berfungsi sebagai sumber utama untuk menganalisis masalah performa database.

    performance_schema tidak diaktifkan secara default menggunakan Cloud SQL untuk MySQL. Untuk mengaktifkan skema, gunakan alat command line gcloud:

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

    Untuk menyelesaikan konfigurasi ini, Anda harus memulai ulang instance. Anda tidak dapat mengubah parameter --database-flags menggunakan halaman tanda database Cloud SQL untuk MySQL di Konsol Google Cloud.

  • sys

    Skema sys tersedia dari MySQL versi 5.5.7 dan sebagian besar berisi tampilan pada tabel sistem performance_schema. Skema ini memberikan kumpulan tampilan yang lebih mudah dibaca, yang merangkum data performance_schema menjadi bentuk yang lebih mudah dipahami. Skema sys juga menyimpan beberapa prosedur dan fungsi tersimpan untuk melakukan operasi seperti mengonfigurasi performance_schema dan membuat laporan diagnostik.

    Skema sys hanya menampilkan informasi jika performance_schema diaktifkan.

Melihat metadata dan tabel virtual dinamis sistem

Bagian ini berisi ringkasan tentang beberapa tabel metadata yang paling umum dan tampilan dinamis sistem yang digunakan di Oracle dan objek database yang sesuai di Cloud SQL untuk MySQL versi 5.7.

Oracle menyediakan ratusan tabel dan tampilan metadata sistem, sedangkan MySQL hanya menyimpan beberapa lusin. Untuk setiap kasus, bisa ada lebih dari satu objek database, yang menangani tujuan tertentu.

Oracle menyediakan beberapa level objek metadata, yang masing-masing memerlukan hak istimewa yang berbeda:

  • USER_TableName: Dapat dilihat oleh pengguna.
  • ALL_TableName: Dapat dilihat oleh semua pengguna.
  • DBA_TableName: Hanya dapat dilihat oleh pengguna yang memiliki hak istimewa DBA, seperti SYS dan SYSTEM.

Untuk tampilan performa dinamis, Oracle menggunakan awalan V$ dan GV$. Agar pengguna MySQL dapat melihat tabel atau tampilan metadata sistem, mereka harus memiliki izin khusus pada objek sistem. Untuk informasi selengkapnya tentang keamanan, lihat bagian Keamanan.

Jenis metadata Tabel/tabel virtual Oracle Tabel/tabel virtual/tampilan MySQL (MySQL CMD)
Buka sesi
V$SESSION
SHOW PROCESSLIST
INFORMATION_SCHEMA.PROCESSLIST
performance_schema.threads
Menjalankan transaksi
V$TRANSACTION
INFORMATION_SCHEMA.INNODB_TRX
Objek database
DBA_OBJECTS
Tidak didukung. Buat kueri setiap objek berdasarkan jenisnya.
Tables
DBA_TABLES
INFORMATION_SCHEMA.TABLES
INFORMATION_SCHEMA.INNODB_SYS_TABLES
Kolom tabel
DBA_TAB_COLUMNS
INFORMATION_SCHEMA.COLUMNS
INFORMATION_SCHEMA.INNODB_SYS_COLUMNS
Hak istimewa tabel dan kolom
TABLE_PRIVILEGES
DBA_COL_PRIVS
ROLE_TAB_PRIVS
INFORMATION_SCHEMA.COLUMN_PRIVILEGES
Partisi
DBA_TAB_PARTITIONS
DBA_TAB_SUBPARTITIONS
INFORMATION_SCHEMA.PARTITIONS
SHOW CREATE TABLE TableName
SHOW TABLE STATUS LIKE 'TableName'
Tabel Virtual
DBA_VIEWS
INFORMATION_SCHEMA.VIEWS
Batasan
DBA_CONSTRAINTS
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
SHOW CREATE TABLE TableName
Indeks
DBA_INDEXES
DBA_PART_INDEXES
INFORMATION_SCHEMA.STATISTICS
INFORMATION_SCHEMA.INNODB_SYS_INDEXES
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
Tabel virtual terwujud
DBA_MVIEWS
Tidak didukung
Prosedur tersimpan
DBA_PROCEDURES
INFORMATION_SCHEMA.ROUTINES
Fungsi tersimpan
DBA_PROCEDURES
INFORMATION_SCHEMA.ROUTINES
Triggers
DBA_TRIGGERS
INFORMATION_SCHEMA.TRIGGERS
Pengguna
DBA_USERS
mysql.user
Keistimewaan pengguna
DBA_SYS_PRIVS
DBA_ROLE_PRIVS
SESSION_PRIVS
INFORMATION_SCHEMA.USER_PRIVILEGES
Tugas/
Penjadwal
DBA_JOBS
DBA_JOBS_RUNNING
DBA_SCHEDULER_JOBS
DBA_SCHEDULER_JOB_LOG
INFORMATION_SCHEMA.EVENTS
Tablespace
DBA_TABLESPACES
INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
File data
DBA_DATA_FILES
INFORMATION_SCHEMA.FILES
INFORMATION_SCHEMA.INNODB_SYS_DATAFILES
Sinonim
DBA_SYNONYMS
Tidak didukung
Urutan
DBA_SEQUENCES
Tidak didukung
Link database
DBA_DB_LINKS
Tidak didukung
Statistik
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
Kunci
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
Parameter 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%';
Segmen
DBA_SEGMENTS
Tabel segmen tidak didukung. Buat kueri setiap objek berdasarkan jenisnya.
Peran
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
Histori sesi
V$ACTIVE_SESSION_HISTORY
DBA_HIST_*
sys.statement_analysis
performance_schema.events_stages_history
performance_schema.events_stages_history_long
performance_schema.events_statements_history
performance_schema.events_statements_history_long
performance_schema.events_transactions_history
performance_schema.events_transactions_history_long
performance_schema.events_waits_history
performance_schema.events_waits_history_long
Versi
V$VERSION
sys.version
SHOW VARIABLES LIKE '%version%';
Peristiwa tunggu
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
Tuning dan
analisis 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%';
Tuning memori
instance
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

Mesin penyimpanan MySQL

Tidak seperti banyak RDBMS lainnya (termasuk Oracle), MySQL dapat berfungsi secara polimorf karena sistem penyimpanannya yang dapat dicolokkan. Arsitektur mesin penyimpanan pluggable MySQL memungkinkan administrator database memilih mesin penyimpanan khusus untuk kebutuhan aplikasi tertentu.

Komponen mesin penyimpanan yang dapat dicocokkan MySQL di server database MySQL bertanggung jawab untuk melakukan operasi I/O data, termasuk menyimpan data ke dalam disk atau buffer memori. Arsitektur mesin penyimpanan yang dapat dicocokkan menyediakan serangkaian layanan dukungan dan pengelolaan standar yang umum di antara semua mesin penyimpanan dasar.

Dari MySQL versi 5.5 dan yang lebih baru, mesin penyimpanan default-nya adalah mesin penyimpanan InnoDB, sedangkan InnoDB juga menangani tabel sementara. Anda dapat mengonfigurasi mesin penyimpanan selama tabel CREATE atau ALTER, seperti pada contoh berikut:

mysql> SHOW CREATE TABLE JOBS \G;

Outputnya adalah sebagai berikut:

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

Untuk mengetahui informasi lebih lanjut, lihat berbagai mesin penyimpanan MySQL.
Anda dapat melihat konfigurasi mesin penyimpanan dengan menggunakan kueri berikut:

mysql> SHOW VARIABLES LIKE '%storage%';

Outputnya mirip dengan hal berikut ini:

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

Anda dapat melihat semua mesin penyimpanan bawaan:

mysql> SHOW STORAGE ENGINES;

Outputnya mirip dengan hal berikut ini:

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

Perlu diperhatikan bahwa InnoDB adalah mesin penyimpanan default, dan satu-satunya mesin penyimpanan untuk mendukung transaksi (sesuai dengan ACID). Karena InnoDB adalah satu-satunya mesin penyimpanan yang mendekati fungsi Oracle, sebaiknya Anda menggunakan InnoDB setiap saat. Cloud SQL untuk MySQL Generasi Kedua hanya mendukung mesin penyimpanan InnoDB.

Parameter sistem

Database Oracle dan Cloud SQL untuk MySQL dapat dikonfigurasi secara khusus untuk mencapai fungsi tertentu di luar konfigurasi default. Untuk mengubah parameter konfigurasi di Oracle, diperlukan izin administrasi tertentu (terutama izin pengguna SYS/SYSTEM).

Berikut adalah contoh perubahan konfigurasi Oracle menggunakan pernyataan ALTER SYSTEM. Dalam contoh ini, pengguna hanya mengubah parameter "Maximum attempts for failed logins" di tingkat konfigurasi spfile (dengan perubahan yang hanya valid setelah dimulai ulang):

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

Pada contoh berikutnya, pengguna meminta untuk melihat parameter value Oracle saja:

SQL> SHOW PARAMETER SEC_MAX_FAILED_LOGIN_ATTEMPTS;

Outputnya mirip dengan hal berikut ini:

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

Modifikasi parameter Oracle berfungsi dalam tiga cakupan:

  • SPFILE: Modifikasi parameter ditulis ke spfile Oracle, yang memerlukan mulai ulang instance agar parameter dapat diterapkan.
  • MEMORY: Modifikasi parameter diterapkan di lapisan memori saja, tidak mengizinkan perubahan parameter statis.
  • BOTH: Modifikasi parameter diterapkan di file parameter server dan memori instance, yang tidak mengizinkan perubahan parameter statis.

Flag konfigurasi Cloud SQL untuk MySQL

Anda dapat mengubah parameter sistem Cloud SQL untuk MySQL menggunakan flag konfigurasi di Konsol Google Cloud, gcloud CLI, atau CURL. Lihat daftar lengkap semua parameter yang didukung oleh Cloud SQL untuk MySQL yang dapat Anda ubah.

Parameter MySQL dapat dibagi menjadi beberapa cakupan:

  • Parameter dinamis: Dapat diubah pada saat dijalankan.
  • Parameter statis: Memerlukan reboot instance agar dapat diterapkan.
  • Parameter global: Akan memiliki efek global pada semua sesi saat ini dan yang akan datang.
  • Parameter sesi: Dapat diubah di tingkat sesi untuk masa aktif sesi saat ini saja, dan diisolasi dari sesi lain.

Parameter memori Cloud SQL untuk MySQL innodb_buffer_pool_size (salah satu parameter penting yang perlu dipertimbangkan saat merencanakan dan menyesuaikan ukuran lingkungan MySQL) ditentukan oleh jenis instance dan tidak dapat diubah menggunakan flag konfigurasi atau dengan metode lain—misalnya:

  • Jenis instance db-n1-standard-1 memiliki alokasi memori 1,4 GB.
  • Jenis instance db-n1-highmem-8 memiliki alokasi memori 38 GB.

Contoh perubahan parameter Cloud SQL untuk MySQL

Konsol

Gunakan Konsol Google Cloud untuk mengaktifkan parameter event_scheduler.

  1. Buka halaman Edit instance di Cloud Storage.

    Buka Edit instance

  2. Di bagian Flags, klik Add item dan telusuri event_scheduler seperti pada screenshot berikut.

    Edit instance penjadwal peristiwa di konsol.

gcloud

  • Gunakan gcloud CLI untuk mengaktifkan parameter event_scheduler:

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

    Outputnya adalah sebagai berikut:

    WARNING: This patch modifies database flag values, which may require
    your instance to be restarted. Check the list of supported flags -
    /sql/docs/mysql/flags - to see if your
    instance will be restarted when this patch is submitted.
    
    Do you want to continue (Y/n)?
    

Sesi MySQL

Menonaktifkan mode AUTOCOMMIT di tingkat sesi. Perubahan ini tetap berlaku untuk sesi saat ini dan pembekuan hanya untuk masa aktif sesi.

  1. Tampilkan variabel seperti autocommit:

    mysql> SHOW VARIABLES LIKE '%autoc%';
    

    Anda akan melihat output berikut, di mana autocommit adalah ON:

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

    mysql> SET autocommit=off;
    
  3. Tampilkan variabel seperti autocommit:

    mysql> SHOW VARIABLES LIKE '%autoc%';
    

    Anda akan melihat output berikut, di mana autocommit adalah OFF:

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

Tingkat transaksi dan isolasi

Bagian ini menjelaskan perbedaan utama antara Oracle dan Cloud SQL untuk MySQL yang relevan dengan migrasi tingkat transaksi dan isolasi.

Mode commit

Oracle berfungsi secara default dalam mode non-autocommit, dengan setiap transaksi DML harus ditentukan dengan pernyataan COMMIT/ROLLBACK. Salah satu perbedaan mendasar antara Oracle dan MySQL adalah MySQL berfungsi secara default dalam mode autocommit, dan setiap transaksi DML di-commit otomatis dengan menentukan pernyataan COMMIT/ROLLBACK secara eksplisit.

Untuk memaksa MySQL agar berfungsi dalam mode non-autocommit, ada beberapa opsi:

  • Saat mengelola transaksi dalam cakupan prosedur yang tersimpan, gunakan klausa START TRANSACTION untuk memasukkan mode transaksi yang sama dengan Oracle.
  • Gunakan pernyataan berikut untuk menetapkan parameter sistem autocommit ke OFF pada tingkat sesi dan secara eksplisit menggunakan pernyataan COMMIT/ROLLBACK dalam transaksi DML:

    mysql> SET autocommit=off;
    

Tingkat isolasi

Standar ANSI/ISO SQL (SQL92) mendefinisikan empat tingkat isolasi. Setiap tingkatan memberikan pendekatan yang berbeda dalam menangani eksekusi transaksi database secara serentak:

  • Read Uncommitted: Transaksi yang sedang diproses dapat melihat data yang tidak di-commit yang dibuat oleh transaksi lain. Jika rollback dilakukan, semua akan data dipulihkan ke status sebelumnya.
  • Read Committed: Transaksi hanya melihat perubahan data yang di-commit, perubahan yang tidak di-commit ("pembacaan kotor") tidak dimungkinkan.
  • Repeatable Read: Transaksi dapat melihat perubahan yang dilakukan oleh transaksi lain hanya setelah kedua transaksi mengeluarkan COMMIT atau keduanya di-roll back.
  • Serializable: Tingkat isolasi yang paling ketat/terkuat. Tingkat ini mengunci semua kumpulan data yang diakses serta mengunci resource, sehingga kumpulan data tidak dapat ditambahkan ke tabel.

Tingkat transaction isolation mengelola visibilitas data yang diubah dan dilihat oleh transaksi lain yang sedang berjalan. Selain itu, jika data yang sama diakses oleh beberapa transaksi serentak, tingkat transaction isolation yang dipilih akan memengaruhi cara interaksi transaksi yang berbeda.

Oracle mendukung tingkat isolasi berikut:

  • Read Committed (default)
  • Serializable
  • Read-Only (bukan bagian dari standar ANSI/ISO SQL (SQL92)

Oracle MVCC (Kontrol Konkurensi Multiversi):

  • Oracle menggunakan mekanisme MVCC untuk memberikan konsistensi pembacaan otomatis di seluruh database dan semua sesi.
  • Oracle mengandalkan System Change Number (SCN) dari transaksi saat ini untuk mendapatkan tampilan database yang konsisten. Oleh karena itu, semua kueri database hanya menampilkan data yang di-commit sehubungan dengan SCN pada saat eksekusi kueri.
  • Tingkat isolasi dapat diubah pada tingkat transaksi dan sesi.

Berikut adalah contoh setelan tingkat isolasi:

-- 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 untuk MySQL, seperti Oracle, mendukung empat tingkat isolasi transaksi berikut yang ditentukan dalam standar ANSI SQL:92:

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

Tingkat isolasi default Cloud SQL untuk MySQL adalah REPEATABLE READ. Semua data baru hanya akan tersedia untuk keduanya setelah kedua transaksi mengeluarkan perintah COMMIT. Tingkat isolasi ini dapat diubah pada tingkat SESSION dan pada tingkat GLOBAL (modifikasi tingkat global saat ini dalam tahap beta menggunakan tanda konfigurasi).

Untuk memverifikasi tingkat isolasi saat ini di tingkat SESSION dan GLOBAL, gunakan pernyataan berikut:

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

Outputnya adalah sebagai berikut:

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

Anda dapat mengubah sintaksis tingkat isolasi sebagai berikut:

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

Anda juga dapat mengubah tingkat isolasi pada tingkat SESSION:

mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

       -- Verify

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

Outputnya adalah sebagai berikut:

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

Struktur transaksi Cloud SQL untuk MySQL

Sintaksis Transaksi:

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}

Transaksi dapat diterapkan dengan START TRANSACTION atau BEGIN.

Opsi WITH CONSISTENT SNAPSHOT memulai transaksi READ yang konsisten, yang pada dasarnya sama dengan menerbitkan START TRANSACTION, diikuti dengan SELECT dari tabel mana pun. Klausa WITH CONSISTENT SNAPSHOT yang memulai READ yang konsisten (operasi READ yang menggunakan informasi snapshot untuk menyajikan hasil kueri berdasarkan titik waktu) tidak mengubah transaksi tingkat isolasi dan hanya didukung oleh tingkat isolasi REPEATABLE READ.

READ yang konsisten menggunakan informasi snapshot untuk menyediakan hasil kueri berdasarkan titik waktu tertentu, terlepas dari perubahan yang dilakukan oleh transaksi serentak. Jika data yang dikueri telah diubah oleh transaksi lain, data asli direkonstruksi menggunakan log urungkan. Tindakan ini akan membantu menghindari masalah penguncian yang dapat mengurangi konkurensi.

Dengan tingkat isolasi REPEATABLE READ, snapshot didasarkan pada waktu operasi READ pertama dilakukan. Dengan tingkat isolasi READ COMMITTED, snapshot direset ke waktu setiap operasi READ yang konsisten.

Berikut adalah contoh setelan tingkat transaksi dan isolasi:

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;