全部产品
Search
文档中心

AnalyticDB:Kondisi filter tanpa penurunan

更新时间:Jul 06, 2025

Topik ini menjelaskan cara dan situasi penggunaan kondisi filter tanpa penurunan.

Ikhtisar

Secara default, AnalyticDB for MySQL membuat indeks untuk semua kolom saat pembuatan tabel, meningkatkan efisiensi penyaringan data. Namun, dalam beberapa skenario, penggunaan indeks mungkin tidak memberikan efisiensi penyaringan yang optimal atau bahkan menurunkan kinerja keseluruhan. Dalam kasus seperti itu, disarankan untuk tidak menggunakan indeks dalam penyaringan data. Meskipun Anda dapat menghapus indeks secara manual untuk beberapa kolom, hal ini dapat menyebabkan ketiadaan indeks ketika dibutuhkan. AnalyticDB for MySQL mendukung kondisi filter tanpa penurunan untuk sementara memblokir kemampuan penurunan kondisi filter pada level kueri atau kluster, sehingga meningkatkan efisiensi kueri keseluruhan.

Berikut adalah skenario di mana disarankan untuk tidak menggunakan indeks dalam penyaringan data:
  • Jumlah nilai unik yang kecil. Ini berarti sejumlah besar data dikembalikan setelah penyaringan. Dalam hal ini, indeks mungkin tidak cocok untuk penyaringan data.
  • Penggunaan disk I/O yang tinggi. Jika banyak sumber daya I/O digunakan karena karakteristik kueri atau penulisan data, indeks yang digunakan untuk penyaringan dapat menyebabkan persaingan untuk sumber daya disk I/O dan menurunkan efisiensi penyaringan.
  • Penurunan beberapa kondisi. Jika beberapa kondisi diturunkan dan mencakup operasi kompleks seperti LIKE dan perbandingan string, sejumlah besar sumber daya pada node penyimpanan akan dikonsumsi, mempengaruhi kinerja keseluruhan.

Periksa apakah kondisi filter diturunkan

Anda dapat memeriksa apakah kondisi filter diturunkan di halaman eksekusi.

  1. Pada tab Execution Plan, klik tahap yang berisi operator TableScan.
    Catatan Untuk informasi lebih lanjut tentang cara menuju ke tab Execution Plan, lihat Lihat Hasil Diagnosis.
  2. Klik View Stage Plans.
  3. Di halaman rencana tahap, klik operator TableScan.
  4. Di bagian Properties di sebelah kanan, periksa apakah properti PushedDownFilter ditampilkan. Jika kondisi filter diturunkan, properti tersebut akan ditampilkan; jika tidak, properti tersebut tidak akan muncul. sql-exe-plan-attribute
    Catatan Anda juga dapat memeriksa apakah kondisi filter diturunkan melalui rencana eksekusi.
    • Untuk kluster dalam mode elastis, periksa apakah operator Filter ditampilkan dalam rencana eksekusi tahap hilir. Jika operator Filter ditampilkan, kondisi filter terkait dengan operator tersebut tidak diturunkan.
    • Untuk kluster dalam mode cadangan, periksa apakah operator Filter ditampilkan dalam rencana tahap saat ini. Jika operator Filter ditampilkan, kondisi filter terkait dengan operator tersebut tidak diturunkan.

Nonaktifkan penurunan kondisi filter untuk kolom tertentu dalam kueri

Dalam kueri tertentu, Anda dapat menggunakan petunjuk untuk menonaktifkan penurunan kondisi filter untuk kolom tertentu. Operasi ini hanya berlaku untuk kueri yang menggunakan petunjuk.

Sintaksis

  • Jika versi mesin minor adalah 3.1.4 atau lebih baru, gunakan petunjuk berikut:
    /*+ filter_not_pushdown_columns=[Schema1.table1:colName1|colName2;Schema2.table2:colName1|colName2] */
  • Jika versi mesin minor lebih lama dari 3.1.4, gunakan petunjuk berikut:
    /*+ no_index_columns=[table1.colName1;colName2,table2.colName1] */
Penting
  • Saat menonaktifkan penurunan kondisi filter untuk kolom tertentu, Anda dapat menggunakan petunjuk untuk tabel dalam database yang sama atau lintas database. Di versi sebelum 3.1.4, pastikan nama tabel unik di seluruh database saat menggunakan petunjuk lintas database. Jika tidak, petunjuk tersebut dapat memengaruhi tabel tambahan. Di versi 3.1.4 atau lebih baru, Anda dapat menggunakan petunjuk untuk tabel dengan nama yang sama di seluruh database karena format Schema.table membedakan tabel.
  • Untuk informasi lebih lanjut tentang cara melihat versi mesin minor kluster, lihat Bagaimana Cara Saya Melihat Versi Minor Kluster? Untuk memperbarui versi mesin minor kluster, hubungi dukungan teknis.

Contoh

  • Contoh 1:
    Dalam contoh ini, versi mesin minor adalah 3.1.4 atau lebih baru. Dalam kueri saat ini, kondisi filter yang berisi kolom id dan product di tabel table01 dari database test01 tidak diturunkan.
    /*+ filter_not_pushdown_columns=[test01.table01:id|product] */
  • Contoh 2:
    Dalam contoh ini, versi mesin minor adalah 3.1.4 atau lebih baru. Dalam kueri saat ini, kondisi filter yang berisi kolom id dan product di tabel table01 dari database test01 serta kolom key di tabel table03 dari database test02 tidak diturunkan.
    /*+ filter_not_pushdown_columns=[test01.table01:id|product;test02.table03:key] */
  • Contoh 3:
    Dalam contoh ini, versi mesin minor adalah 3.1.4 atau lebih baru. Dalam kueri saat ini, kondisi filter yang berisi kolom id dan product di tabel table02 serta kolom key di tabel table03 tidak diturunkan.
    /*+ no_index_columns=[table02.id;product,table03.key] */

Nonaktifkan penurunan kondisi filter untuk kolom tertentu dalam kluster

Anda dapat mengeksekusi pernyataan berikut untuk menonaktifkan penurunan kondisi filter untuk kolom tertentu di semua kueri kluster saat ini.

Sintaksis

  • Jika versi mesin minor adalah 3.1.4 atau lebih baru, eksekusi pernyataan berikut:
    set adb_config filter_not_pushdown_columns=[Schema1.tableName1:colName1|colName2;Schema2.tableName2:colName1|colName2]
  • Jika versi mesin minor lebih lama dari 3.1.4, eksekusi pernyataan berikut:
    set adb_config no_index_columns=[tableName1.colName1;colName2,tableName2.colName1]
Penting
  • Saat menonaktifkan penurunan kondisi filter untuk kolom tertentu, Anda dapat menggunakan petunjuk untuk tabel dalam database yang sama atau lintas database. Di versi sebelum 3.1.4, pastikan nama tabel unik di seluruh database saat menggunakan petunjuk lintas database. Jika tidak, petunjuk tersebut dapat memengaruhi tabel tambahan. Di versi 3.1.4 atau lebih baru, Anda dapat menggunakan petunjuk untuk tabel dengan nama yang sama di seluruh database karena format Schema.table membedakan tabel.
  • Untuk informasi lebih lanjut tentang cara melihat versi mesin minor kluster, lihat Bagaimana Cara Saya Melihat Versi Minor Kluster? Untuk memperbarui versi mesin minor kluster, hubungi dukungan teknis.

Contoh

Dalam contoh ini, versi mesin minor adalah 3.1.4 atau lebih baru. Dalam semua kueri kluster saat ini, kondisi filter yang berisi kolom id di tabel table02 dari database test02 tidak diturunkan.

set adb_config filter_not_pushdown_columns=[test02.table02:id]