All Products
Search
Document Center

AnalyticDB:Kondisi filter tanpa pushdown

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara dan tempat menggunakan kondisi filter tanpa pushdown.

Ikhtisar

Secara default, AnalyticDB for MySQL membuat indeks untuk setiap kolom saat Anda membuat tabel guna meningkatkan efisiensi penyaringan data. Namun, penggunaan indeks tidak selalu optimal dan terkadang justru menurunkan kinerja secara keseluruhan. Meskipun Anda dapat menghapus indeks secara manual, tindakan tersebut berpotensi menimbulkan masalah jika suatu saat indeks tersebut diperlukan kembali. Fitur untuk menonaktifkan penurunan kondisi filter (filter condition pushdown) di AnalyticDB for MySQL menyediakan solusi yang lebih baik. Fitur ini memungkinkan Anda untuk sementara mencegah kondisi filter pada kolom tertentu diturunkan (pushed down) di tingkat kueri atau kluster, sehingga meningkatkan kinerja kueri secara keseluruhan.

Pertimbangkan untuk menonaktifkan penurunan kondisi filter dalam skenario berikut:

  • Data dengan kardinalitas rendah. Ketika suatu kolom memiliki sedikit nilai unik, penyaringan tetap mengembalikan sejumlah besar data, sehingga indeks menjadi tidak efektif.

  • Tekanan I/O disk tinggi. Jika kueri atau proses penulisan data intensif menyebabkan penggunaan I/O tinggi, penggunaan indeks untuk penyaringan data dapat menimbulkan persaingan atas sumber daya I/O disk dan mengurangi efektivitasnya.

  • Menurunkan beberapa kondisi sekaligus, terutama yang melibatkan operasi kompleks seperti LIKE atau perbandingan string, dapat menghabiskan sumber daya signifikan pada node penyimpanan dan memengaruhi kinerja secara keseluruhan.

Periksa apakah kondisi filter diturunkan

Anda dapat memeriksa apakah kondisi filter diturunkan pada halaman eksekusi.

  1. Pada tab Execution Plan, klik stage yang berisi operator TableScan.

    Catatan

    Untuk informasi tentang cara membuka tab Execution Plan, lihat View diagnostic results.

  2. Klik View Stage Plans.

  3. Pada halaman rencana stage, klik operator TableScan.

  4. Pada panel Properties di sebelah kanan, cari properti PushedDownFilter. Kehadirannya menunjukkan bahwa kondisi filter telah diturunkan. Misalnya, jika nilai properti PushedDownFilter adalah id = BIGINT '277941', hal ini menunjukkan bahwa kondisi filter telah diturunkan ke lapisan penyimpanan.

    Catatan
    • Untuk kluster dalam mode elastis, jika operator Filter muncul dalam rencana eksekusi pada stage downstream, kondisi filter terkait tidak diturunkan.

    • Untuk kluster dalam mode reserved, jika operator Filter muncul dalam rencana stage saat ini, kondisi filter terkait tidak diturunkan.

Nonaktifkan penurunan kondisi filter untuk kolom tertentu dalam suatu kueri

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

Sintaksis

  • Untuk versi mesin minor 3.1.4 atau yang lebih baru, gunakan hint berikut:

    /*+ filter_not_pushdown_columns=[Schema1.table1:colName1|colName2;Schema2.table2:colName1|colName2] */
  • Untuk versi mesin minor sebelum 3.1.4, gunakan hint berikut:

    /*+ no_index_columns=[table1.colName1;colName2,table2.colName1] */
Penting
  • Anda dapat menggunakan hint untuk menonaktifkan penurunan kondisi filter pada kolom tertentu dalam tabel yang berada dalam database yang sama maupun berbeda. Untuk versi mesin minor sebelum 3.1.4, saat menggunakan hint pada tabel lintas database, pastikan nama tabel bersifat unik. Jika tidak, hint tersebut dapat memengaruhi tabel yang tidak dimaksudkan. Pada versi mesin minor 3.1.4 dan yang lebih baru, hint menggunakan format Schema.table untuk membedakan tabel, sehingga mencegah efek yang tidak diinginkan saat menggunakan hint pada tabel dengan nama yang sama di database berbeda.

  • Untuk melihat versi mesin minor kluster Anda, lihat View cluster version information. Untuk melakukan upgrade versi mesin minor, hubungi dukungan teknis.

Contoh

  • Contoh 1:

    Contoh ini berlaku untuk versi mesin minor 3.1.4 atau yang lebih baru. Dalam kueri ini, kondisi filter pada kolom id dan product dari tabel table01 di database test01 tidak diturunkan.

    /*+ filter_not_pushdown_columns=[test01.table01:id|product] */
  • Contoh 2:

    Contoh ini berlaku untuk versi mesin minor 3.1.4 atau yang lebih baru. Dalam kueri ini, kondisi filter pada kolom id dan product dari tabel table01 di database test01, serta pada kolom key dari tabel table03 di database test02 tidak diturunkan.

    /*+ filter_not_pushdown_columns=[test01.table01:id|product;test02.table03:key] */
  • Contoh 3:

    Contoh ini berlaku untuk versi mesin minor sebelum 3.1.4. Dalam kueri ini, kondisi filter pada kolom id dan product dari tabel table02, serta pada kolom key dari tabel table03 tidak diturunkan.

    /*+ no_index_columns=[table02.id;product,table03.key] */

Nonaktifkan penurunan kondisi filter untuk kolom tertentu di seluruh kluster

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

Sintaksis

  • Untuk versi mesin minor 3.1.4 atau yang lebih baru, gunakan pernyataan berikut:

    set adb_config filter_not_pushdown_columns=[Schema1.tableName1:colName1|colName2;Schema2.tableName2:colName1|colName2]
  • Untuk versi mesin minor sebelum 3.1.4, gunakan pernyataan berikut:

    set adb_config no_index_columns=[tableName1.colName1;colName2,tableName2.colName1]
Penting
  • Anda dapat menggunakan hint untuk menonaktifkan penurunan kondisi filter pada kolom tertentu dalam tabel yang berada dalam database yang sama maupun berbeda. Untuk versi mesin minor sebelum 3.1.4, saat menggunakan hint pada tabel lintas database, pastikan nama tabel bersifat unik. Jika tidak, hint tersebut dapat memengaruhi tabel yang tidak dimaksudkan. Pada versi mesin minor 3.1.4 dan yang lebih baru, hint menggunakan format Schema.table untuk membedakan tabel, sehingga mencegah efek yang tidak diinginkan saat menggunakan hint pada tabel dengan nama yang sama di database berbeda.

  • Untuk melihat versi mesin minor kluster Anda, lihat View cluster version information. Untuk melakukan upgrade versi mesin minor, hubungi dukungan teknis.

Contoh

Contoh ini berlaku untuk versi mesin minor 3.1.4 atau yang lebih baru. Untuk semua kueri dalam kluster saat ini, kondisi filter pada kolom id dari tabel table02 di database test02 tidak diturunkan.

set adb_config filter_not_pushdown_columns=[test02.table02:id]