全部产品
Search
文档中心

ApsaraDB RDS:Laporan pengujian kinerja fitur database Always confidential

更新时间:Jul 06, 2025

Topik ini menjelaskan dampak fitur database Always Confidential terhadap kinerja sistem dalam berbagai skenario, membantu Anda mengevaluasi dan memilih solusi enkripsi.

Lingkungan pengujian

Item konfigurasi

Instance ECS tempat klien pengujian ditempatkan

Instance RDS

Deskripsi

Wilayah dan zona

Shanghai Zone L

Shanghai Zone L

Pengujian dilakukan di wilayah dan zona yang sama.

Tipe jaringan

Jaringan pribadi virtual (VPC)

VPC

Pengujian dilakukan di VPC yang sama.

Jumlah core CPU dan kapasitas memori

64 core, 128 GB

32 core, 64 GB

N/A

Keluarga instans

Tipe komputasi dioptimalkan Type c7

Keluarga instans yang ditingkatkan keamanannya

Instance RDS harus termasuk dalam keluarga instans yang ditingkatkan keamanannya.

Tipe instans

ecs.c7.16xlarge

pg.x2t.4xlarge.2c

N/A

Tipe penyimpanan

SSD Enhanced (ESSD)

ESSD PL1

N/A

Instans atau versi gambar

Alibaba Cloud Linux 3.2104 64-bit

  • Versi mesin utama: PostgreSQL 13

  • Versi mesin minor: 20230830

N/A

Alat pengujian (sysbench)

Sysbench adalah alat benchmark modular, lintas platform, dan multi-threaded yang digunakan untuk mengevaluasi kinerja sistem database dengan beban tinggi berdasarkan metrik inti. Untuk informasi lebih lanjut tentang sysbench dan cara menggunakannya, lihat dokumentasi sysbench.

Metrik kinerja

  • Transaksi per detik (TPS): jumlah transaksi yang berhasil dikomit pada instance RDS per detik.

  • Latensi rata-rata: waktu rata-rata yang diperlukan oleh instance RDS untuk mengeksekusi transaksi. Unit: milidetik.

Skema pengujian

Secara default, sysbench menggunakan skema tabel berikut:

CREATE TABLE test1(
  id INTEGER NOT NULL,
  k INTEGER DEFAULT '0' NOT NULL,
  c CHAR(120) DEFAULT '' NOT NULL,
  pad CHAR(60) DEFAULT '' NOT NULL,
  PRIMARY KEY (id)
);
CREATE INDEX k_1 on test1(k);

Prosedur pengujian

Dalam pengujian ini, kolom tabel dienkripsi untuk menganalisis dampak fitur database Always Confidential terhadap kinerja instance RDS dalam berbagai skenario.

  1. Instal klien PostgreSQL pada instance ECS. Untuk informasi lebih lanjut, lihat Dokumentasi Resmi.

  2. Buka alat baris perintah PostgreSQL (CLI) dan jalankan perintah berikut untuk terhubung ke instance RDS:

    psql -h <Endpoint of the RDS instance> -U <Username> -p <Port number> -d postgres
    Catatan
  3. Buat database uji.

    CREATE DATABASE testdb;
    \c testdb
  4. Buat tabel terenkripsi dan enkripsi kolom berdasarkan skenario yang berbeda.

    Skenario

    Deskripsi

    Contoh Pernyataan SQL

    Kolom kunci utama tidak dienkripsi. Kolom lainnya dienkripsi.

    Dalam sebagian besar skenario, id adalah bidang auto-increment dan tidak relevan dengan bisnis. Dalam skenario pengujian ini, kolom id tidak dienkripsi. Kolom lainnya dienkripsi sebagai informasi sensitif.

    CREATE TABLE test1(
      id INTEGER NOT NULL,
      k enc_int4 DEFAULT '\xa509008855508aade16ec573d21e6aca47ab5e490d7044e748161a6635a5d939c5bbbee4' NOT NULL,
      c enc_text DEFAULT '\x9d39006e340b9cffb37a989ca544e69e6e9c0bdb0b6500a91dcc433dc5df0496' NOT NULL,
      pad enc_text DEFAULT '\x9d39006e340b9cffb37a989ca544e69e6e9c0bdb0b6500a91dcc433dc5df0496' NOT NULL,
      PRIMARY KEY (id)
    );
    CREATE INDEX k_1 on test1(k);

    Semua kolom dienkripsi.

    Dalam skenario pengujian ini, kolom kunci utama juga dienkripsi.

    CREATE TABLE test1(
      id enc_int4 NOT NULL,
      k enc_int4 DEFAULT '\xa509008855508aade16ec573d21e6aca47ab5e490d7044e748161a6635a5d939c5bbbee4' NOT NULL,
      c enc_text DEFAULT '\x9d39006e340b9cffb37a989ca544e69e6e9c0bdb0b6500a91dcc433dc5df0496' NOT NULL,
      pad enc_text DEFAULT '\x9d39006e340b9cffb37a989ca544e69e6e9c0bdb0b6500a91dcc433dc5df0496' NOT NULL,
      PRIMARY KEY (id)
    );
    CREATE INDEX k_1 on test1(k);
  5. Keluar dari instance RDS dan gunakan sysbench untuk memuat data uji.

    Catatan

    Pengujian ini menggunakan sysbench untuk memuat 32 tabel. Setiap tabel berisi satu juta baris rekaman.

    sysbench --db-driver=pgsql \
      --pgsql-host=[database server host] \
      --pgsql-port=[database server port] \
      --pgsql-user=[database user name] \
      --pgsql-password=[database user password] \
      --pgsql-db=testdb \
      --auto_inc=false \
      --table_size=1000000 \
      --tables=32 \
      --threads=32 \
      --time=600 \
      --pg_use_encrypt=[true or false] \
      oltp_common prepare
  6. Jalankan skrip pengujian kustom.

    sysbench --db-driver=pgsql \
      --pgsql-host=[database server host] \
      --pgsql-port=[database server port] \
      --pgsql-user=[database user name] \
      --pgsql-password=[database user password] \
      --pgsql-db=testdb \
      --table_size=1000000 \
      --tables=32 \
      --threads=XXX \
      --time=600 \
      --report-interval=1 \
      --pg_use_encrypt=[true or false] \
      [lua script name] run
  7. Hapus data.

    sysbench --db-driver=pgsql \
      --pgsql-host=[database server host] \
      --pgsql-port=[database server port] \
      --pgsql-user=[database user name] \
      --pgsql-password=[database user password] \
      --pgsql-db=testdb \
      --tables=32 \
      oltp_common cleanup

Skenario pengujian 1: Kolom kunci utama tidak dienkripsi. Kolom lainnya dienkripsi.

Catatan
  • Setiap hasil pengujian ini adalah rata-rata TPS dan latensi pemrosesan dari 10 pengujian, masing-masing dijalankan selama 10 menit.

  • Hasil pengujian juga menunjukkan kerugian kinerja yang disebabkan oleh dekripsi bidang yang dikembalikan di sisi klien.

  • Dalam hasil pengujian, bagan kolom menunjukkan TPS, dan bagan garis menunjukkan latensi pemrosesan transaksi rata-rata.

Data pengujian

  • Kinerja Query Titik

    Persentase

    Template SQL

    100%

    Catatan

    Persentase menunjukkan proporsi pernyataan SQL yang didefinisikan dalam template SQL dan dieksekusi dalam transaksi terhadap total jumlah pernyataan SQL yang dieksekusi dalam transaksi.

    SELECT c FROM test1 WHERE id=?;

    场景1点查询

    Tabel 1 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Kerugian kinerja

    8

    46.99

    39.94

    15.0%

    16

    91.07

    79.86

    12.3%

    24

    132.78

    117.64

    11.4%

    32

    173.58

    154.28

    11.1%

  • Kinerja Query Rentang

    Persentase

    Template SQL

    100%

    SELECT SUM(k) FROM test1 WHERE id BETWEEN ? AND ?;
    Catatan

    Secara default, panjang query rentang adalah 100.

    场景1范围查询

    Tabel 2 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Kerugian kinerja

    8

    14.81

    12.09

    18.3%

    16

    28.88

    23.22

    19.6%

    24

    41.62

    33.12

    20.4%

    32

    54.27

    42.48

    21.7%

  • Kinerja Penulisan

    Persentase

    Template SQL

    25%

    UPDATE test1 SET k=k+1 WHERE id=?;

    25%

    UPDATE test1 SET c=? WHERE id=?;

    25%

    DELETE FROM test1 WHERE id=?;

    25%

    INSERT INTO test1 (id, k, c, pad) VALUES (?, ?, ?, ?);

    场景1写性能

    Tabel 3 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Kerugian kinerja

    8

    6.62

    6.37

    3.8%

    16

    11.36

    10.91

    4.0%

    24

    15.05

    14.68

    2.6%

    32

    19.13

    17.74

    7.3%

Kesimpulan pengujian

Dalam skenario pengujian ini, jika Anda mengaktifkan fitur database Always Confidential, kerugian kinerja rendah.

Skenario pengujian 2: Semua kolom dienkripsi.

Catatan
  • Setiap hasil pengujian ini adalah rata-rata TPS dan latensi pemrosesan dari 10 pengujian, masing-masing dijalankan selama 10 menit.

  • Hasil pengujian juga menunjukkan kerugian kinerja yang disebabkan oleh dekripsi bidang yang dikembalikan di sisi klien.

  • Dalam hasil pengujian, bagan kolom menunjukkan TPS, dan bagan garis menunjukkan latensi pemrosesan transaksi rata-rata.

Data pengujian

  • Kinerja Query Titik

    Persentase

    Template SQL

    100%

    SELECT c FROM test1 WHERE id=?;

    场景2点查询

    Tabel 4 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Kerugian kinerja

    8

    46.99

    18.31

    61.0%

    16

    91.07

    35.66

    60.8%

    24

    132.78

    49.85

    62.5%

    32

    173.58

    63.34

    63.5%

  • Kinerja Query Rentang

    Persentase

    Template SQL

    100%

    SELECT SUM(k) FROM test1 WHERE id BETWEEN ? AND ?;
    Catatan

    Secara default, panjang query rentang adalah 100.

    场景2范围查询

    Tabel 5 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Kerugian kinerja

    8

    14.81

    2.83

    80.9%

    16

    28.88

    5.52

    80.9%

    24

    41.62

    7.12

    82.9%

    32

    54.27

    8.71

    84.0%

  • Kinerja Penulisan

    Persentase

    Template SQL

    25%

    UPDATE test1 SET k=k+1 WHERE id=?;

    25%

    UPDATE test1 SET c=? WHERE id=?;

    25%

    DELETE FROM test1 WHERE id=?;

    25%

    INSERT INTO test1 (id, k, c, pad) VALUES (?, ?, ?, ?);

    场景2写性能

    Tabel 6 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Kerugian kinerja

    8

    6.62

    2.67

    59.7%

    16

    11.36

    4.62

    59.3%

    24

    15.05

    5.92

    60.7%

    32

    19.13

    7.04

    63.2%

Kesimpulan pengujian

Dalam skenario pengujian ini, Anda harus mendekripsi kolom di sisi klien. Selain itu, perintah terkait Intel SGX lebih sering dijalankan untuk meminta indeks kolom terenkripsi. Akibatnya, total biaya dan kerugian kinerja lebih tinggi daripada Skenario Pengujian 1.

Skenario pengujian 3: Kolom non-kunci utama di-query.

Catatan
  • Setiap hasil pengujian ini adalah rata-rata TPS dan latensi pemrosesan dari 10 pengujian, masing-masing dijalankan selama 10 menit.

  • Hasil pengujian juga menunjukkan kerugian kinerja yang disebabkan oleh dekripsi bidang yang dikembalikan di sisi klien.

  • Dalam hasil pengujian, bagan kolom menunjukkan TPS, dan bagan garis menunjukkan latensi pemrosesan transaksi rata-rata.

Dalam skenario pengujian ini, ekstensi encdb_btree yang disediakan oleh Alibaba Cloud digunakan untuk meningkatkan efisiensi operasi terkait indeks ciphertext dalam database Always Confidential. Untuk informasi lebih lanjut, lihat Gunakan Ekstensi encdb_btree.

Data pengujian

  • Query Titik

    Persentase

    Template SQL

    100%

    SELECT c FROM test1 WHERE k=?;

    非主键查询

    Tabel 7 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Fitur database Always confidential diaktifkan dan ekstensi encdb_btree digunakan

    8

    47.27

    18.49

    27.86

    16

    90.41

    35.85

    54.4

    24

    132.66

    49.97

    78.21

    32

    172.96

    63.32

    99.38

  • Query Rentang

    Persentase

    Template SQL

    100%

    SELECT SUM(k) FROM test1 WHERE k BETWEEN ? AND ?
    Catatan

    Secara default, panjang query rentang adalah 100.

    非主键加密范围查询

    Tabel 8 Perbandingan 1.000 TPS

    Jumlah thread konkuren

    Fitur database Always confidential dinonaktifkan

    Fitur database Always confidential diaktifkan

    Fitur database Always confidential diaktifkan dan ekstensi encdb_btree digunakan

    8

    14.97

    2.83

    7.8

    16

    28.89

    5.53

    15.2

    24

    42.38

    7.15

    20.09

    32

    54.8

    8.75

    24.86

Kesimpulan pengujian

Dalam skenario pengujian ini, kinerja query pada kolom non-kunci utama mirip dengan kinerja query pada kolom kunci utama. Setelah fitur database Always Confidential diaktifkan, Anda dapat menggunakan ekstensi encdb_btree untuk meningkatkan kinerja query data ciphertext.

Saran penggunaan

Kami merekomendasikan agar Anda mengaktifkan fitur database Always Confidential hanya untuk mengenkripsi kolom data sensitif.