全部产品
Search
文档中心

PolarDB:Basis Data dalam Mode AUTO dan Mode DRDS

更新时间:Jul 06, 2025

Topik ini menjelaskan basis data PolarDB-X dalam mode AUTO dan mode DRDS serta perbedaan antara kedua mode tersebut.

Ikhtisar Mode Basis Data PolarDB-X

Basis data dalam mode AUTO tersedia di PolarDB-X V5.4.13 dan versi yang lebih baru, juga dikenal sebagai basis data dalam mode partisi otomatis. Mode ini mendukung fitur partisi otomatis, sehingga Anda tidak perlu menentukan kunci partisi saat membuat tabel. Data dalam tabel didistribusikan secara otomatis dan merata di antara partisi. Anda juga dapat menggunakan pernyataan MySQL standar untuk mempartisi tabel. Basis data dalam mode AUTO mendukung fitur-fitur seperti distribusi transparan, penskalaan otomatis, dan manajemen partisi.

Basis data PolarDB-X dengan versi lebih lama dari V5.4.13 adalah basis data dalam mode DRDS. Mode ini tidak mendukung partisi otomatis. Saat membuat tabel, Anda dapat menggunakan sintaks sharding khusus untuk PolarDB-X untuk menentukan kunci shard database dan kunci shard tabel. Jika tidak ada kunci shard yang ditentukan, tabel non-partisi akan dibuat.

PolarDB-X V5.4.13 dan versi yang lebih baru mendukung basis data dalam mode AUTO dan DRDS. Instance PolarDB-X dapat berisi basis data dalam kedua mode tersebut.

Catatan Penggunaan

  • Untuk membuat basis data dalam mode AUTO, tentukan MODE='AUTO' dalam pernyataan CREATE DATABASE.

  • Secara default, jika Anda tidak menentukan nilai parameter MODE dalam pernyataan CREATE DATABASE, basis data dalam mode DRDS akan dibuat.

  • Jika basis data Anda dalam mode AUTO, Anda tidak dapat menggunakan sintaks sharding basis data DRDS untuk membagi tabel saat membuat tabel. Anda hanya dapat membuat tabel partisi dalam basis data yang berada dalam mode AUTO.

  • Jika basis data Anda dalam mode DRDS, Anda tidak dapat menggunakan sintaks partisi tabel untuk membagi tabel saat membuat tabel. Anda hanya dapat membuat tabel bersharding dalam basis data yang berada dalam mode DRDS.

  • Anda tidak dapat membuat basis data dalam mode AUTO di kluster PolarDB-X edisi standar.

Gunakan Parameter MODE untuk Menentukan Mode Basis Data

PolarDB-X memungkinkan Anda menentukan parameter MODE saat membuat basis data sehingga Anda dapat memutuskan untuk membuat basis data dalam mode AUTO atau DRDS. Tabel berikut menjelaskan cara menentukan parameter MODE.

Catatan

Setelah basis data dibuat, mode basis data tidak dapat diubah.

Parameter

Nilai

Deskripsi

Sintaks untuk membuat basis data

Sintaks untuk membuat tabel

MODE

'AUTO'

Menentukan bahwa basis data dibuat dalam mode AUTO.

Contoh:

CREATE DATABASE auto_db MODE='AUTO';

Untuk informasi lebih lanjut, lihat CREATE DATABASE.

Tabel yang dibuat dalam basis data dalam mode AUTO adalah partitioned tables. Anda dapat menggunakan pernyataan CREATE TABLE MySQL standar untuk membuat tabel. Untuk informasi tentang cara membuat tabel partisi, lihat CREATE TABLE (mode AUTO).

'DRDS' (default)

Catatan

Jika Anda tidak menentukan parameter MODE, sistem akan membuat basis data dalam mode DRDS.

Menentukan bahwa basis data dibuat dalam mode DRDS.

Contoh:

  • CREATE DATABASE drds_db MODE='DRDS';
  • CREATE DATABASE drds_db;

Untuk informasi lebih lanjut, lihat CREATE DATABASE.

Tabel yang dibuat dalam basis data dalam mode DRDS adalah sharded tables. Untuk informasi tentang cara membuat tabel bersharding, lihat CREATE TABLE (mode DRDS).

Partisi Otomatis dan Partisi Manual

Automatic partitioning

Untuk mengonfigurasi partisi otomatis, Anda tidak perlu menentukan item konfigurasi terkait partisi, seperti kunci partisi dan kebijakan partisi, saat membuat tabel. PolarDB-X secara otomatis memilih kunci partisi dan melakukan partisi horizontal pada tabel dan indeks tabel. Hanya tabel dari basis data dalam mode AUTO yang dapat dipartisi secara otomatis. Fitur partisi otomatis tidak tersedia untuk basis data dalam mode DRDS.

Contoh:

Anda dapat menjalankan pernyataan berikut dalam sintaks MySQL standar tanpa menentukan item konfigurasi terkait partisi untuk membuat tabel bernama tb:

CREATE TABLE tb(a INT, b INT, PRIMARY KEY(a));
  • Jika Anda menjalankan pernyataan DDL sebelumnya pada basis data dalam mode DRDS, tabel non-partisi akan dibuat.

    Anda dapat menjalankan pernyataan SHOW untuk melihat detail pernyataan CREATE TABLE.

    SHOW FULL CREATE TABLE tb \G
    *************************** 1. row ***************************
           Table: tb
    Create Table: CREATE TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
    1 row in set (0.02 sec)
  • Jika Anda menjalankan pernyataan DDL sebelumnya pada basis data dalam mode AUTO, tabel partisi akan dibuat. Tabel tersebut dipartisi secara otomatis berdasarkan kunci utama. Anda dapat menjalankan pernyataan SHOW untuk melihat detail pernyataan CREATE TABLE.

    SHOW FULL CREATE TABLE tb \G
    *************************** 1. row ***************************
           TABLE: tb
    CREATE TABLE: CREATE PARTITION TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
    PARTITION BY KEY(`a`)
    PARTITIONS 16
    1 row in set (0.01 sec)

Jika basis data dalam mode AUTO, Anda dapat membuat tabel dengan menggunakan sintaks MySQL standar, seperti sintaks untuk membuat indeks. Fitur partisi otomatis dari PolarDB-X menyediakan kemampuan basis data terdistribusi, seperti distribusi transparan, penskalaan otomatis, dan manajemen partisi.

Manual partitioning

Saat menggunakan metode partisi manual untuk membuat tabel, Anda perlu menentukan item konfigurasi terkait partisi seperti kunci partisi dan kebijakan partisi. Jika tabel dipartisi secara manual, sintaks yang digunakan untuk membuat tabel dalam basis data dalam mode AUTO berbeda dari sintaks yang digunakan untuk membuat tabel dalam basis data dalam mode DRDS.

  • Mode AUTO: Anda dapat menggunakan sintaks MySQL standar untuk membuat tabel partisi. Kebijakan partisi seperti partisi hash, partisi rentang, dan partisi daftar didukung.

    Dalam contoh berikut, klausa PARTITION BY HASH(a) digunakan untuk menentukan kunci partisi a dan kebijakan partisi hash.

    CREATE TABLE tb (a INT, b INT, PRIMARY KEY(a))
        -> PARTITION by HASH(a) PARTITIONS 4;
    Query OK, 0 rows affected (0.83 sec)
    
    SHOW FULL CREATE TABLE tb\G
    *************************** 1. row ***************************
           TABLE: tb
    CREATE TABLE: CREATE TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
    PARTITION BY KEY(`a`)
    PARTITIONS 4
    1 row in set (0.02 sec)
  • Mode DRDS: Anda dapat menggunakan sintaks sharding untuk basis data dalam mode DRDS saat membuat tabel. Hanya kebijakan hash yang didukung.

    Dalam contoh berikut, klausa DBPARTITION BY HASH(a) TBPARTITION BY HASH(a) digunakan untuk menentukan bahwa kolom a adalah kunci sharding.

    CREATE TABLE tb (a INT, b INT, PRIMARY KEY(a))
        -> DBPARTITION by HASH(a)
        -> TBPARTITION by HASH(a)
        -> TBPARTITIONS 4;
    Query OK, 0 rows affected (1.16 sec)
    
    SHOW FULL CREATE TABLE tb\G
    *************************** 1. row ***************************
           Table: tb
    Create Table: CREATE TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4  dbpartition by hash(`a`) tbpartition by hash(`a`) tbpartitions 4
    1 row in set (0.02 sec)

Perbandingan Algoritma Routing yang Digunakan untuk Tabel Partisi dan Tabel Bersharding

Perbedaan utama antara tabel partisi dan tabel bersharding adalah algoritma routing yang digunakan untuk tabel partisi berbeda dari algoritma routing yang digunakan untuk tabel bersharding.

  • Dalam algoritma routing yang digunakan untuk tabel bersharding, nilai hash dan jumlah shard tabel fisik digunakan untuk melakukan operasi modulo. Jika Anda ingin mengubah jumlah shard, nilai hash dari semua data perlu dihitung ulang. Misalnya, jika Anda ingin mengubah jumlah shard dari empat menjadi lima, Anda perlu menghitung ulang nilai hash untuk semua data. Algoritma routing yang digunakan untuk sharding tabel dalam mode DRDS tidak cocok untuk skenario di mana Anda ingin mengubah jumlah shard.

  • Algoritma routing default yang digunakan untuk tabel partisi adalah algoritma hashing konsisten berbasis rentang. Algoritma ini memungkinkan Anda melakukan operasi pada partisi, seperti membagi partisi dan menggabungkan partisi, untuk mengubah jumlah partisi. Anda tidak perlu menghitung ulang nilai hash untuk semua data saat menggunakan algoritma ini. Dalam mode AUTO, Anda dapat mengubah jumlah partisi dari sebuah tabel.

Perbandingan Fitur yang Disediakan untuk Basis Data dalam Mode AUTO dan Mode DRDS

Dibandingkan dengan basis data dalam mode DRDS, basis data dalam mode AUTO mendukung fitur baru seperti partisi otomatis, pemisahan data panas, penjadwalan partisi, dan tabel time to live (TTL). Fitur distribusi yang disediakan untuk basis data dalam mode AUTO juga dioptimalkan berdasarkan berbagai dimensi seperti manajemen partisi dan modifikasi partisi.

Tabel berikut menjelaskan perbedaan antara fitur yang disediakan untuk basis data dalam mode AUTO dan mode DRDS.

Fitur

Basis Data dalam Mode AUTO

Basis Data dalam Mode DRDS

Distribusi Transparan

Partisi Berbasis Kunci Utama Default

Didukung. Jika Anda tidak mengonfigurasi kebijakan partisi saat membuat tabel, tabel akan dipartisi secara otomatis berdasarkan kunci utama.

Tidak Didukung.

Indeks Sekunder Global (GSIs) Default

Didukung. Jika Anda tidak menentukan kebijakan partisi untuk tabel indeks, tabel indeks akan dipartisi secara otomatis berdasarkan kolom kunci indeks.

Tidak Didukung.

Keseimbangan Beban

Didukung.

Tidak Didukung.

Distribusi Data Panas

Didukung.

Tidak Didukung.

Kebijakan Partisi

Partisi Hash dan Partisi Kunci

Didukung. Algoritma routing hashing konsisten digunakan. Data panas dapat dibagi menjadi beberapa partisi dan didistribusikan di antara beberapa node data.

Operasi modulo dapat dilakukan berdasarkan jumlah shard untuk merutekan data. Data panas tidak dapat dibagi menjadi beberapa shard dan didistribusikan di antara beberapa node data.

Partisi Rentang dan Partisi Kolom Rentang

Didukung. Data panas dapat dibagi menjadi beberapa partisi dan didistribusikan di antara beberapa node data.

Tidak Didukung.

Partisi Daftar dan Partisi Kolom Daftar

Didukung.

Tidak Didukung.

Vektor Kunci Partisi (Beberapa kolom digunakan sebagai kunci partisi.)

Didukung. Vektor dapat digunakan sebagai kunci partisi. Misalnya, Anda dapat menggunakan klausa PARTITION BY KEY(c1,c2,c3) untuk mempartisi tabel.

Tidak Didukung.

Urutan Kunci Partisi

Didukung.

Tidak Didukung.

Tabel Non-Partisi dan Tabel Siaran

Didukung.

Didukung.

Manajemen Partisi

Pembuatan, Penghapusan, dan Modifikasi Partisi

Didukung.

Tidak Didukung.

Pemisahan dan Penggabungan Partisi

Didukung.

Tidak Didukung.

Migrasi Partisi

Didukung.

Tidak Didukung.

Pengosongan Partisi

Didukung.

Tidak Didukung.

Analisis Partisi Data Panas

Fitur ini akan segera dirilis. Partisi data panas dapat dianalisis secara otomatis.

Tidak Didukung.

Modifikasi Tabel

Perubahan Jenis Tabel (Jenis tabel dapat diubah menjadi tabel non-partisi, tabel siaran, dan tabel partisi.)

Didukung.

Didukung.

Modifikasi Partisi (Jumlah partisi, jenis kunci partisi, dan kebijakan partisi dapat diubah.)

Didukung.

Didukung.

Penskalaan Otomatis

Apakah operasi penulisan data terganggu selama operasi penskalaan

Tidak

Ya. Operasi penulisan data terganggu untuk jangka waktu singkat.

Apakah operasi DDL lainnya dapat dilakukan selama operasi penskalaan

Ya.

Tidak

Lokalitas

Isolasi Penyimpanan Statis

Didukung. Anda dapat menentukan sumber daya penyimpanan fisik saat membuat basis data, tabel, dan partisi.

Didukung. Anda dapat menentukan sumber daya penyimpanan fisik saat membuat basis data dan tabel.

Isolasi Penyimpanan Dinamis

Didukung. Anda dapat memodifikasi sumber daya penyimpanan fisik yang digunakan untuk basis data dan tabel secara dinamis.

Tidak Didukung.

Kompatibel dengan Penskalaan Otomatis

Ya.

Tidak

Pemangkasan Partisi

Pemangkasan Partisi Berdasarkan Awalan

Didukung.

Saat Anda menggunakan PARTITION BY KEY(a,b,c) untuk mempartisi tabel, Kolom a, Kolom b, dan Kolom c digunakan sebagai vektor kunci partisi. Dalam skenario di mana a=100 dan b=100 digunakan dalam query, atau dalam skenario di mana a=100 digunakan dalam query, pemangkasan partisi dipicu.

Tidak Didukung.

Folding Konstan dalam Ekspresi Perhitungan

Didukung.

Sebagai contoh, pemangkasan partisi dapat dilakukan berdasarkan kondisi pk = POW(2, 4) yang berisi ekspresi perhitungan.

Tidak Didukung. Kunci partisi harus ditentukan oleh konstanta seperti pk = 123. Jika kunci partisi ditentukan oleh ekspresi perhitungan seperti pk = POW(2, 4), sistem memindai seluruh tabel.

Opsi Sensitivitas Huruf Besar-Kecil dan Mengabaikan Spasi di Akhir Baris dalam Konfigurasi Routing Partisi

Didukung.

Anda dapat menentukan urutan untuk kunci partisi untuk menentukan apakah akan memastikan sensitivitas huruf besar-kecil dan mengabaikan spasi di akhir baris dalam routing partisi.

Tidak Didukung. Urutan tidak dapat digunakan untuk kolom kunci partisi. Jika Anda menggunakan algoritma hash, sensitivitas nilai dapat dipastikan, dan spasi yang ditentukan di akhir baris tidak dapat diabaikan.

Penurunan Operasi Join

Didukung.

Saat operasi dilakukan pada partisi, seperti membagi, menggabungkan, dan memigrasikan partisi, proses penurunan operasi join tidak terpengaruh.

Didukung.

Pemilihan Partisi

Didukung.

Anda dapat menggunakan pernyataan SELECT untuk menanyakan data dari partisi tertentu. Sebagai contoh, Anda dapat menjalankan SELECT * FROM tb PARTITIONS (p1) untuk menanyakan data dari partisi p1.

Tidak Didukung.

TTL

Didukung.

Tidak Didukung.

AUTO_INCREMENT

Didukung. Nilai dalam kolom auto-increment bersifat unik secara global, meningkat secara monoton, dan berurutan.

Didukung. Nilai dalam kolom auto-increment bersifat unik secara global tetapi mungkin tidak meningkat secara monoton dan berurutan.

Perbandingan Kinerja Basis Data dalam Mode DRDS dan Mode AUTO

Algoritma routing yang digunakan untuk sharding tabel dalam mode DRDS berbeda dari algoritma routing yang digunakan untuk partisi tabel dalam mode AUTO. Sysbench digunakan untuk melakukan pengujian benchmark untuk basis data PolarDB-X untuk mendapatkan permintaan per detik (QPS) saat algoritma digunakan dalam skenario pengujian Sysbench yang berbeda. Anda dapat menggunakan hasil pengujian untuk mengevaluasi perbedaan antara kinerja algoritma routing.

Test environment

  • Jenis instance PolarDB-X: polarx.x4.2xlarge.2e

    • CN (16C64G) × 2

    • DN (16C64G) × 2

  • Versi: 5.4.13-16415631

  • Pengaturan partisi tabel dan pengaturan sharding tabel:

    • Partisi Tabel:

      • 32 partisi

      • Klausa partisi: PARTITION BY HASH(id) PARTITIONS 32

      • Total volume data: 160 juta baris

    • Sharding Tabel:

      • 32 shard tabel fisik

      • Klausa sharding: DBPARTITION BY HASH(id) TBPARTITION BY HASH(id) TBPARTITION 2

      • Total volume data: 160 juta baris

Test scenario

Daftar berikut menjelaskan skenario di mana pengujian Sysbench dilakukan:

  • oltp_point_select: Pernyataan yang hanya mencakup kondisi kesetaraan dieksekusi untuk melakukan operasi pembacaan titik. Kunci partisi tabel digunakan dalam klausa WHERE.

  • oltp_read_only: Pernyataan yang mencakup operator BETWEEN atau kondisi kesetaraan dieksekusi untuk melakukan operasi pembacaan rentang kecil dan pembacaan titik dalam transaksi. Kunci partisi tabel digunakan dalam klausa WHERE.

  • oltp_read_write: Operasi pembacaan titik, operasi penulisan titik, operasi pembacaan rentang kecil, dan operasi penulisan rentang kecil dilakukan berdasarkan kunci partisi tabel untuk memproses transaksi.

Test results

Hasil analisis berikut diperoleh berdasarkan hasil pengujian sebelumnya:

  • Algoritma routing hashing konsisten yang digunakan dalam partisi tabel lebih kompleks daripada algoritma routing hash modular yang digunakan dalam sharding. Dalam skenario di mana query oltp_point_select dilakukan, QPS untuk partisi tabel serupa dengan QPS untuk sharding.

  • Ekspresi dalam pernyataan yang digunakan untuk melakukan query oltp_read_only dan oltp_read_write lebih kompleks daripada ekspresi dalam pernyataan yang digunakan untuk melakukan query oltp_point_select karena query rentang kecil diperlukan dalam query oltp_read_only dan oltp_read_write. Dalam hal ini, QPS keseluruhan pada tabel partisi sekitar 33% lebih tinggi daripada QPS keseluruhan pada tabel bersharding karena tabel partisi dipangkas.

FAQ

  • How do I determine whether to create a database in AUTO mode or DRDS mode?

    Mode AUTO didukung di PolarDB-X V5.4.13 dan versi yang lebih baru. Jika aplikasi Anda bermigrasi dari PolarDB-X 1.0, Anda hanya dapat menggunakan basis data dalam mode AUTO. Saat Anda menerapkan aplikasi baru, Anda dapat menggunakan basis data dalam mode AUTO.

  • How do I determine whether to use the automatic partitioning method or manual partitioning method when I create a table in a database in AUTO mode?

    Jika tabel yang Anda buat digunakan untuk pengujian aplikasi, Anda dapat menggunakan metode partisi otomatis untuk mempartisi tabel. Jika Anda ingin memodifikasi partisi untuk mengoptimalkan kinerja basis data, Anda dapat menjalankan pernyataan DDL ALTER PARTITION untuk mengubah metode partisi tabel. Jika Anda mengetahui pernyataan SQL yang digunakan dalam skenario bisnis Anda dan memahami hubungan yang didefinisikan antara tabel individu, Anda dapat menggunakan metode partisi manual saat membuat tabel.

  • How can I change the mode of a database from DRDS to AUTO?

    Untuk PolarDB-X V5.4.16 dan versi yang lebih baru, Anda dapat menggunakan salah satu dari metode berikut untuk mengubah mode basis data dari DRDS ke AUTO. Untuk PolarDB-X dengan versi lebih lama dari V5.4.16, hanya metode 2 dan 3 yang didukung. Untuk informasi lebih lanjut tentang cara melihat versi instance PolarDB-X, lihat Lihat versi instance.

    • Metode 1: PolarDB-X V5.4.16 dan versi yang lebih baru memungkinkan Anda mengubah mode basis data dari DRDS ke AUTO dengan menjalankan pernyataan CREATE DATABASE LIKE atau CREATE DATABASE AS. Untuk informasi lebih lanjut, lihat Konversi basis data dalam mode DRDS ke basis data dalam mode AUTO.

    • Metode 2: Anda dapat membuat basis data dalam mode AUTO di instance tujuan dan membuat tabel di basis data tersebut. Kemudian, gunakan Data Transmission Service (DTS) untuk memigrasikan data dari basis data sumber yang berada dalam mode DRDS ke tabel di basis data tujuan yang berada dalam mode AUTO.

    • Metode 3: Jalankan perintah mysqldump untuk mengekspor file data dari basis data sumber yang berada dalam mode DRDS, tidak termasuk pernyataan CREATE TABLE. Kemudian, buat basis data dalam mode AUTO dan buat tabel di basis data tersebut. Kemudian, jalankan perintah source untuk mengimpor file data yang telah diekspor ke basis data tujuan yang berada dalam mode AUTO.

  • What is the number of partitions that are generated if I use the automatic partitioning method when I create a table in a database in AUTO mode?

    Jumlah partisi tabel dalam mode AUTO dihitung dengan menggunakan rumus berikut: Number of nodes that is specified when the instance is created × 8. Sebagai contoh, jika Anda menentukan 2 sebagai nilai parameter Nodes saat membuat instance, jumlah partisi tabel yang dipartisi secara otomatis adalah 16. Jumlah partisi tabel yang dipartisi secara otomatis tetap tidak berubah meskipun Anda menambahkan node ke instance. Jika Anda ingin mengubah jumlah partisi tabel, Anda dapat memodifikasi nilai parameter AUTO_PARTITION_PARTITIONS.

  • Can I change the number of partitions of a table that is automatically partitioned?

    Ya, Anda dapat mengubah jumlah partisi tabel. Untuk mengubah jumlah partisi tabel yang dipartisi secara otomatis, modifikasi nilai parameter AUTO_PARTITION_PARTITIONS untuk instance yang berisi tabel tersebut. Konfigurasi parameter AUTO_PARTITION_PARTITIONS berlaku untuk semua tabel dalam instance. Setelah nilai parameter AUTO_PARTITION_PARTITIONS dimodifikasi, jumlah partisi tabel baru yang dibuat dengan menggunakan metode partisi otomatis sama dengan nilai baru parameter AUTO_PARTITION_PARTITIONS. Perhatikan bahwa jika jumlah partisi dalam tabel baru berbeda dari jumlah partisi dalam tabel asli, operasi JOIN antara kedua tabel tidak dapat diturunkan, yang memengaruhi efisiensi eksekusi. Kami merekomendasikan agar Anda secara manual menyetel jumlah partisi dalam tabel baru agar sesuai dengan jumlah partisi dalam tabel asli. Untuk informasi lebih lanjut, lihat Gunakan ALTER TABLE untuk memodifikasi partisi tabel (mode AUTO).