Profil kueri menangkap informasi eksekusi dari semua node pekerja yang terlibat dalam suatu kueri. Anda dapat menggunakannya untuk mengidentifikasi hambatan performa kueri secara cepat dalam instans StarRocks melalui analisis visual.
Aktifkan profil kueri
Untuk mengaktifkan profil kueri pada instans Anda, atur variabel enable_profile menjadi true.
SET enable_profile = true;
-
Anda dapat mengaktifkan profil kueri secara global tanpa memengaruhi performa kueri jika instans Anda menggunakan kernel versi 2.5.13 atau lebih baru (seri 2.x) atau 3.1.5 atau lebih baru (seri 3.x).
-
Untuk versi kernel yang lebih lama dari yang disebutkan di atas, lakukan upgrade kernel sebelum mengaktifkan profil kueri guna menghindari penurunan performa kueri.
Struktur profil kueri
Profil kueri terdiri dari lima bagian berikut:
-
Fragment: Sebuah pohon eksekusi. Suatu kueri terdiri dari satu atau beberapa fragment.
-
Fragment instance: Suatu fragment dapat memiliki beberapa instance, masing-masing disebut fragment instance. Setiap instance berjalan pada node komputasi yang berbeda.
-
Pipeline: Rantai eksekusi. Pipeline terdiri dari serangkaian operator. Fragment instance dipecah menjadi satu atau beberapa pipeline.
-
Pipeline driver: Suatu pipeline dapat memiliki beberapa instance, masing-masing disebut pipeline driver, untuk memanfaatkan sepenuhnya multiple core.
-
Operator: Komponen dari pipeline driver. Pipeline driver terdiri dari beberapa operator.
Visualisasi Profil Kueri
StarRocks Manager memvisualisasikan Profil Kueri sebagai struktur pohon, di mana setiap node merepresentasikan Operator agregat. Klik suatu Operator untuk melihat detailnya pada tab di sisi kanan halaman. Jika tidak ada Operator yang dipilih, sisi kanan akan menampilkan ikhtisar Query.
Ikhtisar eksekusi
Halaman Execution Details menampilkan pohon rencana eksekusi visual di sebelah kiri. Setiap node operator diberi label waktu eksekusi dan persentasenya. Node yang mengonsumsi banyak waktu, seperti HASH_JOIN, disorot dengan warna merah. Garis antar node menunjukkan jumlah baris yang diproses. Di sisi kanan, bagian atas menampilkan daftar node yang diurutkan berdasarkan persentase waktu, sedangkan bagian bawah memberikan ikhtisar metrik ringkasan.
Halaman Execution Details menampilkan metrik ringkasan utama, termasuk waktu eksekusi, performa I/O, dan volume transfer data jaringan.
-
Total
Metric
Description
Total
Total waktu yang dikonsumsi oleh kueri. Ini mencakup durasi fase perencanaan, eksekusi, dan analisis.
PlannerTotalTime
Waktu perencanaan. Ini mencakup penguraian SQL, analisis, optimasi, dan pembuatan rencana eksekusi.
ExecutionWallTime
Waktu eksekusi kueri dan waktu eksekusi sisi BE (waktu dinding eksekusi).
CollectProfileTime
Waktu pengumpulan profil. Ini adalah waktu yang dihabiskan untuk mengumpulkan metrik profil dari BE.
-
Waktu eksekusi
Metric
Description
ExecutionWallTime
Total waktu yang dikonsumsi oleh eksekusi kueri.
CumulativeCpuTime
Jumlah waktu CPU untuk semua node BE. Ini mencerminkan total konsumsi resource CPU.
CpuUtilization
Utilisasi CPU = CumulativeCpuTime / ExecutionWallTime. Ini menunjukkan jumlah rata-rata core CPU yang digunakan.
CumulativeWaitTime
Waktu tunggu kumulatif pipeline. Ini mencakup waktu tunggu penjadwalan (ScheduleTime) dan waktu blocking (PendingTime) akibat kondisi seperti antrian input kosong, antrian output penuh, atau dependensi yang belum siap.
OperatorCumulativetime
Jumlah waktu eksekusi untuk semua operator. Ini mencakup I/O, jaringan, dan komputasi.
IO
Waktu I/O kumulatif untuk semua operator Scan. Ini mencakup pembacaan disk lokal, pembacaan remote, dan akses cache data.
-
I/O
Metric
Description
RawRowsRead
Jumlah total catatan yang dipindai oleh semua node SCAN.
DiskReadBytes
Jumlah total data terkompresi yang dibaca oleh semua node eksekusi SCAN.
LocalDiskReadBytes
Ukuran total data terkompresi yang dibaca dari cache lokal oleh semua node eksekusi Connector Scan. Metrik ini hanya berlaku untuk instans shared-data.
RemoteReadBytes
Ukuran total data terkompresi yang dibaca dari OSS oleh semua node eksekusi Connector Scan. Metrik ini hanya berlaku untuk instans shared-data.
ResultRows
Jumlah total catatan yang dihasilkan oleh semua node eksekusi SCAN.
ResultBytes
Jumlah total data yang dibaca oleh semua node eksekusi SCAN.
-
Jaringan
Metric
Description
Bytes sent over network
Jumlah total byte yang ditransfer oleh semua node eksekusi Exchange. Ini sesuai dengan metrik BytesSent.
Operator
Klik suatu operator untuk melihat informasi berikut di sisi kanan halaman:
-
Tab CoreMetrics: Menampilkan metrik inti untuk operator tersebut.
-
Tab NodeMetrics: Menampilkan semua metrik untuk operator tersebut.
-
Tab Pipeline: Menampilkan metrik untuk pipeline yang berisi operator tersebut. Metrik ini hanya terkait dengan penjadwalan dan tidak memerlukan perhatian khusus.
-
Semakin besar proporsi waktu yang dihabiskan oleh suatu operator, semakin gelap warnanya. Tiga node teratas dengan waktu eksekusi terlama diberi kode warna. Hal ini membantu Anda mengidentifikasi hambatan kueri dengan mudah.
-
Gulir roda mouse atau klik tombol zoom untuk memperbesar dan memperkecil pohon profil.
Metrik utama
Tingkat kueri
-
Metrik ringkasan
Metric
Description
Total
Total waktu yang berlalu untuk kueri, termasuk waktu yang dihabiskan pada fase Planning, Executing, dan Profiling.
QueryCpuCost
Waktu CPU kumulatif yang dikonsumsi oleh kueri. Nilai ini merupakan jumlah waktu CPU dari semua proses konkuren, sehingga dapat melebihi waktu eksekusi aktual.
QueryMemCost
Total memori yang dikonsumsi oleh kueri.
Variables
Variabel yang terkait dengan kueri.
-
Tingkat pipeline
Metric
Description
ActiveTime
Waktu eksekusi driver.
DriverTotalTime
Total waktu yang dikonsumsi oleh driver.
PendingTime
Waktu tunggu driver hingga input dan prasyaratnya tersedia.
Tingkat operator
-
Metrik operator umum
Metric
Description
OperatorTotalTime
Total waktu eksekusi operator.
PushRowNum
Total baris yang dioutput oleh operator.
PullRowNum
Total baris yang diinput ke operator.
PullChunkNum
Total chunk yang diinput ke operator.
PushChunkNum
Total chunk yang dioutput oleh operator.
PeakMemoryUsage
Penggunaan memori puncak operator.
-
Operator OLAP Scan
Metric
Description
Table
Nama tabel.
ScanTime
Total waktu yang dihabiskan untuk operasi pemindaian, yang dilakukan dalam kolam thread I/O asinkron.
TabletCount
Jumlah tablet yang dipindai.
PushdownPredicates
Jumlah predikat yang didorong ke bawah (pushed-down).
BytesRead
Jumlah data yang dibaca.
CompressedBytesRead
Jumlah data terkompresi yang dibaca.
IOTime
Total waktu I/O.
BitmapIndexFilterRows
Jumlah baris yang difilter oleh indeks bitmap.
BloomFilterFilterRows
Jumlah baris yang difilter oleh Bloom filter.
SegmentRuntimeZoneMapFilterRows
Jumlah baris yang difilter oleh runtime zone map.
SegmentZoneMapFilterRows
Jumlah baris yang difilter oleh zone map.
ShortKeyFilterRows
Jumlah baris yang difilter oleh short key.
ZoneMapIndexFilterRows
Jumlah baris yang difilter oleh indeks zone map.
-
Operator Connector Scan
Metrik ini ditambahkan ke metrik Operator OLAP Scan dan berlaku untuk instans yang menggunakan pemisahan komputasi dan penyimpanan.
Metric
Description
CompressedBytesReadLocalDisk
Jumlah data terkompresi yang dibaca dari cache lokal pada node komputasi.
CompressedBytesReadRemote
Total jumlah data terkompresi yang dibaca dari OSS.
IOTimeLocalDisk
Waktu yang dihabiskan untuk operasi I/O saat membaca data dari cache lokal.
IOTimeRemote
Waktu yang dihabiskan untuk operasi I/O saat membaca data dari OSS.
-
Operator Exchange
-
Sink
Metric
Description
PartType
Mode distribusi data. Nilai yang valid:
UNPARTITIONED,RANDOM,HASH_PARTITIONED, danBUCKET_SHUFFLE_HASH_PARTITIONED.BytesSent
Jumlah data yang dikirim.
OverallThroughput
Throughput transfer data secara keseluruhan.
NetworkTime
Waktu yang dihabiskan untuk mengirimkan paket, tidak termasuk waktu pemrosesan setelah penerimaan.
WaitTime
Waktu yang dihabiskan untuk menunggu karena antrian sisi pengirim penuh.
NetworkBandwidth
Lebar pita jaringan yang dihitung selama transfer data.
-
Source
Metric
Description
SenderWaitLockTime
Total waktu yang dihabiskan pengirim menunggu lock.
BytesReceived
Jumlah data yang diterima.
DecompressChunkTime
Total waktu yang dihabiskan untuk mendekompresi chunk data.
DeserializeChunkTime
Total waktu yang dihabiskan untuk mendeserialisasi chunk data.
SenderTotalTime
Total waktu yang dihabiskan oleh pengirim.
-
-
Operator Aggregate
Metric
Description
GroupingKeys
Kolom yang digunakan dalam klausa GROUP BY.
AggregateFunctions
Fungsi agregat yang diterapkan.
AggComputeTime
Waktu yang dihabiskan untuk menghitung fungsi agregat.
ExprComputeTime
Waktu yang dihabiskan untuk menghitung ekspresi.
HashTableSize
Ukuran tabel hash yang digunakan untuk agregasi.
-
Operator Join
-
Probe
Metric
Description
DistributionMode
Mode distribusi data.
JoinType
Jenis join.
OtherJoinConjunctEvaluateTime
Waktu yang dihabiskan untuk mengevaluasi konjungsi join lainnya.
ProbeConjunctEvaluateTime
Waktu yang dihabiskan untuk mengevaluasi konjungsi probe.
SearchHashTableTime
Waktu yang dihabiskan untuk mencari tabel hash.
WhereConjunctEvaluateTime
Waktu yang dihabiskan untuk mengevaluasi konjungsi WHERE.
-
Build
Metric
Description
JoinPredicates
Predikat yang digunakan dalam kondisi join.
JoinType
Jenis join.
BuildBuckets
Jumlah bucket dalam tabel hash join.
BuildHashTableTime
Waktu yang dihabiskan untuk membangun tabel hash untuk join.
RuntimeFilterBuildTime
Waktu yang dihabiskan untuk membangun runtime filter.
RuntimeFilterNum
Jumlah runtime filter.
DistributionMode
Mode distribusi data.
-
-
Operator Fungsi Jendela
Metric
Description
ComputeTime
Waktu yang dihabiskan untuk menghitung fungsi jendela.
PartitionKeys
Kunci yang digunakan untuk mempartisi jendela.
AggregateFunctions
Fungsi agregat yang diterapkan.
-
Operator Pengurutan
Metric
Description
SortKeys
Kunci pengurutan.
SortType
Metode pengurutan yang digunakan, seperti full sort atau top-N sort.
MergingTime
Waktu yang dihabiskan untuk menggabungkan run data yang telah diurutkan.
SortingTime
Waktu yang dihabiskan untuk mengurutkan data.
-
Operator TableFunction
Metric
Description
TableFunctionExecTime
Waktu yang dihabiskan untuk menghitung fungsi tabel.
TableFunctionExecCount
Jumlah kali fungsi tabel dieksekusi.
-
Operator Project
Metric
Description
ExprComputeTime
Waktu yang dihabiskan untuk menghitung ekspresi.
CommonSubExprComputeTime
Waktu yang dihabiskan untuk menghitung subekspresi umum.
-
Operator LocalExchange
Metric
Description
Type
Jenis local exchange. Nilai yang valid:
Passthrough,Partition, danBroadcast.ShuffleNum
Jumlah shuffle. Metrik ini hanya berlaku ketika
TypebernilaiPartition.