Rumah > pangkalan data > tutorial mysql > Mengapakah bacaan logik begitu tinggi apabila menggunakan fungsi agregat bertingkap, terutamanya dengan kili subungkapan biasa?

Mengapakah bacaan logik begitu tinggi apabila menggunakan fungsi agregat bertingkap, terutamanya dengan kili subungkapan biasa?

Linda Hamilton
Lepaskan: 2024-12-26 18:47:15
asal
890 orang telah melayarinya

Why are logical reads so high when using windowed aggregate functions, especially with common subexpression spools?

Mengapakah bacaan logik untuk fungsi agregat bertingkap begitu tinggi?

Fungsi agregat bertingkap boleh menghasilkan bacaan logik tinggi dilaporkan dalam pelan pelaksanaan dengan biasa kili subungkapan, terutamanya untuk meja besar. Artikel ini bertujuan untuk menerangkan sebab di sebalik pemerhatian ini dan memberikan pandangan untuk memahami kiraan bacaan logik untuk jadual kerja.

Penjelasan

Bacaan logik dikira secara berbeza untuk jadual kerja berbanding dengan konvensional meja kili. Dalam jadual kerja, setiap baris bacaan diterjemahkan kepada satu "bacaan logik." Ini tidak seperti pelaporan halaman cincang untuk jadual kili "sebenar".

Rasional untuk mengira bacaan dengan cara ini ialah ia menyediakan maklumat yang lebih bermakna untuk analisis. Menjejak halaman cincang untuk jadual kerja kurang berguna disebabkan sifat dalaman struktur ini. Baris pelaporan yang digabungkan dengan lebih baik menggambarkan penggunaan sebenar sumber tempdb.

Penerbitan Formula

Formula yang diperoleh untuk meramalkan bacaan logik jadual kerja ialah:

Worktable logical reads = 1 + (NumberOfRows * 2) + (NumberOfGroups * 4)
Salin selepas log masuk

Formula ini menyumbang kepada berikut:

  • 1: Mewakili beban awal data ke dalam jadual kerja.
  • NumberOfRows * 2: Kedua-dua kili sekunder ( dicipta untuk mengurangkan kos pemulangan baris) dibaca sepenuhnya dua kali.
  • NumberOfGroups * 4: Gili utama mengeluarkan baris seperti yang dijelaskan di bawah, menghasilkan kiraan nilai kumpulan yang berbeza (tambah 1).

Pancaran Barisan Kili Utama

Kili primer, ditugaskan untuk mengumpul baris dan melaksanakan pengiraan agregat, beroperasi seperti berikut:

  • Membaca setiap baris daripada input dan menulisnya ke meja kerja.
  • Apabila kumpulan baharu ditemui, ia memancarkan baris kepada pengendali gelung bersarang, menunjukkan permulaan kumpulan baharu partition.
  • Purata bagi setiap kumpulan dikira menggunakan baris dalam jadual kerja.
  • Purata dicantumkan dengan baris dalam jadual kerja.
  • Meja kerja dipotong untuk menyediakan kumpulan seterusnya.
  • Untuk memproses kumpulan terakhir, gelendong mengeluarkan dummy baris.

Pertimbangan Tambahan

Dalam skrip ujian anda, anda mendapati bahawa mereplikasi proses yang sama menghasilkan bacaan logik yang lebih sedikit (11). Percanggahan ini dikaitkan dengan mengoptimumkan algoritma yang digunakan oleh pemproses pertanyaan dalam persekitaran yang berbeza. Formula kekal sah dalam kes umum apabila gelung bersarang atau cantuman cincang digunakan.

Kesimpulan

Memahami perbezaan pengiraan untuk bacaan logik dalam jadual kerja adalah penting untuk mentafsir pelan pelaksanaan dengan tepat yang melibatkan fungsi agregat bertingkap. Formula yang disediakan menawarkan cara yang berguna untuk menganggarkan bacaan logik jadual kerja, membantu dalam analisis prestasi dan usaha pengoptimuman.

Atas ialah kandungan terperinci Mengapakah bacaan logik begitu tinggi apabila menggunakan fungsi agregat bertingkap, terutamanya dengan kili subungkapan biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan