Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Apache Ignite. ΠžΠΏΠΈΡ‚ Π½Π° Π‘Π±Π΅Ρ€

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Apache Ignite. ΠžΠΏΠΈΡ‚ Π½Π° Π‘Π±Π΅Ρ€ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ понякога ΠΌΠΎΠΆΠ΅ Π΄Π° сС появи ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ място Π½Π° дисковСтС. Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅ компрСсията, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° която, Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° си ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ компрСсията Π½Π° Π΄Π°Π½Π½ΠΈ Π² Apache Ignite. Π’ статията Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ описани само Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° компрСсия, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π”Ρ€ΡƒΠ³ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° компрСсия Π½Π° Π΄Π°Π½Π½ΠΈ (ΠΏΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°), ΠΊΠ°ΠΊΡ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ Π½Π΅, Ρ‰Π΅ останат извън ΠΎΠ±Ρ…Π²Π°Ρ‚Π°.

И Ρ‚Π°ΠΊΠ°, ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° пСрсистСнтност, Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° промяната Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΠΊΠ΅ΡˆΠΎΠ²Π΅Ρ‚Π΅, Ignite Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° записва Π½Π° диск:

  1. Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ΅ΡˆΠΎΠ²Π΅Ρ‚Π΅
  2. Π–ΡƒΡ€Π½Π°Π» Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ записванС (Write Ahead Log, ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ просто WAL)

Π—Π° компрСсия Π½Π° WAL Π²Π΅Ρ‡Π΅ ΠΎΡ‚Π΄Π°Π²Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ WAL компакция. Π’ наскоро излязлата вСрсия Apache Ignite 2.8 сС появиха ΠΎΡ‰Π΅ Π΄Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, позволяващи Π΄Π° сС компрСсират Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° диска, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ компрСсия Π½Π° страници Π½Π° диска Π·Π° компрСсия Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠ΅ΡˆΠΎΠ²Π΅Ρ‚Π΅ ΠΈ компрСсия Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½ΠΈ снимки Π½Π° страници Π½Π° WAL Π·Π° компрСсия Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ записи Π½Π° WAL. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° всичкитС Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

ΠšΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ Π½Π° страници Π½Π° диска

Как Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ²Π°

ΠŸΡŠΡ€Π²ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Ignite ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π΄Π°Π½Π½ΠΈ. Π—Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° странична ΠΏΠ°ΠΌΠ΅Ρ‚. Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата сС Π·Π°Π΄Π°Π²Π° ΠΏΡ€ΠΈ стартиранС Π½Π° възСла ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ Π½Π° ΠΏΠΎ-късни Π΅Ρ‚Π°ΠΏΠΈ, ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата трябва Π΄Π° бъдС стСпСн Π½Π° Π΄Π²Π΅ ΠΈ ΠΊΡ€Π°Ρ‚Π΅Π½ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ Π² RAM ΠΎΡ‚ диска ΠΏΡ€ΠΈ нСобходимост; Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° диска ΠΌΠΎΠΆΠ΅ Π΄Π° надвишава ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π½Π°Π»ΠΈΡ‡Π½Π°Ρ‚Π° RAM. ΠŸΡ€ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ място Π² RAM Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° страница ΠΎΡ‚ диска, старитС, Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ страници Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Ρ€Π΅Ρ‡Π΅Π½ΠΈ ΠΎΡ‚ RAM.

На диска Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½: Π·Π° всяка партиция Π½Π° всяка кСш Π³Ρ€ΡƒΠΏΠ° сС създава ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ„Π°ΠΉΠ», Π² Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ», Π² Ρ€Π΅Π΄ Π½Π° нарастващ индСкс, Π΅Π΄Π½Π° слСд Π΄Ρ€ΡƒΠ³Π° ΠΈΠ΄Π²Π°Ρ‚ страницитС. ΠŸΡŠΠ»Π½ΠΈΡΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° страницата ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° кСш Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° партицията ΠΈ индСкса Π½Π° страницата във Ρ„Π°ΠΉΠ»Π°. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, с пълния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° страницата, ΠΌΠΎΠΆΠ΅ΠΌ нСдвусмислСно Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ„Π°ΠΉΠ»Π° ΠΈ офсСта Π² Π½Π΅Π³ΠΎ Π·Π° всяка страница. По-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° устройството Π½Π° страничната ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π² статията Π² Apache Ignite Wiki: Ignite ΠŸΠ΅Ρ€ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ β€” Π·Π°Π΄ кулиситС.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π½Π° компрСсия Π½Π° страницитС Π½Π° диска, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ, Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ страница. ΠŸΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Π΄Π°Π½Π½ΠΈ Π² RAM сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‚Π°ΠΊΠ°Π²Π°, ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ Π΅, Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²Π° компрСсия, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° страницитС ΠΎΡ‚ RAM Π½Π° диска сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° тяхното компрСсиранС.

Но компрСсията Π½Π° всяка страница ΠΏΠΎΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π½Π΅ Ρ€Π΅ΡˆΠ°Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΡƒΠΆΠ½ΠΎ Π΅ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Π΄Π°Π½Π½ΠΈΡ‚Π΅. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата спрС Π΄Π° бъдС фиксиран, Π²Π΅Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° записвамС страницитС Π² Ρ„Π°ΠΉΠ» Π΅Π΄Π½Π° слСд Π΄Ρ€ΡƒΠ³Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Ρ€Π΅Π΄ΠΈΡ†Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ:

  • Няма Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° индСкса Π½Π° страницата Π΄Π° изчислим офсСта, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° Π² Ρ„Π°ΠΉΠ»Π°.
  • НС Π΅ ясно ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ със страницитС, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Π² края Π½Π° Ρ„Π°ΠΉΠ»Π° ΠΈ промСнят своя Ρ€Π°Π·ΠΌΠ΅Ρ€. Ако Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата намалява, мСстото, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ освободила ΠΈΠ·Ρ‡Π΅Π·Π²Π°. Ако Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°, Π·Π° нСя Ρ‰Π΅ трябва Π΄Π° сС Ρ‚ΡŠΡ€ΡΠΈ Π½ΠΎΠ²ΠΎ място Π² Ρ„Π°ΠΉΠ»Π°.
  • Ако страницата сС прСмСсти с число Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ ΠΊΡ€Π°Ρ‚Π½ΠΎ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Ρ‚ΠΎ Π·Π° Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈΠ»ΠΈ запис Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС засСгнС Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма ΠΏΠΎΠ²Π΅Ρ‡Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ влошаванС Π½Π° производитСлността.

Π—Π° Π΄Π° Π½Π΅ Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ сами Π½Π° своСто Π½ΠΈΠ²ΠΎ, компрСсията Π½Π° страницитС Π½Π° диска Π² Apache Ignite ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Ρ€Π°Π·Ρ€Π΅Π΄Π΅Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π Π°Π·Ρ€Π΅Π΄Π΅Π½ Ρ„Π°ΠΉΠ» (sparse file) Π΅ Ρ‚Π°ΠΊΡŠΠ² Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΠΉΡ‚ΠΎ някои, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈ с Π½ΡƒΠ»ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ "Π΄ΡƒΠΏΠΊΠΈ". ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π΅Π·ΠΈ Π΄ΡƒΠΏΠΊΠΈ, няма Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ, Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ сС постига икономия Π½Π° дисково пространство.

Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΅, Ρ‡Π΅ Π·Π° Π΄Π° освободим Π±Π»ΠΎΠΊ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Π΄ΡƒΠΏΠΊΠ°Ρ‚Π° трябва Π΄Π° бъдС Ρ€Π°Π²Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎ-голям ΠΎΡ‚ Π±Π»ΠΎΠΊΠ° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π°Π»Π°Π³Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° страницитС Π² Apache Ignite: Π·Π° Π΄Π° ΠΈΠΌΠ° компрСсията някакъв Π΅Ρ„Π΅ΠΊΡ‚, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата Π΄Π° Π΅ строго ΠΏΠΎ-голям ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма. Ако Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата Π΅ Ρ€Π°Π²Π΅Π½ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ°, Π½ΠΈΠΊΠΎΠ³Π° няма Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° освободим Π½ΠΈΡ‚ΠΎ Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π·Π° Π΄Π° освободим Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ компрСсирана страница Π΄Π° Π·Π°Π΅ΠΌΠ° 0 Π±Π°ΠΉΡ‚Π°. Ако Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата Π΅ Ρ€Π°Π²Π΅Π½ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° 2 ΠΈΠ»ΠΈ 4 Π±Π»ΠΎΠΊΠ°, Π²Π΅Ρ‡Π΅ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° освободим ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ, Π°ΠΊΠΎ страницата Π½ΠΈ сС компрСсира Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ Π΄ΠΎ 50% ΠΈΠ»ΠΈ 75% ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎΡ‚ΠΎ описаниС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°: ΠšΠΎΠ³Π°Ρ‚ΠΎ страницата сС записва Π½Π° диска, сС ΠΏΡ€Π°Π²ΠΈ ΠΎΠΏΠΈΡ‚ Π΄Π° сС компрСсира страницата. Ако Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° компрСсираната страница позволява освобоТдаванСто Π½Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π±Π»ΠΎΠΊΠ° ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, страницата сС записва Π² компрСсиран Π²ΠΈΠ΄, Π° Π½Π° мястото Π½Π° освободСнитС Π±Π»ΠΎΠΊΠΎΠ²Π΅ сС ΠΏΡ€ΠΎΠ±ΠΈΠ²Π° 'Π΄ΡƒΠΏΠΊΠ°' (ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° сС систСмСн ΠΏΠΎΠ²ΠΈΠΊ) fallocate() с Ρ„Π»Π°Π³Π° 'punch hole'). Ако Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° компрСсираната страница Π½Π΅ позволява освобоТдаванСто Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅, страницата сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Ρ‚Π°ΠΊΠ°, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅, Π² нСконпрСсиран Π²ΠΈΠ΄. Всички офсСти Π½Π° страницитС сС смятат, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π±Π΅Π· компрСсия, Ρ‡Ρ€Π΅Π· ΡƒΠΌΠ½ΠΎΠΆΠ°Π²Π°Π½Π΅ Π½Π° индСкса Π½Π° страницата ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° страницата. Никаква рСлакация Π½Π° страницитС Π½Π΅ сС изисква. ΠžΡ„ΡΠ΅Ρ‚ΠΈ Π½Π° страницитС, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π±Π΅Π· компрСсия, ΠΏΠΎΠΏΠ°Π΄Π° Π½Π° Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Apache Ignite. ΠžΠΏΠΈΡ‚ Π½Π° Π‘Π±Π΅Ρ€

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° рСализация Ignite ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ със sparse Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ само ΠΏΠΎΠ΄ ОБ Linux, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ disk page compression ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ само ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ignite Π½Π° Ρ‚Π°Π·ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма.

АлгоритмитС Π·Π° компрСсия, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° disk page compression: ZSTD, LZ4, Snappy. ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (SKIP_GARBAGE), ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·Ρ…Π²ΡŠΡ€Π»Ρ само Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎΡ‚ΠΎ място Π² страницата Π±Π΅Π· ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° компрСсия Π²ΡŠΡ€Ρ…Ρƒ останалитС Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° CPU Π² сравнСниС с ΠΏΡ€Π΅Π΄Ρ…ΠΎΠ΄Π½ΠΎ спомСнатитС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ.

ВлияниС Π²ΡŠΡ€Ρ…Ρƒ производитСлността

Π—Π° съТалСниС, Π½Π΅ съм ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π» фактичСски Π·Π°ΠΌΠ΅Ρ€ Π½Π° производитСлността Π½Π° Ρ€Π΅Π°Π»Π½ΠΈ систСми, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π² продукция, Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ тСорСтичСски Π΄Π° обсъдим, къдС Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΠΌ, Π° къдС Ρ‰Π΅ спСчСлим.

Π—Π° Ρ‚ΠΎΠ²Π° трябва Π΄Π° си ΠΏΡ€ΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΊΠ°ΠΊ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ ΠΈ записванСто Π½Π° страници, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΠ±Ρ€ΡŠΡ‰Π°ΠΌΠ΅ към тях:

  • ΠŸΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° опСрацията Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΏΡŠΡ€Π²ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π² RAM, Π°ΠΊΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅Ρ‚ΠΎ Π½Π΅ Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, страницата сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π² RAM ΠΎΡ‚ диска ΠΎΡ‚ ΡΡŠΡ‰ΠΈΡ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ.
  • ΠŸΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° опСрацията Π·Π° запис страницата Π² RAM сС ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ ΠΌΡ€ΡŠΡΠ½Π°, ΠΊΠ°Ρ‚ΠΎ физичСското Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° страницата Π½Π° диска Π½Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π²Π΅Π΄Π½Π°Π³Π° Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° записа. Всички ΠΌΡ€ΡŠΡΠ½ΠΈ страници сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ Π½Π° диска ΠΏΠΎ-късно Π² процСса Π½Π° Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, влияниСто Π²ΡŠΡ€Ρ…Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅:

  • ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΎ (disk IO), Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° намаляванСто Π½Π° броя Π½Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Π½ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма.
  • ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎ (CPU) ΠΏΠΎΡ€Π°Π΄ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с sparse Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ възмоТно Ρ‚ΡƒΠΊ Π΄Π° сС появят нСявно Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ IO ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎ-слоТна структура Π½Π° sparse Ρ„Π°ΠΉΠ»Π° (Π·Π° всички Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с sparse Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π΅ съм Π·Π°ΠΏΠΎΠ·Π½Π°Ρ‚).
  • ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎ (CPU) ΠΏΠΎΡ€Π°Π΄ΠΈ нСобходимостта ΠΎΡ‚ дСкомпрСсия Π½Π° страницитС.
  • Няма влияниС Π²ΡŠΡ€Ρ…Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° запис.
  • ВлияниС Π²ΡŠΡ€Ρ…Ρƒ процСса Π½Π° Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ (Ρ‚ΡƒΠΊ всичко Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅):
  • ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΎ (disk IO) ΠΏΠΎΡ€Π°Π΄ΠΈ намаляванС Π½Π° броя записани Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма.
  • ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎ (CPU, възмоТно disk IO) ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° със sparse Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
  • ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎ (CPU) ΠΏΠΎΡ€Π°Π΄ΠΈ нСобходимостта ΠΎΡ‚ компрСсия Π½Π° страницитС.

Коя Ρ‡Π°ΡˆΠ° тСТСсти Ρ‰Π΅ Π½Π°Π΄Π΄Π΅Π»Π΅Π΅? Всичко Ρ‚ΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ зависи ΠΎΡ‚ срСдата, Π½ΠΎ Π°Π· съм склонСн Π΄Π° мисля, Ρ‡Π΅ компрСсията Π½Π° disk page Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ ΠΏΠΎ-скоро Π΄ΠΎ дСградация Π½Π° производитСлността Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ систСми. Π’Π΅ΠΌ ΠΏΠΎΠ²Π΅Ρ‡Π΅, Ρ‡Π΅ тСстовСтС Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Π‘Π£Π‘Π”, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ със sparse Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ спад Π½Π° производитСлността ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° компрСсия.

Как Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΈ настроитС

ΠšΠ°ΠΊΡ‚ΠΎ бСшС спомСнато ΠΏΠΎ-Π³ΠΎΡ€Π΅, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° вСрсия Π½Π° Apache Ignite, която ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° компрСсия Π½Π° disk page: 2.8 ΠΈ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° само Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Linux. Π’ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ настройванСто сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

  • Π’ class-path трябва Π΄Π° ΠΈΠΌΠ° ΠΌΠΎΠ΄ΡƒΠ» ignite-compression. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚ΠΎΠΉ сС Π½Π°ΠΌΠΈΡ€Π° Π² дистрибуцията Π½Π° Apache Ignite Π² дирСктория libs/optional ΠΈ Π½Π΅ сС Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π² class-path. ΠœΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° прСнСсСтС дирСкторията Π½Π° Π΅Π΄Π½ΠΎ Π½ΠΈΠ²ΠΎ Π½Π°Π³ΠΎΡ€Π΅ Π² libs ΠΈ Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈ стартиранС ΠΏΡ€Π΅Π· ignite.sh Ρ‚ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.
  • Persistence трябва Π΄Π° бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ (Π²ΠΊΠ»ΡŽΡ‡Π²Π° сС Ρ‡Ρ€Π΅Π· DataRegionConfiguration.setPersistenceEnabled(true)).
  • Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата трябва Π΄Π° бъдС ΠΏΠΎ-голям ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма (ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°Π΄Π°Π΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° DataStorageConfiguration.setPageSize() ).
  • Π—Π° всСки кСш, Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° сС компрСсират, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² конфигурацията Π΄Π° сС настрои ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Π½Π° компрСсия ΠΈ (ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅) Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° компрСсия (ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ CacheConfiguration.setDiskPageCompression(), CacheConfiguration.setDiskPageCompressionLevel()).

WAL компрСсия

Как Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ²Π°

Какво Π΅ WAL ΠΈ Π·Π°Ρ‰ΠΎ Π΅ Π½ΡƒΠΆΠ΅Π½? Много Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ: Ρ‚ΠΎΠ²Π° Π΅ ΠΆΡƒΡ€Π½Π°Π», Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ всички ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, промСнящи Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка страничното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. НуТСн Π΅ ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ Π·Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π² случай Π½Π° срив. Всяка опСрация, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° потрСбитСля, трябва ΠΏΡŠΡ€Π²ΠΎ Π΄Π° запишС ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π² WAL, Π·Π° Π΄Π° ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π² случай Π½Π° срив Π΄Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈ Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ потрСбитСлят Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΡƒΡΠΏΠ΅ΡˆΠ΅Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Ρ‚Π΅Π·ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ са успСли Π΄Π° сС отразят Π² страничното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° диска (ΠΏΠΎ-Π³ΠΎΡ€Π΅ бСшС описано, Ρ‡Π΅ дСйствитСлната запис Π² страничното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π² процСс, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ β€žΡ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚β€œ с извСстно закъснСниС ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ).

Записи Π² WAL сС дСлят Π½Π° логичСски ΠΈ физичСски. ЛогичСскитС β€” Ρ‚ΠΎΠ²Π° са самитС ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΈ стойности. ЀизичСскитС β€” отразяват ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² страницитС Π½Π° страничното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π”ΠΎΠΊΠ°Ρ‚ΠΎ логичСскитС записи ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ случаи, физичСскитС записи са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ само Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π² случай Π½Π° срив ΠΈ са Π½ΡƒΠΆΠ½ΠΈ само записи ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° послСдния ΡƒΡΠΏΠ΅ΡˆΠ΅Π½ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚. Π’ΡƒΠΊ няма Π΄Π° Π²Π»ΠΈΠ·Π°ΠΌΠ΅ Π² подробности ΠΈ Π΄Π° обяснявамС Π·Π°Ρ‰ΠΎ Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠ°, Π½ΠΎ заинтСрСсованитС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΎΠ±ΡŠΡ€Π½Π°Ρ‚ към Π²Π΅Ρ‡Π΅ спомСнатата статия Π² Apache Ignite Wiki: Ignite ΠŸΠ΅Ρ€ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ β€” Π·Π°Π΄ кулиситС.

На Π΅Π΄Π½Π° логичСска запис чСсто сС ΠΏΠ°Π΄Π°Ρ‚ няколко физичСски записа. ВоСст, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅Π΄Π½Π° опСрация put Π² кСша засяга няколко страници Π² страничната ΠΏΠ°ΠΌΠ΅Ρ‚ (страницата с Π΄Π°Π½Π½ΠΈΡ‚Π΅, страницитС с индСкси, страницитС с free-list-ΠΈ). Π’ някои синтСтични тСстовС установих, Ρ‡Π΅ физичСскитС записи Π·Π°Π΅ΠΌΠ°Ρ‚ Π΄ΠΎ 90% ΠΎΡ‚ ΠΎΠ±Π΅ΠΌΠ° Π½Π° WAL Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° Ρ‚Π΅ са Π½ΡƒΠΆΠ½ΠΈ само Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΡŠΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΈΡ‚Π΅ Π΅ 3 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ). Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ слСд Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° актуалността ΠΈΠΌ Π΄Π° сС ΠΈΠ·Π±Π°Π²ΠΈΠΌ. ИмСнно Ρ‚ΠΎΠ²Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ WAL компакция, ΠΊΠΎΠΉΡ‚ΠΎ сС освобоТдава ΠΎΡ‚ физичСскитС записи ΠΈ компрСсира останалитС логичСски записи с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° zip, ΠΏΡ€ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Ρ„Π°ΠΉΠ»Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намалява (понякога дСсСтки ΠΏΡŠΡ‚ΠΈ).

ЀизичСски WAL сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ няколко сСгмСнта (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ 10) с фиксиран Ρ€Π°Π·ΠΌΠ΅Ρ€ (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ 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 Π±Π°ΠΉΡ‚, Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ компрСсиранитС Π΄Π°Π½Π½ΠΈ Π² WAL, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ компрСсията Π½Π° страницитС Π½Π° диска, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ компрСсираната страница само Π°ΠΊΠΎ смС освободили ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 1 Π±Π»ΠΎΠΊ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма.

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ са Π΄ΠΎΠ±Ρ€Π΅ компрСсируСми Π΄Π°Π½Π½ΠΈ, Π° тяхната част Π² общия ΠΎΠ±Π΅ΠΌ Π½Π° WAL Π΅ ΠΌΠ½ΠΎΠ³ΠΎ висока. Π’Π°ΠΊΠ°, Ρ‡Π΅ Π±Π΅Π· Π΄Π° промСнямС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° WAL Ρ„Π°ΠΉΠ»Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° постигнСм Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намаляванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΡƒ. ΠšΠΎΠΌΠΏΡ€Π΅ΡΠΈΡΡ‚Π° Π½Π° логичСскитС записи, ΠΎΠ±Π°Ρ‡Π΅, Π±ΠΈ изисквала промяна Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈ Π·Π°Π³ΡƒΠ±Π° Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° външни ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ логичСскитС записи ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌ интСрСсуват, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π±ΠΈ Π΄ΠΎΠ²Π΅Π»ΠΎ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намаляванС Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° Ρ„Π°ΠΉΠ»Π°.

ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ компрСсията Π½Π° дискови страници, Π·Π° компрСсия Π½Π° WAL страничния ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° компрСсия ZSTD, LZ4, Snappy, Π° ΡΡŠΡ‰ΠΎ ΠΈ Ρ€Π΅ΠΆΠΈΠΌ SKIP_GARBAGE.

ВлияниС Π²ΡŠΡ€Ρ…Ρƒ производитСлността

ΠšΠ°ΠΊΡ‚ΠΎ Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ, Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° компрСсията Π½Π° WAL страничния ΠΌΠΎΠΌΠ΅Π½Ρ‚ влияС СдинствСно Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ записват Π΄Π°Π½Π½ΠΈ Π² страничната ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‚.Π΅. Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ промСнят Π΄Π°Π½Π½ΠΈ Π² ΠΊΠ΅ΡˆΠΎΠ²Π΅Ρ‚Π΅. Π§Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ WAL Π½Π° физичСскитС записи сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° само вСднъТ, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΡƒΠ·Π΅Π»Π° слСд срив (ΠΈ само Π² случай Π½Π° срив ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°).

ВлияниСто Π²ΡŠΡ€Ρ…Ρƒ ΠΏΠΎΡ‚ΠΎΡ†ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ промСнят Π΄Π°Π½Π½ΠΈ, Π΅ слСдното: ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π΅Π½ Π΅Ρ„Π΅ΠΊΡ‚ (CPU) Π·Π°Ρ€Π°Π΄ΠΈ нСобходимостта всСки ΠΏΡŠΡ‚ Π΄Π° компрСсирамС страницата ΠΏΡ€Π΅Π΄ΠΈ запис Π½Π° диска ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½ Π΅Ρ„Π΅ΠΊΡ‚ (дисков Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄) Π·Π°Ρ€Π°Π΄ΠΈ намаляванС Π½Π° количСството записвани Π΄Π°Π½Π½ΠΈ. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Ρ‚ΡƒΠΊ Π΅ просто: Π°ΠΊΠΎ производитСлността Π½Π° систСмата зависи ΠΎΡ‚ CPU, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΌΠ°Π»ΠΊΠ° дСградация; Π°ΠΊΠΎ ΠΎΡ‚ дисковия Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄ β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΠΊΠ°Ρ‡Π²Π°Π½Π΅.

КосвСно, намаляванСто Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° WAL ΡΡŠΡ‰ΠΎ ΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΎ влияниС Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Ρ‚ сСгмСнтитС Π½Π° WAL ΠΈ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠΈΡ‚Π΅ Π·Π° WAL компакция.

Π Π΅Π°Π»Π½ΠΈΡ‚Π΅ тСстовС Π·Π° производитСлност Π² Π½Π°ΡˆΠ°Ρ‚Π° срСда с синтСтични Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠΊΠ°Ρ‡Π²Π°Π½Π΅ (пропускатСлната способност нарасна с 10% - 15%, латСнтността намаля с 10% - 15%).

Как Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΈ настроитС

ΠœΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° вСрсия Π½Π° Apache Ignite: 2.8. Π’ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ настройката сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

  • Π’ class-path трябва Π΄Π° ΠΈΠΌΠ° ΠΌΠΎΠ΄ΡƒΠ» ignite-compression. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚ΠΎΠΉ сС Π½Π°ΠΌΠΈΡ€Π° Π² дистрибуцията Π½Π° Apache Ignite Π² дирСктория libs/optional ΠΈ Π½Π΅ сС Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π² class-path. ΠœΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° прСнСсСтС дирСкторията Π½Π° Π΅Π΄Π½ΠΎ Π½ΠΈΠ²ΠΎ Π½Π°Π³ΠΎΡ€Π΅ Π² libs ΠΈ Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈ стартиранС ΠΏΡ€Π΅Π· ignite.sh Ρ‚ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.
  • Persistence трябва Π΄Π° бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ (Π²ΠΊΠ»ΡŽΡ‡Π²Π° сС Ρ‡Ρ€Π΅Π· DataRegionConfiguration.setPersistenceEnabled(true)).
  • Врябва Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌΡŠΡ‚ Π½Π° компрСсия с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DataStorageConfiguration.setWalPageCompression(), ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ компрСсията Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½Π° (Ρ€Π΅ΠΆΠΈΠΌ DISABLED).
  • По ΠΈΠ·Π±ΠΎΡ€ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½Π° стСпСнта Π½Π° компрСсия с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DataStorageConfiguration.setWalPageCompression(), допустимитС стойности Π·Π° всСки ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ Π²ΠΈΠΆΡ‚Π΅ Π² javadoc Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° компрСсия Π½Π° Π΄Π°Π½Π½ΠΈ Π² Apache Ignite ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ нСзависимо Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° са допустими ΠΈ всякакви Ρ‚Π΅Ρ…Π½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ Π½Π° тяхната Ρ€Π°Π±ΠΎΡ‚Π° Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎ Ρ‚Π΅ отговарят Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ‚Π° срСда ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΆΠ΅Ρ€Ρ‚Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΈ тяхното ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. ΠšΠΎΠΌΠΏΡ€Π΅ΡΠΈΡΡ‚Π° Π½Π° дискови страници Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° Π·Π° компрСсиранС Π½Π° основното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ срСдна стСпСн Π½Π° компрСсия. ΠšΠΎΠΌΠΏΡ€Π΅ΡΠΈΡΡ‚Π° Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½ΠΈ снимки Π½Π° WAL страници Ρ‰Π΅ осигури срСдна стСпСн Π½Π° компрСсия Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ WAL, ΠΊΠ°Ρ‚ΠΎ вСроятно Π΄ΠΎΡ€ΠΈ Ρ‰Π΅ повиши производитСлността. ΠšΠΎΠΌΠΏΠ°Ρ†ΠΈΡΡ‚Π° Π½Π° WAL няма Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½ Π΅Ρ„Π΅ΠΊΡ‚ Π²ΡŠΡ€Ρ…Ρƒ производитСлността, Π½ΠΎ Ρ‰Π΅ Π½Π°ΠΌΠ°Π»ΠΈ максимално Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ WAL Ρ‡Ρ€Π΅Π· ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° физичСски записи.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster