全部产品
Search
文档中心

PolarDB:Penurunan Predikat Penuh

更新时间:Jul 06, 2025

Ketika menjalankan kueri yang melibatkan sejumlah besar data, lapisan SQL mengonsumsi banyak sumber daya komputasi karena membaca data dari lapisan mesin penyimpanan dan melakukan komputasi. Untuk meningkatkan kinerja kueri, PolarDB for MySQL menurunkan predikat ke lapisan mesin penyimpanan. Topik ini menjelaskan fitur penurunan predikat.

Prasyarat

Versi kluster PolarDB for MySQL Anda adalah 8.0, dengan versi revisi berikut:
  • 8.0.1.1.5 atau lebih baru
  • 8.0.2.2.0 atau lebih baru

Untuk informasi lebih lanjut tentang cara memeriksa versi kluster, lihat Kueri versi mesin.

Latar Belakang

Dalam Edisi Komunitas MySQL, kondisi rentang dalam indeks digunakan untuk menentukan rentang data yang dipindai oleh lapisan mesin penyimpanan. Setelah lapisan SQL mendapatkan data dari lapisan mesin penyimpanan, data tersebut difilter ulang berdasarkan kondisi rentang. Proses ini tidak diperlukan, mengonsumsi sumber daya komputasi, dan mencegah komputasi tertentu didorong ke lapisan mesin penyimpanan. Untuk mengatasi masalah ini, PolarDB for MySQL menyediakan fitur penurunan predikat penuh yang menghapus kondisi rentang setelah digunakan untuk memindai data di mesin penyimpanan.

Batasan

Nilai OFFSET harus lebih besar dari 512.
Catatan Untuk menonaktifkan batasan ini, atur parameter ignore_polar_optimizer_rule ke ON. Untuk informasi lebih lanjut, lihat Konfigurasikan parameter kluster dan node.
ParameterTingkatDeskripsi
ignore_polar_optimizer_ruleGlobal dan sesiMenentukan apakah akan menonaktifkan batasan untuk nilai OFFSET. Nilai default: OFF. Nilai valid:
  • ON: Batasan dinonaktifkan.
  • OFF: Batasan diaktifkan.

Menggunakan fitur penurunan predikat penuh

Gunakan variabel detach_range_condition dari parameter loose_optimizer_switch untuk mengaktifkan fitur penurunan predikat penuh. Untuk informasi lebih lanjut, lihat Konfigurasikan parameter kluster dan node.
ParameterTingkatDeskripsi
loose_optimizer_switchGlobal dan sesiMenentukan apakah akan mengaktifkan fitur optimasi kueri PolarDB. Variabel terkait dengan fitur LIMIT OFFSET pushdown:
  • limit_offset_pushdown: menentukan apakah akan mengaktifkan fitur LIMIT OFFSET pushdown. Nilai default: ON. Nilai valid:
    • ON
    • OFF
  • detach_range_condition: menentukan apakah akan mengaktifkan fitur penurunan predikat. Nilai default: ON. Nilai valid:
    • ON
    • OFF

Pengujian Kinerja

Dalam pengujian kinerja ini, skema TPC-H digunakan. Jalankan pernyataan EXPLAIN untuk melihat rencana eksekusi Q2 ketika fitur penurunan predikat penuh dinonaktifkan. Dalam hal ini, Using where dikembalikan untuk parameter Extra, yang menunjukkan bahwa kondisi rentang dipertahankan.
set @@optimizer_switch='detach_range_condition=off';
EXPLAIN SELECT * FROM lineitem WHERE l_orderkey > 10 AND l_orderkey < 60000000 LIMIT 10000000, 10\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: lineitem
   partitions: NULL
         type: range
possible_keys: PRIMARY,i_l_orderkey,i_l_orderkey_quantity
          key: PRIMARY
      key_len: 4
          ref: NULL
         rows: 29.720.232
     filtered: 100,00
        Extra: Using where
Setelah ignore_polar_optimizer_rule disetel ke ON, predikat yang menentukan kondisi rentang dihapus setelah digunakan untuk memindai data di mesin penyimpanan. Dalam contoh ini, Q5 dan Q6 dari TPC-H digunakan. Jalankan pernyataan EXPLAIN untuk melihat rencana eksekusi Q5 dan Q6 ketika fitur penurunan predikat penuh diaktifkan. Using index dikembalikan untuk parameter Extra.
  • Q5
    set @@ignore_polar_optimizer_rule=on;
    EXPLAIN SELECT COUNT(*) FROM lineitem WHERE l_suppkey > 10 AND l_suppkey < 50000\G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: lineitem
       partitions: NULL
             type: range
    possible_keys: i_l_suppkey_partkey,i_l_suppkey
              key: i_l_suppkey
          key_len: 5
              ref: NULL
             rows: 29.720.232
         filtered: 100,00
            Extra: Using index
  • Q6
    set @@ignore_polar_optimizer_rule=on;
    EXPLAIN SELECT COUNT(*) FROM LINEITEM WHERE l_receiptDATE > '1992-01-03' AND l_receiptDATE < '1994-12-31'\G
    *************************** 1. row ***************************
               id: 1
      select_type: SIMPLE
            table: LINEITEM
       partitions: NULL
             type: range
    possible_keys: i_l_receiptdate
              key: i_l_receiptdate
          key_len: 4
              ref: NULL
             rows: 29.720.232
         filtered: 100,00
            Extra: Using index

Hasil Pengujian

Pengujian TPC-H dilakukan dengan faktor skala 10 menggunakan Q5 dan Q6. Gambar berikut menunjukkan perbedaan kinerja antara mengaktifkan dan menonaktifkan fitur penurunan predikat penuh.Predicate pushdown