Apa itu utas di mysql?

Kueri per detik (QPS) mengukur throughput database, tetapi tidak mencerminkan seberapa keras MySQL bekerja. Yang terakhir ini diukur dengan , dinyatakan sebagai pengukur (sedangkan QPS adalah tingkat). Sebelum membahas Threads_running, mari pertimbangkan analogi

Gambar di atas adalah kluster instrumen digital dari sebuah mobil. Lingkaran besar di sebelah kiri adalah speedometer, dan lingkaran besar di sebelah kanan adalah tachometer. Spedometer sudah tidak asing lagi bagi sebagian besar orang. mereka menunjukkan seberapa cepat mobil itu melaju. Di atas speedometer terbaca 84 km/jam. Tachometer adalah umum tetapi tidak disertakan di setiap kluster instrumen. Mereka menunjukkan seberapa keras mesin bekerja, diukur dalam putaran per menit (RPM). Di atas, tachometer membaca di bawah 3.000 RPM. ("M3" di tengah tachometer adalah gigi transmisi. Kita bisa mengabaikan itu. )

QPS analog dengan kecepatan (84 km/j), dan Threads_running analog dengan RPM (~3k RPM)

Kecepatan dan RPM sangat bervariasi karena banyak faktor. akselerasi dan deselerasi, menanjak atau menurun, headwind atau tailwind, dan (semakin banyak pada mobil baru) pemrograman komputer untuk mengoptimalkan penghematan bahan bakar. Akibatnya, kecepatan yang sama dapat dicapai pada RPM yang berbeda, tetapi biasanya mobil membakar lebih sedikit bahan bakar pada RPM rendah dan lebih banyak bahan bakar pada RPM tinggi. Juga, RPM yang lebih tinggi berarti tekanan yang lebih besar pada mesin yang meningkatkan kemungkinan kerusakan mekanis. Kami peduli dengan pembakaran bahan bakar dan kegagalan mekanis karena keduanya merugikan kami. Inilah sebabnya mengapa mobil memiliki takometer. RPM adalah metrik penting

QPS dan Threads_running juga sangat bervariasi karena banyak faktor. spesifikasi perangkat keras (inti dan kecepatan CPU, jenis penyimpanan dan IOP, dll. ), jenis kueri (baca vs. tulis), rencana kueri, ukuran tabel, ukuran baris, skema tabel (tipe kolom, indeks—terutama indeks), pola akses data (semua bacaan vs. semua menulis. vs. campuran), "tetangga berisik", waktu hari (mis. g. jam kerja), waktu tahun (mis. g. musim pajak), promo khusus, aktor jahat, isi ulang—sebutkan saja. Akibatnya, seperti mobil, QPS yang sama dapat dicapai pada Threads_running yang berbeda, jadi ini adalah metrik yang penting

Threads_running menunjukkan seberapa keras MySQL bekerja. Beberapa database tempat saya bekerja melakukan 10.000 QPS dengan hanya 10 utas yang berjalan. Yang lain kesulitan melakukan 3.000 QPS dengan 100 utas berjalan. Dari paragraf sebelumnya kita tahu alasannya. faktor yang bervariasi

QPS sendiri tidak dapat memberi tahu kami apakah MySQL hampir tidak menekankan sistem atau jika, secara kiasan, itu mulai membakar minyak dan terhenti

Sangat penting untuk memantau dan menangani Threads_running yang tinggi. Tachometer memiliki nilai maksimum yang biasanya tidak dapat Anda dorong melebihi mobil, tetapi MySQL sangat ambisius. itu tidak memiliki nilai maksimum dan akan mencoba menjalankan utas sebanyak yang diperlukan. Ini akan mencoba, tetapi akan melambat dan akhirnya gagal saat Threads_running meningkat

Threads_runningMySQL0 - 10Normal. tidak ada masalah untuk hampir semua perangkat keras10 - 30Sibuk. biasanya ok untuk sebagian besar perangkat keras karena server modern memiliki inti CPU sebanyak 30 - 50 Tinggi. sangat sedikit beban kerja yang membutuhkan banyak utas ini berjalan. Ini dapat berfungsi untuk ledakan berkelanjutan ( 100Gagal. dalam kasus yang jarang terjadi, MySQL dapat menjalankan > 100 utas, tetapi diperkirakan gagal dalam kisaran iniKelebihan beban . beberapa perangkat keras dapat menangani ini, tetapi jangan berharap untuk beroperasi dengan sukses dalam kisaran ini. Semburan sesaat (< 5 dtk) dalam kisaran ini biasanya baik untuk perangkat keras lokal produksi kami. > 100 Gagaldalam kasus yang jarang terjadi, MySQL dapat menjalankan > 100 utas, tetapi diperkirakan gagal dalam kisaran ini

TL; nilai pedoman DR

  • Utas_berjalan

Postingan terbaru

LIHAT SEMUA