Rumah >pangkalan data >MongoDB >Analisis mendalam tentang enjin storan MongoDB (dengan gambarajah skematik)

Analisis mendalam tentang enjin storan MongoDB (dengan gambarajah skematik)

藏色散人
藏色散人ke hadapan
2022-12-06 17:00:183022semak imbas

Artikel ini akan memperkenalkan anda kepada pengetahuan yang berkaitan tentang mongodb dan memperkenalkan enjin storan dalam MongoDB saya harap ia akan membantu anda!

Tinjauan ringkas

Kali terakhir kita bercakap tentang gugusan mongodb, yang dibahagikan kepada gugus tuan-hamba dan gugusan beling Untuk serpihan dalam gugusan beling, di sini adalah keperluan Beri perhatian kepada perkara berikut dan semak bersama-sama:

  • Untuk data panas

tertentu kunci serpihan (titik Kunci shard ialah medan indeks atau medan indeks komposit yang wujud dalam setiap dokumen dalam koleksi) akan menyebabkan semua permintaan baca atau tulis beroperasi pada satu blok data atau shard, yang akan menghasilkan pelayan serpihan tunggal Jika beban terlampau beban, kekunci serpihan yang meningkat sendiri akan menyebabkan masalah penulisan dengan mudah [Disyorkan: Tutorial video MongoDB]

  • Untuk sekatan data tidak boleh dibahagikan

Untuk kunci serpihan berbutir kasar, mungkin menyebabkan banyak dokumen menggunakan kunci serpihan yang sama

Dalam kes ini, dokumen ini tidak boleh dipecahkan kepada berbilang blok data, ini akan mengehadkan keupayaan mongodb untuk mengagihkan data secara sama rata

  • Untuk halangan pertanyaan

kunci pecahan dan pertanyaan Tiada korelasi, yang akan menyebabkan prestasi pertanyaan yang lemah

Untuk perkara di atas, kita harus menyedarinya Jika kita menghadapi masalah yang sama dalam kerja sebenar, kita boleh cuba belajar menanganinya

Hari ini kita melihat secara ringkasApakah enjin storan mongodb

Enjin storan

Bercakap tentang enjin storan mongodb, kita perlu tahu bahawa ia berada dalam mongodb 3.0 Pada masa itu, konsep enjin storan boleh pasang diperkenalkan

Kini terdapat terutamanya enjin ini:

  • Storan WiredTiger enjin
  • inMemory storan enjin

Apabila enjin storan mula-mula keluar, ia menggunakan enjin storan MMAPV1 secara lalai.

Enjin MMAPV1 , kita mungkin tahu dari namanya Dia menggunakan mmap untuk melakukannya, dan menggunakan prinsip pemetaan memori Linux

Enjin MMAPV1 tidak digunakan sekarang kerana enjin storan WiredTiger lebih baik , sebagai contoh, bandingkan WiredTiger mempunyai kelebihan berikut:

  • WiredTiger Prestasi yang lebih baik dalam operasi baca dan tulis

WiredTiger boleh menggunakan lebih baik kuasa pemprosesan sistem berbilang teras

  • WiredTiger Kebutiran kunci lebih kecil

    Enjin MMAPV1 menggunakan kunci aras meja apabila ada operasi serentak pada satu jadual, daya pemprosesan akan terjejas

WiredTiger menggunakan kunci peringkat dokumen, yang meningkatkan konkurensi dan daya pemprosesan

  • WiredTiger Kaedah mampatan adalah lebih baik
WiredTiger menggunakan mampatan awalan, yang menjimatkan penggunaan ruang memori berbanding MMAPV1

Dan WiredTiger juga

menyediakan algoritma pemampatan , yang boleh mengurangkan kesan ke atas cakera keras dengan ketara

Prinsip penulisan enjin WiredTiger

Analisis mendalam tentang enjin storan MongoDB (dengan gambarajah skematik)

Seperti yang dapat kita lihat daripada rajah di atas, prinsip menulis ke cakera oleh WiredTiger

juga sangat mudah Permintaan aplikasi

    datang ke mongodb, mongodb melakukan pemprosesan dan menyimpan hasilnya dalam cache
  • Apabila cache mencapai masa
  • 2 G, atau apabila pemasa 60 s tamat tempoh, data dalam cache akan dipadamkan ke cakera Xdm yang berhati-hati akan tahu, kemudian jika ia tepat 59 saat sekarang, 1 Apabila terdapat lebih daripada 1G, data dalam cache tidak disegerakkan ke cakera, dan mongodb menutup telefon secara tidak normal.
  • Kita semua boleh berfikir dengan jari,
Bagaimana mungkin pereka mongodb membenarkan keadaan ini wujud, maka mesti ada penyelesaiannya

, seperti berikut

Analisis mendalam tentang enjin storan MongoDB (dengan gambarajah skematik)Seperti yang ditunjukkan dalam gambar di atas, terdapat tambahan

dan

journaling bufferjournal 文件

penampan jurnal
  • untuk menyimpan penambahan, pemadaman dan pengubahsuaian mongodb Penampan arahan

    fail jurnal
  • adalah serupa dengan log transaksi dalam pangkalan data hubungan

    Dalam mongodb 2.4, fungsi log Journaling didayakan secara lalai

    Apabila kita memulakan tika mongod , perkhidmatan akan menyemak sama ada data perlu dipulihkan

    Jadi tidak akan ada kehilangan data mongodb yang disebutkan di atas

    Selain itu, kita perlu tahu di sini bahawa fungsi pengelogan jurnal Apabilamongodb perlu melakukan operasi tulis, iaitu, apabila menambah, memadam atau mengubah suai, penjurnalan akan menulis log, yang akan menjejaskan prestasi<.>

    Tetapi

    apabila mongodb membaca operasi, ia tidak akan direkodkan dalam cache, jadi ia tidak akan direkodkan dalam log jurnal, jadi operasi baca tidak memberi kesan

    Itu sahaja untuk hari ini saya telah belajar apa yang telah saya pelajari, sila betulkan saya

Atas ialah kandungan terperinci Analisis mendalam tentang enjin storan MongoDB (dengan gambarajah skematik). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Tutorial asas MongoDB 4.XArtikel seterusnya:Tutorial asas MongoDB 4.X