ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΠΎ Π²ΡΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΌΠ΅ΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ°Ρ . ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΆΠ°ΡΠΈΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΌΡ, Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π±Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΌΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΆΠ°ΡΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² Apache Ignite. Π ΡΡΠ°ΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΆΠ°ΡΠΈΡ Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΆΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ (ΠΏΠΎ ΡΠ΅ΡΠΈ, Π² ΠΏΠ°ΠΌΡΡΠΈ) ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ Π½Π΅Ρ ΠΎΡΡΠ°Π½ΡΡΡΡ Π·Π° ΡΠ°ΠΌΠΊΠ°ΠΌΠΈ.
ΠΡΠ°ΠΊ, ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌ persistence ΡΠ΅ΠΆΠΈΠΌΠ΅, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΊΡΡΠ°Ρ , Ignite Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π° Π΄ΠΈΡΠΊ:
- Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΡΡΠ΅ΠΉ
- ΠΡΡΠ½Π°Π» ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ (Write Ahead Log, Π΄Π°Π»Π΅Π΅ ΠΏΡΠΎΡΡΠΎ WAL)
ΠΠ»Ρ ΡΠΆΠ°ΡΠΈΡ WAL ΡΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ WAL compaction. Π Π½Π΅Π΄Π°Π²Π½ΠΎ Π²ΡΡΠ΅Π΄ΡΠ΅ΠΌ Apache Ignite 2.8 ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π΅ΡΠ΅ Π΄Π²Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
ΡΠΆΠΈΠΌΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ΅, ΡΡΠΎ disk page compression Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΡΡΠ΅ΠΉ ΠΈ WAL page snapshot compression Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ WAL. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π²ΡΠ΅Ρ
ΡΡΠΈΡ
ΡΡΠ΅Ρ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°Ρ
Π½ΠΈΠΆΠ΅.
Disk page compression
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΡΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΊΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° ΡΠΎΠΌ ΠΊΠ°ΠΊ Ignite Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠ½Π°Ρ ΠΏΠ°ΠΌΡΡΡ. Π Π°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π½Π° ΡΡΠ°ΡΡΠ΅ ΡΠ·Π»Π° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ , ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΈ ΠΊΡΠ°ΡΠ΅Π½ ΡΠ°Π·ΠΌΠ΅ΡΡ Π±Π»ΠΎΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π‘ΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°ΡΡΡΡ Π² RAM Ρ Π΄ΠΈΡΠΊΠ° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π°Π½Π½ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ RAM. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΌΠ΅ΡΡΠ° Π² RAM Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ Ρ Π΄ΠΈΡΠΊΠ° ΡΡΠ°ΡΡΠ΅, ΡΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ΄ΡΡ Π²ΡΡΠ΅ΡΠ½Π΅Π½Ρ ΠΈΠ· RAM.
ΠΠ° Π΄ΠΈΡΠΊΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅: Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΠΏΠ°ΡΡΠΈΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΡΡ-Π³ΡΡΠΏΠΏΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΎΠ΄Π½Π° Π·Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ΄ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΎΠ»Π½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΡΡ-Π³ΡΡΠΏΠΏΡ, Π½ΠΎΠΌΠ΅Ρ ΠΏΠ°ΡΡΠΈΡΠΈΠΈ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ»Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈ ΠΎΡΡΡΠ΅Ρ Π² ΡΠ°ΠΉΠ»Π΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠ°ΡΡΠ΅ Π½Π° Apache Ignite Wiki:
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ disk page compression, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. ΠΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠ°Π±ΠΎΡΠ° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² RAM Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΅ΡΡΡ, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΈ, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡ ΠΈΠ· RAM Π½Π° Π΄ΠΈΡΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈΡ ΡΠΆΠ°ΡΠΈΠ΅.
ΠΠΎ ΡΠΆΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΡΠΎΠ³ΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ Π±ΡΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, ΠΌΡ ΡΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ» ΠΎΠ΄Π½Ρ Π·Π° Π΄ΡΡΠ³ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠ΄ΠΈΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
- ΠΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΎΡΡΡΠ΅Ρ ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½Π° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅.
- ΠΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π΅ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ, ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½Π° Π²ΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ»Π° ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅Ρ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, Π΄Π»Ρ Π½Π΅Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΡΠΆΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΡΠ°ΠΉΠ»Π΅.
- ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠΌΠ΅ΡΡΠΈΡΡΡ Π½Π° Π½Π΅ ΠΊΡΠ°ΡΠ½ΠΎΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ Π±Π»ΠΎΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΡΠ»ΠΎ Π±Π°ΠΉΡ, ΡΠΎ Π΄Π»Ρ Π΅Π΅ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°ΡΡΠΎΠ½ΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΠ΅ΡΠ°ΡΡ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΡΠΎΠ²Π½Π΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ disk page compression Π² Apache Ignite ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ sparse ΡΠ°ΠΉΠ»Ρ. Sparse (ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΡΠΉ) ΡΠ°ΠΉΠ» β ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΠΉΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ Π½ΡΠ»ΡΠΌΠΈ ΡΠ΅Π³ΠΈΠΎΠ½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ ΠΊΠ°ΠΊ Β«Π΄ΡΡΡΒ». ΠΡΠΈ ΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ Π΄ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΌΠ΅ΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅.
ΠΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠΎΠ±Ρ Π²ΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π±Π»ΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π»ΠΈΠ±ΠΎ ΡΠ°Π²Π΅Π½ Π±Π»ΠΎΠΊΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π° Apache Ignite: ΡΡΠΎΠ±Ρ ΡΠΆΠ°ΡΠΈΠ΅ Π΄Π°Π²Π°Π»ΠΎ Ρ ΠΎΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΡΠ΅ΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ» ΡΡΡΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±Π»ΠΎΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ ΡΠ°Π·ΠΌΠ΅ΡΡ Π±Π»ΠΎΠΊΠ°, ΡΠΎ ΠΌΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎΠ±Ρ Π²ΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΠ±Ρ ΡΠΆΠ°ΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π°Π½ΠΈΠΌΠ°Π»Π° 0 Π±Π°ΠΉΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ ΡΠ°Π·ΠΌΠ΅ΡΡ 2-Ρ Π»ΠΈΠ±ΠΎ 4-Ρ Π±Π»ΠΎΠΊΠΎΠ², ΠΌΡ ΡΠΆΠ΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ Π΅ΡΠ»ΠΈ Π½Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠΎΠΆΠΌΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π΄ΠΎ 50% Π»ΠΈΠ±ΠΎ Π΄ΠΎ 75% ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°: ΠΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΆΠ°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΆΠ°ΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΎΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΆΠ°ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π½Π° ΠΌΠ΅ΡΡΠ΅ Π²ΡΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½Π½ΡΡ
Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡΠΎΠ±ΠΈΠ²Π°Π΅ΡΡΡ Β«Π΄ΡΡΠΊΠ°Β» (Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² fallocate()
Ρ ΡΠ»Π°Π³ΠΎΠΌ Β«punch holeΒ»). ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΆΠ°ΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π±Π»ΠΎΠΊΠΈ, ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΅ΡΡΡ, Π² Π½Π΅ΡΠΆΠ°ΡΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΡΠ΅ ΠΎΡΡΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΈΡ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π±Π΅Π· ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΈ, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π»ΠΎΠΊΠ°ΡΠΈΠΈ ΡΡΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΈΠ»Π°ΠΌΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΡΡΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΈ Π±Π΅Π· ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π½Π° Π³ΡΠ°Π½ΠΈΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ignite ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ sparse ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ ΠΠ‘ Linux, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ disk page compression ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ignite Π½Π° ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΆΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ disk page compression: ZSTD, LZ4, Snappy. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ (SKIP_GARBAGE), ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΊΠΈΠ΄ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Π² ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠΎ Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΈ Π½Π° ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° CPU ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠ°Π½Π΅Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ.
ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΌΠ΅ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΡΠ΅Π½Π΄Π°Ρ Ρ Π½Π΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π°Ρ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π΅, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ°ΡΡΡΠΆΠ΄Π°ΡΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ, Π³Π΄Π΅ ΠΌΡ ΠΏΠΎΡΠ΅ΡΡΠ΅ΠΌ, Π° Π³Π΄Π΅ Π²ΡΠΈΠ³ΡΠ°Π΅ΠΌ.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π½ΠΈΠΌ:
- ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΅Π΅ ΠΏΠΎΠΈΡΠΊ Π² RAM, Π΅ΡΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² RAM c Π΄ΠΈΡΠΊΠ° ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΠ΅.
- ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΡΡΡΠ°Π½ΠΈΡΠ° Π² RAM ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π³ΡΡΠ·Π½Π°Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ ΡΡΠ°Π·Ρ Π² ΠΏΠΎΡΠΎΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌ Π·Π°ΠΏΠΈΡΡ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. ΠΡΠ΅ Π³ΡΡΠ·Π½ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π½Π° Π΄ΠΈΡΠΊ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ:
- ΠΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ (disk IO), Π·Π° ΡΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
- ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ (CPU), Π·Π° ΡΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ sparse ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΠΎΡΠ²ΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ IO ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ sparse ΡΠ°ΠΉΠ»Π° (ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π΄Π΅ΡΠ°Π»ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΡ sparse ΡΠ°ΠΉΠ»ΠΎΠ² Ρ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ).
- ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ (CPU), Π·Π° ΡΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΡΠ΅ΡΡΠΈΠΈ ΡΡΡΠ°Π½ΠΈΡ.
- ΠΠ»ΠΈΡΠ½ΠΈΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅Ρ.
- ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ° (Π·Π΄Π΅ΡΡ Π²ΡΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ ΡΡΠ΅Π½ΠΈΡ):
- ΠΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ (disk IO), Π·Π° ΡΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
- ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ (CPU, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ disk IO), Π·Π° ΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ sparse ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
- ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ (CPU), Π·Π° ΡΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΆΠ°ΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡ.
ΠΠ°ΠΊΠ°Ρ ΡΠ°ΡΠ° Π²Π΅ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠΈΡ? ΠΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅Π½Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Ρ ΡΠΊΠ»ΠΎΠ½ΡΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ disk page compression ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΡΠΊΠΎΡΠ΅Π΅ ΠΊ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌ. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ ΡΠ΅ΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ Π‘Π£ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠΎ sparse ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌ ΡΠΆΠ°ΡΠΈΠΈ.
ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ
ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Apache Ignite, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ°Ρ disk page compression: 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 compaction
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ WAL ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ Π½ΡΠΆΠ΅Π½? ΠΡΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΊΠΎ: ΡΡΠΎ ΠΆΡΡΠ½Π°Π» Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ Π² ΠΈΡΠΎΠ³Π΅ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΡΠΆΠ΅Π½ ΠΎΠ½ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ. ΠΡΠ±Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΡΠ΄Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ Π² WAL, ΡΡΠΎΠ±Ρ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠΈΠ³ΡΠ°ΡΡ ΠΏΠΎ ΠΆΡΡΠ½Π°Π»Ρ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΠΏΠ΅ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΡΠΏΠ΅Π»ΠΈ ΠΎΡΡΠ°Π·ΠΈΡΡΡ Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ΅ (Π²ΡΡΠ΅ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΒ» Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π·Π°ΠΏΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ).
ΠΠ°ΠΏΠΈΡΠΈ Π² WAL Π΄Π΅Π»ΡΡΡΡ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅. ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ β ΡΡΠΎ ΡΠ°ΠΌΠΈ ΠΊΠ»ΡΡΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ β ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡ Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΡΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΅ΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΊΠΈΡ
-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ»ΡΡΠ°Π΅Π², ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΈ Π½ΡΠΆΠ½Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ°. ΠΠ΄Π΅ΡΡ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΡΡ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ, Π½ΠΎ ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π½Π° Apache Ignite Wiki:
ΠΠ° ΠΎΠ΄Π½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. Π’ΠΎ Π΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ put Π² ΠΊΡΡ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΈΡ Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΡΠ°ΠΌΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ, ΡΡΡΠ°Π½ΠΈΡΡ Ρ free-list’Π°ΠΌΠΈ). ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΠ°Ρ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Π΄ΠΎ 90% ΠΎΠ±ΡΠ΅ΠΌΠ° WAL ΡΠ°ΠΉΠ»Π°. ΠΡΠΈ ΡΡΠΎΠΌ Π½ΡΠΆΠ½Ρ ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ°ΠΌΠΈ β 3 ΠΌΠΈΠ½ΡΡΡ). ΠΠΎΠ³ΠΈΡΠ½ΠΎ Π±ΡΠ»ΠΎ-Π±Ρ ΠΎΡ ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ΅ΡΠΈ ΠΈΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·Π±Π°Π²Π»ΡΡΡΡΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ WAL compaction, ΠΈΠ·Π±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈ ΡΠΆΠΈΠΌΠ°Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ zip ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ (ΠΈΠ½ΠΎΠ³Π΄Π° Π² Π΄Π΅ΡΡΡΠΊΠΈ ΡΠ°Π·).
Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ WAL ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 10) ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 64ΠΠ±), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎ ΠΊΡΡΠ³Ρ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΡΠ΅ΠΊΡΡΠΈΠΌ Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π° Π½ΠΈΠΌ ΡΠ΅Π³ΠΌΠ΅Π½Ρ, Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² Π°ΡΡ ΠΈΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. WAL compaction ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π°ΡΡ ΠΈΠ²Π½ΡΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΎΠ½ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ° ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΠΎ Π°ΡΡ ΠΈΠ²Π½ΡΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΠΌ, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠΆΠ΅ Π½Π΅ Π½ΡΠΆΠ½Ρ.
ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ WAL compaction ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΡΠΎ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ. ΠΠΎ ΠΎΠ½ Π²ΡΠ΅ ΡΠ°ΠΊΠΈ Π΄Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΎΠ½ΠΎΠ²ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° CPU (ΡΠΆΠ°ΡΠΈΠ΅) ΠΈ Π΄ΠΈΡΠΊ (ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ WAL ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΈΠ· Π°ΡΡ ΠΈΠ²Π° ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠΆΠ°ΡΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ²), ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΏΡΠ΅Π΄Π΅Π»Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ
ΠΠΊΠ»ΡΡΠΈΡΡ WAL compaction ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° WalCompactionEnabled
Π² DataStorageConfiguration (DataStorageConfiguration.setWalCompactionEnabled(true)
). Π’Π°ΠΊΠΆΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° DataStorageConfiguration.setWalCompactionLevel() ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°ΡΠ΅Π»ΡΠ½ΠΈΡ (BEST_SPEED).
WAL page snapshot compression
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
Π Π°Π½Π΅Π΅ ΡΠΆΠ΅ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ, ΡΡΠΎ Π² WAL Π·Π°ΠΏΠΈΡΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ WAL. Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠΎΠΆΠ΅ Π΄Π΅Π»ΡΡΡΡ Π½Π° 2 ΠΏΠΎΠ΄Π²ΠΈΠ΄Π°: page snapshot record ΠΈ delta record. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ-ΡΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ Π΅Π΅ ΠΈΠ· ΡΠΈΡΡΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² Π³ΡΡΠ·Π½ΠΎΠ΅, Π² WAL ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ (page snapshot record β ΡΠ½ΡΠΏΡΠΎΡ ΡΡΡΠ°Π½ΠΈΡΡ). ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ Π² WAL ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ Π·Π°ΠΏΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΡΠ°Π½ΠΈΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ-ΡΠΎ Π½Π° ΡΠΆΠ΅ Π³ΡΡΠ·Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΎ Π² WAL ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ delta record, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΡΡΠ°ΠΆΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΡΡΡΠ°Π½ΠΈΡΡ, Π½ΠΎ Π½Π΅ Π²ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ±ΡΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡ Ρ Π³ΡΡΠ·Π½ΠΎΠ³ΠΎ Π½Π° ΡΠΈΡΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ°, ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ΄ΡΡ ΡΠΎΡΡΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΠ½ΡΠΏΡΠΎΡΠΎΠ² ΡΡΡΠ°Π½ΠΈΡ (ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π½Π°ΡΠ°Π»Π° ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ° ΡΠΈΡΡΡΠ΅), Π·Π°ΡΠ΅ΠΌ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΡ Π΄ΠΎΠ»Ρ delta record Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ°ΡΡΠΈ ΠΈ ΠΎΠΏΡΡΡ ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ Π½Π° Π½Π°ΡΠ°Π»Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ°. ΠΠ°ΠΌΠ΅ΡΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΠ°Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ, ΡΡΠΎ Π΄ΠΎΠ»Ρ ΡΠ½ΡΠΏΡΠΎΡΠΎΠ² ΡΡΡΠ°Π½ΠΈΡ Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ 90%.
ΠΠ΄Π΅Ρ WAL page snapshot compression Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΆΠΈΠΌΠ°ΡΡ ΡΠ½ΡΠΏΡΠΎΡΡ ΡΡΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡ (ΡΠΌ. disk page compression). ΠΡΠΈ ΡΡΠΎΠΌ Π² WAL Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² append-only ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΊ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌ Π±Π»ΠΎΠΊΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° disk page compression, Π½Π°ΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π½ΡΠΆΠ½Ρ sparse ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΠ‘ Linux. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΠΌ ΡΠΆΠ΅ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΡΠΈΠ»ΡΠ½ΠΎ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠΆΠ°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ»ΠΈ 1 Π±Π°ΠΉΡ ΡΡΠΎ ΡΠΆΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² WAL ΡΠΆΠ°ΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ disk page compression, Π³Π΄Π΅ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠΆΠ°ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ 1 Π±Π»ΠΎΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π‘ΡΡΠ°Π½ΠΈΡΡ β Ρ ΠΎΡΠΎΡΠΎ ΡΠΆΠΈΠΌΠ°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΈΡ Π΄ΠΎΠ»Ρ Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΌΠ΅ WAL ΠΎΡΠ΅Π½Ρ Π²ΡΡΠΎΠΊΠ°, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½ΡΡ ΡΠΎΡΠΌΠ°Ρ WAL ΡΠ°ΠΉΠ»Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. Π‘ΠΆΠ°ΡΠΈΠ΅ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎ Π±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° ΠΈ ΠΏΠΎΡΠ΅ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΏΡΠΈΠ½Π΅ΡΠ»ΠΎ Π±Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° ΡΠ°ΠΉΠ»Π°.
ΠΠ°ΠΊ ΠΈ Π΄Π»Ρ disk page compression Π΄Π»Ρ WAL page snapshot compression ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΆΠ°ΡΠΈΡ ZSTD, LZ4, Snappy, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΆΠΈΠΌ SKIP_GARBAGE.
ΠΠ»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ
ΠΠ°ΠΊ Π½Π΅ ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π½Π°ΠΏΡΡΠΌΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ WAL page snapshot compression Π²Π»ΠΈΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΠΎΡΠΎΠΊΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ, ΡΠΎ Π΅ΡΡΡ Π½Π° ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΡΡΠ°Ρ . Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· WAL ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΎΡΠ°Π·ΠΎΠ²ΠΎ, Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄Π½ΡΡΠΈΡ ΡΠ·Π»Π° ΠΏΠΎΡΠ»Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ (ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΠ°).
ΠΠ° ΠΏΠΎΡΠΎΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ (CPU) Π·Π° ΡΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΆΠΈΠΌΠ°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΠΈΡΡΡ Π½Π° Π΄ΠΈΡΠΊ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ (disk IO) Π·Π° ΡΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ . Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π·Π΄Π΅ΡΡ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΠΈΡΠ°Π΅ΡΡΡ Π² CPU, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΡ, Π΅ΡΠ»ΠΈ Π² Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄ β ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΈΡΠΎΡΡ.
ΠΠΎΡΠ²Π΅Π½Π½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° WAL ΡΠ°ΠΊΠΆΠ΅ Π²Π»ΠΈΡΠ΅Ρ (ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ) Π½Π° ΠΏΠΎΡΠΎΠΊΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠΈΠ΄ΡΠ²Π°ΡΡ Π² Π°ΡΡ ΠΈΠ² ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ WAL ΠΈ Π½Π° ΠΏΠΎΡΠΎΠΊΠΈ WAL compaction.
Π Π΅Π°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π° ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΎΡΡ (Π½Π° 10%-15% Π²ΡΡΠΎΡ throughput, Π½Π° 10%-15% ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ latency).
ΠΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ 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 ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΠΈ Π»ΡΠ±ΡΠ΅ ΠΈΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΈΡ
ΡΠ°Π±ΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ ΠΏΠΎΠ΄ Π²Π°ΡΠΈ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΡΠ΅ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. Disk page compression ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΆΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΡΡΠ΅Π΄Π½ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ. WAL page snapshot compression Π΄Π°ΡΡ ΡΡΠ΅Π΄Π½ΡΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ ΡΠΆΠ°ΡΠΈΡ ΡΠΆΠ΅ WAL ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Π΅ΡΠΎΡΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ²ΡΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. WAL compaction Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ, Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ WAL ΡΠ°ΠΉΠ»ΠΎΠ² Π·Π° ΡΡΠ΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com