Hacker News

Tiga Lapisan Cache Antara Pilih dan Cakera

Tiga Lapisan Cache Antara Pilih dan Cakera Penerokaan ini menyelidiki tiga, mengkaji kepentingan dan potensi kesannya. — OS Perniagaan Mewayz.

4 min bacaan

Mewayz Team

Editorial Team

Hacker News

Apabila aplikasi anda melancarkan pernyataan SELECT, pertanyaan itu hampir tidak pernah menyentuh cakera berputar atau storan kilat mentah — ia melalui tiga lapisan cache berbeza yang secara senyap menentukan sama ada respons anda tiba dalam mikrosaat atau milisaat. Memahami lapisan ini ialah perbezaan antara platform perniagaan yang berskala dengan mudah dan platform yang bergayut di bawah beban dunia sebenar.

Apa yang Berlaku Apabila Pertanyaan SELECT Meninggalkan Permohonan Anda?

Sebaik sahaja aplikasi anda menghantar pertanyaan SELECT, ia memasuki saluran paip yang tidak pernah diperiksa oleh kebanyakan pembangun. Enjin pangkalan data memintas permintaan sebelum sebarang I/O berlaku, menghuraikan SQL ke dalam pelan pelaksanaan dalaman dan segera merujuk barisan pertahanan pertamanya: cache hasil pertanyaan. Jika pertanyaan yang sama dengan parameter yang sama telah dilaksanakan baru-baru ini, enjin boleh mengembalikan set hasil cache tanpa menyentuh satu halaman data. Ini kadangkala dipanggil cache pertanyaan atau cache hasil, dan pada beban kerja baca tinggi, tulis rendah — seperti papan pemuka analitik dan modul pelaporan — ia boleh menghapuskan sebahagian besar bacaan cakera sepenuhnya.

Wawasan kritikal di sini ialah cache pertanyaan sangat sensitif terhadap mutasi data. Sebarang INSERT, UPDATE atau DELETE pada jadual asas membatalkan keputusan cache yang berkaitan. Inilah sebabnya mengapa sistem transaksi berat tulis sering melumpuhkan cache pertanyaan sepenuhnya dan sebaliknya bergantung pada lapisan yang lebih dalam.

Apakah Kolam Penampan dan Mengapa Ia Lebih Penting Daripada Yang Anda Fikirkan?

Lapisan cache kedua — dan boleh dikatakan paling penting dalam sistem pengeluaran — ialah kumpulan penimbal (dipanggil penimbal kongsi dalam PostgreSQL, kumpulan penimbal InnoDB dalam MySQL). Ini ialah kawasan RAM yang digunakan oleh enjin pangkalan data untuk menyimpan halaman data yang diakses baru-baru ini. Apabila pertanyaan tidak dapat disampaikan daripada cache hasil, enjin menyemak sama ada halaman data yang diperlukan sudah berada dalam kumpulan penimbal sebelum mengeluarkan sebarang bacaan cakera.

Kumpulan penimbal beroperasi berdasarkan prinsip lokaliti temporal dan spatial: data yang diakses baru-baru ini mungkin akan diakses semula dan data yang disimpan berhampiran data yang diakses mungkin akan diakses tidak lama lagi. Pentadbir pangkalan data menyesuaikan saiz kumpulan penimbal sebagai salah satu keputusan konfigurasi leverage tertinggi yang mereka buat. Kolam penimbal yang terlalu kecil menyebabkan pengusiran halaman yang berterusan, menghasilkan fenomena yang dipanggil meronta-ronta, di mana sistem menghabiskan lebih banyak masa menguruskan cache terlepas daripada melaksanakan pertanyaan.

💡 ADAKAH ANDA TAHU?

Mewayz menggantikan 8+ alat perniagaan dalam satu platform

CRM · Pengebilan · HR · Projek · Tempahan · eCommerce · POS · Analitik. Pelan percuma selama-lamanya tersedia.

Mula Percuma →

Wawasan Utama: Dalam kebanyakan beban kerja OLTP, kumpulan penimbal bersaiz baik bermakna 95–99% daripada semua bacaan data disampaikan daripada RAM. Set kerja — subset data anda yang sering ditanya pertanyaan — selalunya jauh lebih kecil daripada jumlah saiz pangkalan data. Saiz kumpulan penimbal anda agar sesuai dengan set kerja anda, bukan keseluruhan set data anda, ialah satu-satunya tindakan penalaan pulangan tertinggi yang boleh anda ambil.

Bagaimanakah Cache Sistem Pengendalian Mengisi Jurang Antara RAM dan Cakera?

Walaupun apabila kumpulan penimbal pangkalan data sendiri terlepas, pertanyaan belum lagi ditakdirkan untuk bacaan cakera sebenar. Sistem pengendalian mengekalkan cache halaman (juga dipanggil cache sistem fail), kawasan RAM yang diuruskan kernel yang menampan membaca dan menulis untuk menyekat peranti. Apabila enjin pangkalan data meminta halaman yang tiada dalam kumpulan penimbalnya, kernel OS menyemak cache halamannya sendiri sebelum mengeluarkan arahan I/O fizikal kepada pengawal storan.

Lapisan ketiga ini sebahagian besarnya tidak dapat dilihat oleh pembangun aplikasi tetapi sangat penting pada sistem yang kumpulan penimbal pangkalan data kurang diperuntukkan. Cache halaman OS dikongsi merentas semua proses, jadi ia bersaing dengan pelayan aplikasi anda, pelayan web dan mana-mana perisian lain yang dijalankan pada hos yang sama. Pada pelayan pangkalan data khusus, persaingan ini adalah minimum, dan cache OS menyediakan penimbal peluang kedua yang bermakna. Pada hos kongsi atau bekas dengan had memori yang ketat, cache OS selalunya terlalu kecil untuk membantu.

Lapisan Cache manakah yang Bertanggungjawab untuk Kemenangan Prestasi Terbanyak dalam Amalan?

Dalam sistem pengeluaran dunia sebenar, kumpulan penimbal domi

Ready to Simplify Your Operations?

Whether you need CRM, invoicing, HR, or all 207 modules — Mewayz has you covered. 138K+ businesses already made the switch.

Get Started Free →

Cuba Mewayz Percuma

Platform semua-dalam-satu untuk CRM, pengebilan, projek, HR & banyak lagi. Kad kredit tidak diperlukan.

Panduan Berkaitan

Panduan Pengurusan HR →

Urus pasukan anda dengan berkesan: profil pekerja, pengurusan cuti, gaji, dan penilaian prestasi.

Mula menguruskan perniagaan anda dengan lebih bijak hari ini

Sertai 30,000+ perniagaan. Pelan percuma selama-lamanya · Kad kredit tidak diperlukan.

Jumpa ini berguna? Kongsikannya.

Bersedia untuk mempraktikkannya?

Sertai 30,000+ perniagaan yang menggunakan Mewayz. Pelan percuma selama-lamanya — kad kredit tidak diperlukan.

Start Free Trial →

Bersedia untuk mengambil tindakan?

Mulakan percubaan Mewayz percuma anda hari ini

Platform perniagaan all-in-one. Tiada kad kredit diperlukan.

Mula Percuma →

Percubaan percuma 14 hari · Tiada kad kredit · Batal bila-bila masa