Apache Ignite дахь өгөгдлийг шахах. Сберийн туршлага

Apache Ignite дахь өгөгдлийг шахах. Сберийн туршлагаИх хэмжээний өгөгдөлтэй ажиллах үед заримдаа дискний зай дутагдах асуудал гарч ирдэг. Энэ асуудлыг шийдэх нэг арга бол шахалт бөгөөд үүний ачаар ижил төхөөрөмж дээр та хадгалах хэмжээг нэмэгдүүлэх боломжтой. Энэ нийтлэлд бид Apache Ignite дээр өгөгдөл шахалт хэрхэн ажилладаг талаар авч үзэх болно. Энэ нийтлэлд зөвхөн тухайн бүтээгдэхүүнд хэрэгжсэн дискийг шахах аргуудыг тайлбарлах болно. Мэдээллийг шахах бусад аргууд (сүлжээгээр, санах ойд) хэрэгжсэн эсэхээс үл хамааран хамрах хүрээнээс гадуур үлдэнэ.

Тиймээс, байнгын горимыг идэвхжүүлснээр кэш дэх өгөгдөл өөрчлөгдсөний үр дүнд Ignite диск рүү бичиж эхэлдэг:

  1. Кэшийн агуулга
  2. Урьдчилсан бүртгэл бичих (цаашид WAL)

WAL шахалтын механизм бий болоод багагүй хугацаа өнгөрч байгаа бөгөөд үүнийг WAL нягтрал гэж нэрлэдэг. Саяхан гарсан Apache Ignite 2.8 нь диск дээрх өгөгдлийг шахах боломжийг олгодог өөр хоёр механизмыг нэвтрүүлсэн: кэшийн агуулгыг шахах дискний хуудасны шахалт болон зарим WAL оруулгуудыг шахах WAL хуудасны агшин зуурын шахалт. Эдгээр гурван механизмын талаар дэлгэрэнгүй мэдээллийг доор харуулав.

Дискний хуудас шахах

Яаж энэ ажлыг хийдэг

Эхлээд Ignite хэрхэн өгөгдлийг хадгалдаг талаар маш товчхон харцгаая. Хуудасны санах ойг хадгалахад ашигладаг. Хуудасны хэмжээг зангилааны эхэнд тохируулсан бөгөөд дараагийн үе шатанд өөрчлөх боломжгүй; мөн хуудасны хэмжээ нь файлын системийн блокийн хэмжээнээс хоёр ба олон дахин их байх ёстой. Шаардлагатай бол хуудсуудыг дискнээс RAM-д ачаалдаг бөгөөд диск дээрх өгөгдлийн хэмжээ нь хуваарилагдсан RAM-ийн хэмжээнээс хэтэрч болно. Хэрэв дискнээс хуудсыг ачаалахад RAM-д хангалттай зай байхгүй бол хуучин, ашиглагдаагүй хуудсыг RAM-аас гаргах болно.

Мэдээллийг дискэн дээр дараах хэлбэрээр хадгалдаг: кэшийн бүлэг бүрийн хуваалт бүрт тусдаа файл үүсгэгддэг; энэ файлд хуудсууд ар араасаа өсөх индексийн дарааллаар гарч ирдэг. Бүтэн хуудасны танигч нь файл дахь кэш бүлгийн танигч, хуваалтын дугаар, хуудасны индексийг агуулна. Тиймээс, бүтэн хуудасны танигчийг ашиглан бид хуудас бүрийн файл болон файл дахь офсетийг өвөрмөц байдлаар тодорхойлж чадна. Та Apache Ignite Wiki нийтлэлээс пейжинг санах ойн талаар дэлгэрэнгүй уншиж болно: Ignite Persistent Store - бүрээсний доор.

Нэрнээс нь харахад дискний хуудсыг шахах механизм нь хуудасны түвшинд ажилладаг. Энэ механизмыг идэвхжүүлсэн үед RAM дахь өгөгдлийг ямар ч шахалтгүйгээр боловсруулдаг боловч хуудсуудыг RAM-аас диск рүү хадгалах үед тэдгээр нь шахагддаг.

Гэхдээ хуудас бүрийг тусад нь шахах нь асуудлыг шийдэх шийдэл биш бөгөөд та үүссэн өгөгдлийн файлуудын хэмжээг ямар нэгэн байдлаар багасгах хэрэгтэй. Хэрэв хуудасны хэмжээг засахаа больсон бол бид хуудаснуудыг дараалан файл руу бичих боломжгүй, учир нь энэ нь хэд хэдэн асуудал үүсгэж болзошгүй юм.

  • Хуудасны индексийг ашигласнаар бид файлд байрлаж буй офсетийг тооцоолох боломжгүй болно.
  • Файлын төгсгөлд байхгүй, хэмжээг нь өөрчилсөн хуудсуудыг яах нь тодорхойгүй байна. Хэрэв хуудасны хэмжээ багасвал түүний чөлөөлсөн зай алга болно. Хэрэв хуудасны хэмжээ нэмэгдэх юм бол та түүнд зориулж файлаас шинэ газар хайх хэрэгтэй.
  • Хэрвээ хуудас нь файлын системийн блокийн хэмжээнээс хэд дахин их биш хэд хэдэн байтаар хөдөлдөг бол түүнийг унших, бичихэд нэг файлын системийн блокийг дарах шаардлагатай бөгөөд энэ нь гүйцэтгэлийн доройтолд хүргэж болзошгүй юм.

Эдгээр асуудлыг өөрийн түвшинд шийдвэрлэхээс зайлсхийхийн тулд Apache Ignite дээр дискний хуудсыг шахах нь сийрэг файл гэж нэрлэгддэг файлын системийн механизмыг ашигладаг. Сийрэг файл нь тэгээр дүүргэсэн зарим хэсгийг "нүх" гэж тэмдэглэж болох файл юм. Энэ тохиолдолд эдгээр цоорхойг хадгалахад файлын системийн блок хуваарилагдахгүй бөгөөд ингэснээр дискний зай хэмнэх болно.

Файлын системийн блокыг чөлөөлөхийн тулд нүхний хэмжээ нь файлын системийн блокоос их буюу тэнцүү байх ёстой нь логик бөгөөд энэ нь хуудасны хэмжээ болон Apache Ignite-д нэмэлт хязгаарлалт тавьдаг: шахалт ямар нэгэн нөлөө үзүүлэхийн тулд, хуудасны хэмжээ нь файлын системийн блокийн хэмжээнээс том байх ёстой. Хэрэв хуудасны хэмжээ нь блокийн хэмжээтэй тэнцүү бол бид хэзээ ч нэг блок чөлөөлөх боломжгүй, учир нь нэг блокыг чөлөөлөхийн тулд шахсан хуудас 0 байт эзлэх ёстой. Хэрэв хуудасны хэмжээ 2 эсвэл 4 блокийн хэмжээтэй тэнцүү бол манай хуудсыг дор хаяж 50% эсвэл 75% болгон шахаж байвал бид дор хаяж нэг блокыг суллах боломжтой болно.

Ийнхүү механизм хэрхэн ажилладаг талаар эцсийн тайлбар: Диск рүү хуудас бичих үед хуудсыг шахах оролдлого хийдэг. Хэрэв шахсан хуудасны хэмжээ нь нэг буюу хэд хэдэн файлын системийн блокуудыг чөлөөлөх боломжийг олгодог бол хуудсыг шахсан хэлбэрээр бичиж, чөлөөлөгдсөн блокуудын оронд "нүх" үүсгэнэ (системийн дуудлагыг гүйцэтгэнэ). fallocate() цоолтуурын тугтай). Хэрэв шахсан хуудасны хэмжээ нь блокуудыг чөлөөлөхийг зөвшөөрөхгүй бол хуудсыг шахаагүй байдлаар хадгална. Хуудасны индексийг хуудасны хэмжээгээр үржүүлэх замаар бүх хуудасны офсетийг шахахгүйгээр тооцдог. Хуудсуудыг бие даан шилжүүлэх шаардлагагүй. Хуудасны офсет нь шахалтгүйгээр файлын системийн блокуудын хил хязгаарт ордог.

Apache Ignite дахь өгөгдлийг шахах. Сберийн туршлага

Одоогийн байдлаар Ignite нь зөвхөн Линукс үйлдлийн систем дээр сийрэг файлуудтай ажиллах боломжтой тул дискний хуудас шахалтыг зөвхөн энэ үйлдлийн систем дээр Ignite ашиглах үед л идэвхжүүлж болно.

Дискний хуудсыг шахахад ашиглаж болох шахалтын алгоритмууд: ZSTD, LZ4, Snappy. Нэмж дурдахад, үйлдлийн горим (SKIP_GARBAGE) байдаг бөгөөд энэ нь хуудасны зөвхөн ашиглагдаагүй зайг үлдсэн өгөгдөл дээр шахалт хийхгүйгээр гадагшлуулдаг бөгөөд энэ нь өмнө нь жагсаасан алгоритмуудтай харьцуулахад CPU-ийн ачааллыг бууруулдаг.

Гүйцэтгэлд үзүүлэх нөлөө

Харамсалтай нь, бид энэ механизмыг үйлдвэрлэлд ашиглахаар төлөвлөөгүй байгаа тул би бодит гүйцэтгэлийн хэмжилтийг бодитойгоор хийсэнгүй, гэхдээ бид хаана хожигдох, хаана ялах талаар онолын хувьд таамаглаж чадна.

Үүнийг хийхийн тулд хуудас руу нэвтрэх үед хэрхэн уншиж, бичиж байгааг санах хэрэгтэй.

  • Унших үйлдлийг гүйцэтгэхдээ эхлээд RAM-аас хайдаг бөгөөд хэрэв хайлт амжилтгүй болбол хуудсыг уншдаг ижил урсгалаар дискнээс RAM-д ачаална.
  • Бичих үйлдлийг гүйцэтгэх үед RAM дахь хуудас бохир гэж тэмдэглэгдсэн боловч бичих үйлдлийг гүйцэтгэж буй утас тэр даруй дискэнд биет байдлаар хадгалагдахгүй. Бүх бохир хуудсыг дараа нь шалгах цэгийн явцад тусдаа хэлхээнд дискэнд хадгалдаг.

Тиймээс унших үйл ажиллагаанд үзүүлэх нөлөө нь:

  • Уншсан файлын системийн блокуудын тоо буурсантай холбоотойгоор эерэг (дискний IO).
  • Сөрөг (CPU), сийрэг файлуудтай ажиллахад үйлдлийн систем шаардлагатай нэмэлт ачааллын улмаас. Илүү төвөгтэй сийрэг файлын бүтцийг хадгалахын тулд нэмэлт IO үйлдлүүд энд далд хэлбэрээр гарч ирэх боломжтой (харамсалтай нь би сийрэг файлууд хэрхэн ажилладаг талаар бүх нарийн ширийнийг мэдэхгүй байна).
  • Хуудсуудыг задлах шаардлагатай тул сөрөг (CPU).
  • Бичих үйл ажиллагаанд ямар ч нөлөө үзүүлэхгүй.
  • Шалгах цэгийн үйл явцад үзүүлэх нөлөө (энд бүх зүйл уншихтай төстэй):
  • Бичсэн файлын системийн блокуудын тоо буурсантай холбоотойгоор эерэг (дискний IO).
  • Сөрөг (CPU, магадгүй дискний IO), сийрэг файлуудтай ажилладаг тул.
  • Хуудсыг шахах хэрэгцээ шаардлагаас болж сөрөг (CPU).

Жинлүүрийн аль тал нь жинлүүрийг эргүүлэх вэ? Энэ бүхэн хүрээлэн буй орчноос ихээхэн хамаардаг боловч дискний хуудсыг шахах нь ихэнх системүүдийн гүйцэтгэлийн доройтолд хүргэдэг гэдэгт би итгэлтэй байна. Түүнчлэн, сийрэг файлтай ижил төстэй аргыг ашигладаг бусад DBMS-ийн туршилтууд нь шахалтыг идэвхжүүлсэн үед гүйцэтгэл буурч байгааг харуулж байна.

Хэрхэн идэвхжүүлж, тохируулах талаар

Дээр дурдсанчлан дискний хуудас шахалтыг дэмждэг Apache Ignite-ийн хамгийн бага хувилбар нь 2.8 бөгөөд зөвхөн Линукс үйлдлийн системийг дэмждэг. Дараах байдлаар идэвхжүүлж, тохируулна уу:

  • Ангийн замд гал асаах шахалтын модуль байх ёстой. Анхдагч байдлаар, энэ нь libs/сонголтын лавлах дахь Apache Ignite түгээлтэд байрладаг бөгөөд классын замд ороогүй болно. Та лавлахыг libs рүү нэг шат ахиулж, дараа нь ignite.sh-ээр дамжуулан ажиллуулахад автоматаар идэвхжих болно.
  • Тогтвортой байдлыг идэвхжүүлсэн байх ёстой (Идэвхжүүлсэн DataRegionConfiguration.setPersistenceEnabled(true)).
  • Хуудасны хэмжээ нь файлын системийн блокийн хэмжээнээс том байх ёстой (та үүнийг ашиглан тохируулж болно DataStorageConfiguration.setPageSize() ).
  • Өгөгдлийг шахах шаардлагатай кэш бүрийн хувьд шахалтын арга болон (заавал биш) шахалтын түвшинг (арга) тохируулах ёстой. CacheConfiguration.setDiskPageCompression() , CacheConfiguration.setDiskPageCompressionLevel()).

WAL нягтрал

Яаж энэ ажлыг хийдэг

WAL гэж юу вэ, яагаад хэрэгтэй вэ? Товчхондоо: энэ нь эцсийн эцэст хуудасны хадгалалтыг өөрчлөх бүх үйл явдлыг агуулсан бүртгэл юм. Энэ нь унасан тохиолдолд нөхөн сэргээх чадвартай байхын тулд юуны түрүүнд хэрэгтэй. Аливаа үйлдэл нь хэрэглэгчдэд хяналт өгөхийн өмнө эхлээд WAL-д үйл явдлыг бүртгэх ёстой бөгөөд ингэснээр алдаа гарсан тохиолдолд бүртгэлд дахин тоглуулж, хэрэглэгчийн амжилттай хариулт авсан бүх үйлдлийг сэргээх боломжтой. Диск дээрх хуудасны хадгалалтад тусгах цаг байсангүй (хуудас хадгалахад бодит бичих нь "шалгах цэг" гэж нэрлэгддэг процессын дагуу тусдаа утсаар тодорхой сааталтай явагддаг гэж дээр дурдсан байдаг).

WAL дахь бичлэгүүдийг логик болон физик гэж хуваадаг. Boolean нь өөрөө түлхүүр, үнэт зүйл юм. Физик - хуудасны дэлгүүрийн хуудасны өөрчлөлтийг тусгана. Логик бүртгэл нь бусад зарим тохиолдолд ашигтай байж болох ч физик бүртгэл нь зөвхөн ослын үед сэргээхэд шаардлагатай бөгөөд бүртгэл нь зөвхөн сүүлийн амжилттай шалган нэвтрүүлэх цэгээс хойш л шаардлагатай байдаг. Энд бид нарийвчилсан мэдээлэл өгөхгүй бөгөөд яагаад ийм байдлаар ажилладагийг тайлбарлахгүй, гэхдээ сонирхсон хүмүүс Apache Ignite Wiki дээр дурдсан нийтлэлээс лавлана уу: Ignite Persistent Store - бүрээсний доор.

Логик бичлэг бүрт хэд хэдэн физик бичлэг байдаг. Жишээлбэл, кэш рүү оруулах нэг үйлдэл нь хуудасны санах ой дахь хэд хэдэн хуудсанд (өгөгдөл нь өөрөө, индекс бүхий хуудас, чөлөөт жагсаалттай хуудас) нөлөөлдөг. Зарим синтетик туршилтаар би физик бичлэгүүд WAL файлын 90 хүртэлх хувийг эзэлдэг болохыг олж мэдсэн. Гэсэн хэдий ч тэдгээр нь маш богино хугацаанд шаардлагатай байдаг (анхдагчаар, хяналтын цэгүүдийн хоорондох зай нь 3 минут байна). Энэ өгөгдлөөс хамааралтай байдлаа алдсаны дараа арилгах нь логик юм. WAL нягтруулах механизм яг ийм үйлдэл хийдэг: энэ нь физик бичлэгүүдээс салж, zip ашиглан үлдсэн логик бичлэгүүдийг шахдаг бол файлын хэмжээ маш их хэмжээгээр (заримдаа хэдэн арван дахин) багасдаг.

Бие махбодийн хувьд WAL нь тогтмол хэмжээтэй (анхдагчаар 10MB) хэд хэдэн сегментээс (анхдагчаар 64) бүрдэнэ, тэдгээрийг дугуй хэлбэрээр дарж бичдэг. Одоогийн сегментийг дүүргэсний дараа дараагийн сегментийг одоогийн гэж оноож, дүүргэсэн сегментийг тусдаа хэлхээгээр архивт хуулна. WAL нягтаршил нь аль хэдийн архивын сегментүүдтэй ажилладаг. Мөн тусдаа хэлхээ болгон энэ нь хяналтын цэгийн гүйцэтгэлийг хянаж, физик бичлэг хийх шаардлагагүй болсон архивын сегментүүдэд шахалтыг эхлүүлдэг.

Apache Ignite дахь өгөгдлийг шахах. Сберийн туршлага

Гүйцэтгэлд үзүүлэх нөлөө

WAL нягтаршил нь тусдаа утас хэлбэрээр явагддаг тул хийгдэж буй үйл ажиллагаанд шууд нөлөө үзүүлэх ёсгүй. Гэхдээ энэ нь CPU (шахах) болон дискэнд нэмэлт ачаалал өгдөг (архиваас WAL сегмент бүрийг уншиж, шахсан сегментүүдийг бичих) тул хэрэв систем хамгийн дээд хүчин чадлаараа ажиллаж байвал энэ нь гүйцэтгэлийн доройтолд хүргэдэг.

Хэрхэн идэвхжүүлж, тохируулах талаар

Та өмчийг ашиглан WAL нягтралтыг идэвхжүүлж болно WalCompactionEnabled в DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)). Мөн DataStorageConfiguration.setWalCompactionLevel() аргыг ашиглан, хэрэв та анхдагч утгад (BEST_SPEED) сэтгэл хангалуун бус байвал шахалтын түвшинг тохируулж болно.

WAL хуудасны агшин зуурын зургийг шахах

Яаж энэ ажлыг хийдэг

WAL-д бүртгэлийг логик болон физик гэж хуваадаг болохыг бид аль хэдийн олж мэдсэн. Хуудас бүрийн өөрчлөлт бүрийн хувьд хуудасны санах ойд физик WAL бичлэг үүсдэг. Биет бичлэгүүд нь эргээд хуудасны агшин бичлэг ба дельта бичлэг гэсэн 2 дэд төрөлд хуваагддаг. Бид хуудсан дээрх ямар нэг зүйлийг өөрчилж, цэвэр төлөвөөс бохир төлөв рүү шилжүүлэх бүрт энэ хуудасны бүрэн хуулбар WAL (хуудас агшин зуурын бичлэг) дээр хадгалагддаг. Бид WAL-д зөвхөн нэг байтыг өөрчилсөн ч гэсэн бичлэг нь хуудасны хэмжээнээс арай том байх болно. Хэрэв бид аль хэдийн бохир хуудсан дээр ямар нэг зүйлийг өөрчлөх юм бол WAL-д дельта бичлэг үүсдэг бөгөөд энэ нь зөвхөн хуудасны өмнөх төлөвтэй харьцуулахад өөрчлөлтийг тусгасан боловч хуудсыг бүхэлд нь биш юм. Хуудсуудын төлөвийг бохирдлоос цэвэр болгох нь хяналтын цэгийн процессын явцад хийгддэг тул хяналтын цэг эхэлсний дараа бараг бүх биет бүртгэл нь зөвхөн хуудасны агшин зуурын зургуудаас бүрдэх болно (шалгах цэг эхэлсний дараа бүх хуудас цэвэрхэн байх тул) , дараа нь дараагийн хяналтын цэгт ойртох үед дельта бичлэгийн хэсэг өсөж, дараагийн хяналтын цэгийн эхэнд дахин тохируулагдаж эхэлнэ. Зарим синтетик туршилтуудын хэмжилтүүд нь физик бичлэгийн нийт эзлэхүүн дэх хуудасны агшин зургийн эзлэх хувь 90% хүрч байгааг харуулж байна.

WAL хуудасны агшин агшныг шахах санаа нь хуудасны агшин зуурын агшингуудыг бэлэн хуудас шахах хэрэгсэл ашиглан шахах явдал юм (дискний хуудас шахалтыг үзнэ үү). Үүний зэрэгцээ, WAL-д бичлэгүүдийг зөвхөн хавсаргах горимд хадгалдаг бөгөөд бүртгэлийг файлын системийн блокуудын хил хязгаартай холбох шаардлагагүй тул энд дискний хуудсыг шахах механизмаас ялгаатай нь бидэнд сийрэг файлууд хэрэггүй. Үүний дагуу энэ механизм нь зөвхөн Linux үйлдлийн систем дээр ажиллахгүй. Нэмж дурдахад бид хуудсыг хэр их шахаж чадсан нь бидэнд хамаагүй. Хэдийгээр бид 1 байтыг чөлөөлсөн ч энэ нь аль хэдийн эерэг үр дүн бөгөөд бид 1-ээс илүү файлын системийн блокыг чөлөөлсөн тохиолдолд л шахсан хуудсыг хадгалдаг дискний хуудасны шахалтаас ялгаатай нь WAL-д шахсан өгөгдлийг хадгалах боломжтой.

Хуудсууд нь маш шахагддаг өгөгдөл бөгөөд WAL-ийн нийт эзлэхүүн дэх эзлэх хувь нь маш өндөр тул WAL файлын форматыг өөрчлөхгүйгээр бид түүний хэмжээг мэдэгдэхүйц бууруулах боломжтой. Логик бичлэгийг багтаасан шахалт нь форматыг өөрчлөх, нийцтэй байдал алдагдах шаардлагатай болно, жишээлбэл, логик бүртгэлийг сонирхож болох гадаад хэрэглэгчдийн хувьд файлын хэмжээг мэдэгдэхүйц бууруулахад хүргэхгүй.

Дискний хуудас шахалтын нэгэн адил WAL хуудасны агшин зуурын шахалт нь ZSTD, LZ4, Snappy шахалтын алгоритмууд болон SKIP_GARBAGE горимыг ашиглаж болно.

Гүйцэтгэлд үзүүлэх нөлөө

WAL хуудасны агшин зуурын агшин зуурын шахалтыг шууд идэвхжүүлснээр зөвхөн хуудасны санах ойд өгөгдөл бичдэг урсгалуудад, өөрөөр хэлбэл кэш дэх өгөгдлийг өөрчилдөг урсгалуудад нөлөөлдөг гэдгийг анзаарахад хэцүү биш юм. WAL-аас физик бичлэгийг унших нь зөвхөн нэг удаа тохиолддог бөгөөд энэ мөчид зангилаа уналтын дараа боссон (мөн зөвхөн хяналтын цэгийн үеэр унасан тохиолдолд).

Энэ нь өгөгдлийг өөрчилдөг урсгалуудад дараах байдлаар нөлөөлдөг: диск рүү бичихээс өмнө хуудсыг шахах шаардлагатай тул сөрөг нөлөө (CPU), харин хэмжээ багассанаас эерэг нөлөө (дискний IO) үүсдэг. бичигдсэн өгөгдөл. Үүний дагуу энд бүх зүйл энгийн байдаг: хэрэв системийн гүйцэтгэл нь CPU-ээр хязгаарлагддаг бол бид бага зэрэг доройтдог, хэрэв энэ нь дискний оролт / гаралтаар хязгаарлагддаг бол бид нэмэгддэг.

Шууд бусаар, WAL хэмжээг багасгах нь WAL сегментүүдийг архив болон WAL нягтруулах урсгал руу буулгадаг урсгалуудад (эерэг) нөлөөлдөг.

Синтетик өгөгдөл ашиглан манай орчин дахь бодит гүйцэтгэлийн туршилтууд бага зэрэг нэмэгдсэн (дамжуулах чадвар 10%-15%-иар нэмэгдсэн, хоцролт 10%-15%-иар буурсан).

Хэрхэн идэвхжүүлж, тохируулах талаар

Хамгийн бага Apache Ignite хувилбар: 2.8. Дараах байдлаар идэвхжүүлж, тохируулна уу:

  • Ангийн замд гал асаах шахалтын модуль байх ёстой. Анхдагч байдлаар, энэ нь libs/сонголтын лавлах дахь Apache Ignite түгээлтэд байрладаг бөгөөд классын замд ороогүй болно. Та лавлахыг libs рүү нэг шат ахиулж, дараа нь ignite.sh-ээр дамжуулан ажиллуулахад автоматаар идэвхжих болно.
  • Тогтвортой байдлыг идэвхжүүлсэн байх ёстой (Идэвхжүүлсэн DataRegionConfiguration.setPersistenceEnabled(true)).
  • Шахалтын горимыг аргыг ашиглан тохируулах ёстой DataStorageConfiguration.setWalPageCompression(), шахалтыг анхдагчаар идэвхгүй болгосон (DISABLED горим).
  • Сонголтоор та аргыг ашиглан шахалтын түвшинг тохируулж болно DataStorageConfiguration.setWalPageCompression(), горим бүрийн хүчинтэй утгыг javadoc-оос харна уу.

дүгнэлт

Apache Ignite дахь өгөгдөл шахах механизмуудыг бие биенээсээ хамааралгүйгээр ашиглаж болох боловч тэдгээрийн аль ч хослолыг хүлээн авах боломжтой. Тэдгээр нь хэрхэн ажилладагийг ойлгох нь таны хүрээлэн буй орчинд таны даалгаварт хэр тохиромжтой, тэдгээрийг ашиглахдаа юуг золиослох шаардлагатайг тодорхойлох боломжийг танд олгоно. Дискний хуудасны шахалт нь үндсэн санах ойг шахах зориулалттай бөгөөд дунд зэргийн шахалтын харьцааг өгөх боломжтой. WAL хуудасны агшин зуурын агшин зуурын шахалт нь WAL файлуудын шахалтын дундаж түвшинг өгөх бөгөөд гүйцэтгэлийг сайжруулах болно. WAL нягтаршил нь гүйцэтгэлд эерэг нөлөө үзүүлэхгүй боловч физик бичлэгийг устгаснаар WAL файлуудын хэмжээг аль болох багасгах болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх