全部产品
Search
文档中心

PolarDB:CTS

更新时间:Jul 06, 2025

PolarDB for MySQL menggunakan PolarTrans untuk meningkatkan kinerja database dalam skenario pemrosesan transaksi online (OLTP) dengan konkurensi tinggi. PolarTrans memanfaatkan Penyimpanan Cap Waktu Komitmen (CTS) sebagai pengganti daftar transaksi aktif untuk mengelola transaksi secara lebih efisien. Topik ini menjelaskan prinsip teknis dan keunggulan CTS di PolarTrans serta membandingkan kinerja database sebelum dan sesudah penggunaan PolarTrans melalui pengujian kinerja dalam skenario standar.

Versi yang didukung

Untuk mengaktifkan SCC, kluster edisi enterprise PolarDB for MySQL Anda harus memenuhi salah satu persyaratan versi berikut:

  • Versi engine adalah 8.0.2 dengan versi revisi 8.0.2.2.19 atau lebih baru.

  • Versi engine adalah 8.0.1 dengan versi revisi 8.0.1.1.29 atau lebih baru.

  • Versi engine adalah 5.7 dengan versi revisi 5.7.1.0.26 atau lebih baru.

Catatan

Untuk informasi lebih lanjut tentang cara memeriksa versi kluster, lihat bagian "Query the engine version" dari topik Versi Engine.

Informasi latar belakang

Database relasional open source utama seperti MySQL dan PostgreSQL memperbarui status transaksi dan menerapkan mekanisme Kontrol Konkurensi Multi-Versi (MVCC) berdasarkan daftar transaksi aktif. Pendekatan berbasis daftar transaksi aktif dapat menyebabkan hambatan kinerja dalam lingkungan dengan konkurensi tinggi dan tidak sepenuhnya memanfaatkan beberapa vCPU untuk memproses transaksi bersamaan. Pendekatan ini juga tidak cukup memenuhi persyaratan untuk konsistensi baca, penulisan multi-titik, dan manajemen transaksi Extended Architecture (XA) dalam arsitektur shared-nothing.

PolarTrans dikembangkan untuk mengatasi masalah ini. Di PolarTrans, Anda tidak perlu memperbarui status transaksi berdasarkan daftar transaksi aktif. Sebagai gantinya, PolarTrans menentukan status transaksi berdasarkan cap waktu komitmen maksimum kluster alih-alih menyalin status transaksi. PolarTrans memberikan solusi yang lebih ringan untuk pembaruan, pengambilan, dan permintaan (penentuan visibilitas) status transaksi. PolarTrans juga mengoptimalkan sebagian besar logika transaksi dengan menerapkan algoritma bebas kunci untuk meningkatkan kinerja database dalam skenario baca-tulis dan tulis-saja.

PolarTrans menggunakan log CTS untuk mencatat data inti transaksi, seperti pembaruan status transaksi, penentuan visibilitas, dan status aktif transaksi.

Log CTS dikelola sepenuhnya di memori untuk memastikan efisiensi dan kecepatan. Setiap transaksi dipetakan modulo ke slot tertentu dalam ring buffer berdasarkan ID transaksi yang ditentukan oleh trx_id. Setiap slot mencakup pointer trx dan nomor urutan komitmen (CSN).

Manfaat

  • Write transaction start

    Saat transaksi tulis dimulai, sistem transaksi tradisional mengalokasikan ID ke transaksi, menambahkan ID ke larik ID transaksi aktif rw_trx_ids, memperbarui dataset rw_trx_set yang mempertahankan pemetaan antara ID transaksi aktif dan transaksi terkait trx, serta menambahkan transaksi ke daftar transaksi terhubung baca-tulis rw_trx_list. Untuk memastikan konsistensi dan integritas data selama proses ini, sistem harus menggunakan trx sys mutex untuk melindungi operasi. Sebaliknya, saat transaksi dimulai, PolarTrans mencatat informasi tentang transaksi di log CTS, mengalokasikan modulo slot ke transaksi berdasarkan ID transaksi yang ditentukan oleh trx_id, dan menandai status transaksi dengan tag aktif khusus. Seluruh proses ini bebas kunci.

  • Write transaction commitment

    Untuk mengomitmenn transaksi tulis, sistem tradisional memeriksa rw_trx_ids, menghapus ID transaksi yang ditentukan oleh trx_id, dan memperbarui rw_trx_set dan rw_trx_list. Untuk memastikan konsistensi dan integritas data selama proses ini, sistem harus menggunakan trx sys mutex untuk melindungi operasi. Untuk mengomitmenn transaksi tulis, PolarTrans hanya perlu menetapkan cap waktu komitmen dan memperbarui bidang CSN di log CTS.

  • Read view

    Mekanisme MVCC InnoDB mengontrol visibilitas data dengan menggunakan read views. Untuk membuat read view, sistem transaksi tradisional harus menyalin larik ID transaksi aktif dan mencatat ID transaksi aktif minimum saat ini dan ID transaksi maksimum. Untuk memastikan konsistensi dan integritas data selama proses ini, sistem harus menggunakan trx sys mutex untuk melindungi operasi. Sistem mungkin perlu memeriksa larik ID transaksi aktif untuk menentukan visibilitas data. Dalam skenario di mana konflik baca-tulis parah terjadi, sistem harus memperbarui dan menyalin status transaksi baca-tulis dan transaksi baca-saja di bawah perlindungan mutex. Ini menghasilkan biaya pemeliharaan tinggi dan mengurangi efisiensi dalam menentukan visibilitas transaksi. PolarTrans menggunakan cap waktu komitmen maksimum sistem alih-alih read views untuk menentukan visibilitas data. Dengan cara ini, Anda hanya perlu membandingkan CSN transaksi baca-saja dan nilai bidang trx csn dalam catatan baris.

Aktifkan PolarTrans

Secara default, setelah Anda mengaktifkan fitur konsistensi global (mode kinerja tinggi), PolarTrans diaktifkan. Untuk informasi tentang cara mengaktifkan fitur konsistensi global (mode kinerja tinggi), lihat bagian "Enable global consistency (high-performance mode)" dari topik Ikhtisar.

Perbandingan kinerja

Kinerja database sebelum dan sesudah PolarTrans diaktifkan diuji. Kinerja diuji berdasarkan permintaan per detik (QPS).

  • Lingkungan Pengujian

    Sebuah kluster PolarDB for MySQL 8.0 dari Edisi Kluster yang dilengkapi dengan 88 core dan 710 GB memori digunakan dalam pengujian.

  • Alat Pengujian

    Sysbench

  • Volume Data yang Diuji

    88 tabel dengan 12 juta baris di setiap tabel.

  • Kasus Pengujian

    Gunakan kasus bawaan SysBench berikut untuk pengujian:

    • oltp_read_write

    • oltp_insert

    • oltp_update_index

    • oltp_update_no_index

    • oltp_read_only

  • Hasil Pengujian

    Hasil pengujian menunjukkan bahwa PolarTrans secara signifikan meningkatkan kinerja keseluruhan database dalam skenario baca-tulis dan tulis-saja. Namun, dalam skenario baca-saja, kinerja database tidak meningkat setelah PolarTrans diaktifkan karena transaksi baca-saja dapat menggunakan cache tampilan baca untuk mengurangi overhead kunci yang dihasilkan ketika database menyalin status transaksi.