Π Π°Π·ΡΠΈΡΡΠΎΠ²ΠΊΠ° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎΡ 2015 Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΠΠ»ΠΈΡ ΠΠΎΡΠΌΠΎΠ΄Π΅ΠΌΡΠ½ΡΠΊΠΈ "Linux Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° PostgreSQL"
ΠΡΠΊΠ°Π· ΠΎΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ: ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ Π΅ Π΄Π°ΡΠΈΡΠΎΠ²Π°Π½ ΠΏΡΠ΅Π· Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ 2015 Π³ΠΎΠ΄ΠΈΠ½Π° β ΠΌΠΈΠ½Π°Π»ΠΈ ΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΎ. ΠΠ΅ΡΡΠΈΡΡΠ° Π½Π° PostgreSQL, ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π° Π² Π΄ΠΎΠΊΠ»Π°Π΄Π° 9.4, Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°. ΠΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈΠ·Π»ΡΠ·ΠΎΡ Π° 5 Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° PostgreSQL ΠΈ 15 Π²Π΅ΡΡΠΈΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux. ΠΠΊΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅Π·ΠΈ ΠΌΠ΅ΡΡΠ°, ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π΄ΡΡΠ³ Π΄ΠΎΠΊΠ»Π°Π΄. ΠΠΎ ΡΡΠΊ Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ΠΎ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° Linux Π·Π° PostgreSQL, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π°ΠΊΡΡΠ°Π»Π½ΠΎ ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°.


ΠΠ°Π·Π²Π°ΠΌ ΡΠ΅ ΠΠ»ΠΈΡ ΠΠΎΡΠΌΠΎΠ΄Π΅ΠΌΡΠ½ΡΠΊΠΈ. Π Π°Π±ΠΎΡΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° PostgreSQL-Consulting. Π‘Π΅Π³Π° ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ° ΠΌΠ°Π»ΠΊΠΎ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Ρ Linux ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ ΠΈ PostgreSQL Π² ΡΠ°ΡΡΠ½ΠΎΡΡ, Π·Π°ΡΠΎΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΡΠ΅ ΡΠ° Π΄ΠΎΡΡΠ° ΡΡ ΠΎΠ΄Π½ΠΈ.
ΠΠ° ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ? ΠΠΊΠΎ ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Ρ PostgreSQL, Π΄ΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΡΡΠ΅ΠΏΠ΅Π½ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ UNIX Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ. ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ²Π°? ΠΠΊΠΎ ΡΡΠ°Π²Π½ΠΈΠΌ Oracle ΠΈ PostgreSQL, Π² Oracle ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Π½Π° 80 % DBA Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈ Π½Π° 20 % Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° Linux.
Π‘ PostgreSQL Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ. Π‘ PostgreSQL ΡΡΡΠ±Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Linux. ΠΡΠΈ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° ΠΌΠ°Π»ΠΊΠΎ Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ΅ΠΌΠΏΠΎΡΠΎ, Π·Π°ΡΠΎΡΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°. Π Π½ΠΎΠ²ΠΈ ΡΠ΄ΡΠ° ΠΈΠ·Π»ΠΈΠ·Π°Ρ, ΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΈ Ρ.Π½.
ΠΠ°ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Linux? ΠΡΠΎΠ±ΡΠ΅ Π½Π΅ Π·Π°ΡΠΎΡΠΎ ΡΠΌΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡΠ° Linux ΠΠΈΡΠ΅Ρ, Π° Π·Π°ΡΠΎΡΠΎ Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ Π΅Π΄Π½Π°ΡΠ° ΠΎΡ Π½Π°ΠΉ-ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ ΠΈ Ρ PostgreSQL Π² ΡΠ°ΡΡΠ½ΠΎΡΡ Π΅ Linux. ΠΠ°ΡΠΎΡΠΎ FreeBSD, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π² ΡΡΡΠ°Π½Π½Π° ΠΏΠΎΡΠΎΠΊΠ°. Π ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°ΠΊΡΠΎ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΡΠ°ΠΊΠ° ΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ Π½Π΅ΡΠ°. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° PostgreSQL Π½Π° Windows β ΡΠΎΠ²Π° Π΅ ΠΈΠ·ΡΡΠ»ΠΎ ΠΎΡΠ΄Π΅Π»Π½Π° ΡΡΡΠΎΠ²Π° ΡΠ΅ΠΌΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Windows Π½ΡΠΌΠ° ΡΠ°ΠΊΠΎΠ²Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΠ°ΠΊΡΠΎ UNIX, Π° PostgreSQL Π΅ Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΡΠΎΠ²Π°, Π·Π°ΡΠΎΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°.
Π Π΅ΠΊΠ·ΠΎΡΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠ°ΡΠΎ Solaris, ΠΌΠΈΡΠ»Ρ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Ρ ΠΎΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ.

Π ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Π½Π° Linux ΠΈΠΌΠ° Π½Π°Π΄ 1000 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° syctl, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΎ ΡΠ΄ΡΠΎΡΠΎ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π³Π°ΠΉΠΊΠΈ, ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π° ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½ΠΈ. ΠΠΌΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠ°Ρ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠΏΡΠΎΡΠΈ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅: ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π² BIOS, ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ΡΠΎ ΠΈ Ρ.Π½.
Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌ ΠΎΠ±Π΅ΠΌ, Π·Π° ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈ Π΄Π½ΠΈ Π½Π°ΡΠ΅Π΄, Π° Π½Π΅ Π² Π΅Π΄ΠΈΠ½ ΠΊΡΠ°ΡΡΠΊ Π΄ΠΎΠΊΠ»Π°Π΄, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ΅ ΡΠΏΡΠ° Π½Π° Π²Π°ΠΆΠ½ΠΈΡΠ΅ Π½Π΅ΡΠ°, ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π±ΡΠ³Π°ΡΠ΅ ΠΎΡ ΠΊΠ°ΠΏΠ°Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π΄Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠ±ΡΠ΅ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π° Linux, Π°ΠΊΠΎ Π½Π΅ Π³ΠΈ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠ΅. Π Π² ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π΅ ΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π·Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ΅ΡΡ, ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠ»Π°Π±ΠΎ ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ.

ΠΠ°ΠΊΠ²ΠΈ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈ tuning targets ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π² Linux? ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ Π²ΠΈΠ΅ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΡΠ΅ Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅ Π½Π° Linux, Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΎΠ±ΡΡΠ½ΡΠ²Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ targets.
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ½ΠΈΠ½Π³ΡΠ²Π°:
- Π¦Π.
- ΠΠ°ΠΌΠ΅Ρ.
- Π‘ΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅.
- ΠΡΡΠ³ΠΎ. ΠΠ° ΡΠΎΠ²Π° ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΠΊΡΠ°Ρ Π·Π° Π΄Π΅ΡΠ΅ΡΡ. ΠΠΎΡΠΈ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΠΊΠ°ΡΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΏΠ΅ΡΡΠ΅Π½Π΅ Π½Π° Π΅Π½Π΅ΡΠ³ΠΈΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΊΠ°ΠΆΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎ ΠΈ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΡΠΈΡΡΠ½ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.

ΠΠ°ΠΊΠ²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° ΠΈΠΌΠ° PostgreSQL ΠΈ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ? ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΄Π΅ΡΠ°ΠΉΠ» ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½ΠΈ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°.
ΠΠ°, ΡΠ°ΠΊΠΈΠ²Π° Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ, Π½ΠΎ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π΅ ΡΠ»ΠΎΠΆΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. Π’Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π° ΡΡΡΠ²Π΅ΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ° Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎ. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ Π½Π° Oracle Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ ΠΎΡΡΠ²Π°ΡΠ°ΡΠ° ΠΠ‘, ΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΊΠ°ΡΠΎ Π² Π°Π½Π΅ΠΊΠ΄ΠΎΡΠ° Π·Π° ΠΌΠΎΠ½Π³ΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΡΠΌΠΎΠ½Π°Π²Ρ β Π½Π°Ρ ΡΠ°Π½Π΅ΡΠ΅ ΠΊΡΡΠ΅ΡΠΎ ΠΈ Π½Π΅ ΠΏΠΈΠΏΠ°ΠΉΡΠ΅ Π½ΠΈΡΠΎ. ΠΠ°ΠΉΡΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ, Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌΠ° Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°.
Π ΠΏΡΠΈΠ½ΡΠΈΠΏ, Π΄ΠΎΠ½ΡΠΊΡΠ΄Π΅ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° Ρ PostgreSQL Π΅ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠ°Π²Π°. Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° Π΅ Π² ΡΠΎΠ²Π°, ΡΠ΅ Π±Π°Π·Π°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌΠ° Π΄Π° ΡΠΈ Π²Π·Π΅ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ, ΡΠΎΠ΅ΡΡ, Π½ΡΠΊΡΠ΄Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π° Π½ΠΈΠ²ΠΎ Linux Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΡΡΠ½ΠΎ.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ΄Π΅Ρ Π΅ Π΄Π° Π½Π΅ ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ target ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° Π³ΠΎ ΡΡΠ½ΠΈΠ½Π³ΡΠ²Π°ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠ°ΠΌΠ΅Ρ, Π¦Π ΠΈΠ»ΠΈ Π½Π΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ, Π° Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ ΠΈ Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠ΅Π· Π±Π°Π·Π°ΡΠ° Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈ Π½ΠΈ ΡΡΠ·Π΄Π°Π΄ΠΎΡ Π°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.

ΠΡΠΎ ΡΠ°ΠΊΠ°Π²Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π·Π° ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅. ΠΠΌΠ° Π±ΡΡΠ΅Ρ Π½Π° ΠΠ‘ Linux, ΠΈΠΌΠ° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΠΈΠΌΠ° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ Π½Π° PostgreSQL. PostgreSQL, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ Oracle, ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π· Π±ΡΡΠ΅ΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ, Ρ.Π΅. Π·Π° Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π΅ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΎΡ Π΄ΠΈΡΠΊΠ° Π² Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΏΡΠ΅Π· Π±ΡΡΠ΅ΡΠ° Π½Π° ΡΠ΄ΡΠ°ΡΠ°, Π° ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π΅ ΡΠΎΡΠ½ΠΎ ΡΡΡΠ°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ.
ΠΠΎΠ΄ ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΆΠΈΠ²Π΅ΡΡ Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅. ΠΠ°Π±ΡΠΎΡΠΈΡ Π³ΠΎ ΠΊΠ°ΡΠΎ Π΄ΠΈΡΠΊΠΎΠ²Π΅. ΠΡΡΡΠ½ΠΎΡΡ ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° RAID ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΠΈ Ρ.Π½.
Π ΡΠΎΠ·ΠΈ Π²Ρ ΠΎΠ΄-ΠΈΠ·Ρ ΠΎΠ΄ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΡΡΠ΅Π· Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°.
PostgreSQL Π΅ ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’Π°ΠΌ Π²ΡΡΡΠ΅ ΠΈΠΌΠ° ΡΡΡΠ°Π½ΠΈΡΠΈ. Π ΡΠ΅Π»ΠΈΡΡ Π²Ρ ΠΎΠ΄-ΠΈΠ·Ρ ΠΎΠ΄ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ. ΠΠΈΠ΅ ΠΏΠΎΠ²Π΄ΠΈΠ³Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΠΈ. Π Π°ΠΊΠΎ Π½ΠΈΡΠΎ Π½Π΅ ΡΠ΅ Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎ, ΠΏΡΠΎΡΡΠΎ ΡΠΌΠ΅ Π³ΠΈ ΠΏΡΠΎΡΠ΅Π»ΠΈ, ΡΠ΅ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π·Π°ΡΡΠ²Π°Ρ ΠΎΡ ΡΠΎΠ·ΠΈ ΠΊΠ΅Ρ, ΠΎΡ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ ΠΈ ΠΎΡΠΈΠ²Π°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° Π΄ΠΈΡΠΊΠ°.
ΠΠΊΠΎ Π½ΡΠΊΡΠ΄Π΅ Π½Π΅ΡΠΎ ΡΠΌΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ, ΡΠΎ ΡΡΠ»Π°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ° ΠΊΠ°ΡΠΎ ΠΌΡΡΡΠ½Π°. Π’ΡΠΊ ΡΡΠΌ Π³ΠΈ ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π» Ρ ΡΠΈΠ½ ΡΠ²ΡΡ. Π ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π° Ρ Π±Π»ΠΎΡΠ½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. Π’.Π΅. ΠΊΠΎΠ³Π°ΡΠΎ Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΌΡΡΡΠ½Π°, ΠΏΡΠ°Π²ΠΈΠΌ Π·Π°ΠΏΠΈΡ Π² WAL. Π Π² Π½ΡΠΊΠ°ΠΊΡΠ² ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄ΠΎΠΉΠ΄Π΅ ΡΠ²Π»Π΅Π½ΠΈΠ΅ΡΠΎ, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ checkpoint. Π Π² ΡΠΎΠ·ΠΈ Π»ΠΎΠ³ Π±Π΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π°, ΡΠ΅ ΡΠΎΠΉ Π΅ Π΄ΠΎΡΡΠ». Π ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠΊ Π±ΡΡ Π° Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ, ΡΠ΅ ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Ρ Π° Ρ Π΄ΠΈΡΠΊΠ° Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° fsync ΡΡΠ΅Π· Π±ΡΡΠ΅ΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ.
ΠΠ°ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ²Π°? ΠΠΊΠΎ ΠΈΠ·Π³ΡΠ±ΠΈΠΌ Π·Π°Ρ ΡΠ°Π½Π²Π°Π½Π΅ΡΠΎ, Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ° ΠΈΠ·ΡΠ΅Π·Π½Π°Π»ΠΈ. ΠΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ, Π·Π° ΠΊΠΎΡΡΠΎ Π½ΠΈ ΡΠ°Π·ΠΊΠ°Π·Π²Π°Ρ Π°, Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ Π² ΡΠ΅ΠΎΡΠΈΡΡΠ° Π½Π° Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ β ΡΠΎΠ²Π° Π΅ ΡΠ²Π΅ΡΠ»ΠΎΡΠΎ Π±ΡΠ΄Π΅ΡΠ΅, ΠΊΡΠΌ ΠΊΠΎΠ΅ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠ΅ ΡΡΡΠ΅ΠΌΠΈΠΌ ΠΈ Π½ΠΈ Ρ Π°ΡΠ΅ΡΠ²Π°, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ ΠΆΠΈΠ²Π΅Π΅ΠΌ Π² ΠΌΠΈΠ½ΡΡ 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. Π, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π·Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ.
Π Π·Π°Π΄Π°ΡΠ°ΡΠ° Π·Π° ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π΅ Π΄Π° Π½Π°Π³Π»Π°ΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ Π΅ΡΠ°ΠΏΠΈ, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π±ΡΡΠ·ΠΎ. Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ β ΡΠΎΠ²Π° Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΊΠ΅Ρ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅. Π PostgreSQL ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ select Π½Π΅ΡΠΎ ΡΠ°ΠΌ, ΡΠΎΠΉ Π²Π·ΠΈΠΌΠ° ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π΄ΠΈΡΠΊΠ°. Π’Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΠ΅Ρ.
ΠΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠΈΡΠΊΠΎ Π΄ΠΎΠ±ΡΠ΅ ΠΈ Π±ΡΡΠ·ΠΎ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΅ΡΠ°ΠΏΠΈ. Π ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½ΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅, Π·Π°ΡΠΎΡΠΎ Π°ΠΊΠΎ Π² Π½ΡΠΊΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ° Π΄ΠΈΡΠ±Π°Π»Π°Π½Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΠ΅Ρ, Π½ΠΎ ΡΡ ΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½Π° ΡΠΊΠΎΡΠΎΡΡ.
Π ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΠΎΡΠΊΠΈ.

ΠΠ° Π΄Π° ΠΏΡΡΡΠ²Π°Ρ ΡΠ΅Π·ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
- ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
- ΠΠ° Π²ΡΠΎΡΠΎ ΠΌΡΡΡΠΎ, ΠΏΡΠ΅Ρ ΠΎΠ΄ΡΡ, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π½Π° Π΄ΠΈΡΠΊΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½.
- Π Π½Π° ΡΡΠ΅ΡΠΎ ΠΌΡΡΡΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Ρ ΡΠ±Π°Π²ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ 512 GB ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² ΡΡΡΠ²ΡΡ ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΎΡΠΈΠ²Π° Π½Π° SATA ΡΠ²ΡΡΠ΄ Π΄ΠΈΡΠΊ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΡΠ² ΠΊΠ΅Ρ, ΡΠΎ ΡΠ΅Π»ΠΈΡΡ ΡΡΡΠ²ΡΡ Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΠ½Π΅ Π² ΡΠΈΠΊΠ²Π°, Π° Π² ΡΠΈΠΊΠ²Π° ΡΡΡ SATA ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π©Π΅ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ ΡΠΎΠ²Π°. Π Π½ΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π²ΠΈ ΡΠΏΠ°ΡΠΈ.

Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΠΏΡΡΠ²Π°ΡΠ° ΡΠΎΡΠΊΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠΌΠ° ΡΡΠΈ Π½Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π΄Π° Π·Π°ΡΡΡΠ΄Π½ΡΡ ΠΆΠΈΠ²ΠΎΡΠ°.
ΠΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΡΡΡ Π΅ NUMA. NUMA Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π°, Π·Π° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π΅ΡΠ°. Π Π² Π½Π°ΡΡΠΎΡΡΠΈΡ ΠΉ Π²ΠΈΠ΄, ΡΡ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ° Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ page cache.shared Π±ΡΡΠ΅ΡΠΈ.

Π‘ Π΄Π²Π΅ Π΄ΡΠΌΠΈ. ΠΠ°ΠΊ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Ρ NUMA Π½Π΅ Π΅ Π½Π°ΡΠ΅Π΄? ΠΠΌΠ°ΡΠ΅ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΈ ΡΠ΄Π°ΡΠΈ, ΠΈΠ·Π²Π΅Π΄Π½ΡΠΆ Π½ΡΠΊΠΎΠΉ CPU ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π° ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠ΅Π½. ΠΡΠΈ ΡΠΎΠ²Π° Π²ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π² PostgreSQL ΠΈ Π²ΠΈΠΆΠ΄Π°ΡΠ΅, ΡΠ΅ Π½ΠΈΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°ΠΌ Π½ΡΠΌΠ°. Π’Π΅Π·ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°Ρ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ CPU. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π»ΠΎΠ²ΠΈΡΠ΅ ΡΠΎΠ²Π° Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ° ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ NUMA Π·Π° PostgreSQL.

ΠΠ°ΠΊΠ²ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅ ΡΠ»ΡΡΠ²Π°? NUMA β ΡΠΎΠ²Π° Π΅ Non-Uniform Memory Access. ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ²Π°? ΠΠΌΠ°ΡΠ΅ CPU, Π΄ΠΎ Π½Π΅Π³ΠΎ ΠΈΠΌΠ° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΌΡ ΠΏΠ°ΠΌΠ΅Ρ. Π ΡΠ°Π·ΠΈ ΠΏΠ°ΠΌΠ΅Ρ interconnects ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΡΡΡΠΏΠ²Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΎΡ Π΄ΡΡΠ³ΠΈ CPU.
ΠΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ numactl --hardware, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π‘ΡΠ΅Π΄ Π΄ΡΡΠ³ΠΎΡΠΎ ΡΠ°ΠΌ ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ»Π΅ distances. Π©Π΅ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΈΡΡΠΈ β 10-20, Π½Π΅ΡΠΎ ΡΠ°ΠΊΠΎΠ²Π°. Π’Π΅Π·ΠΈ ΡΠΈΡΡΠΈ Π½Π΅ ΡΠ° Π½ΠΈΡΠΎ Π΄ΡΡΠ³ΠΎ ΠΎΡΠ²Π΅Π½ Π±ΡΠΎΠΉ Π½Π° Ρ
ΠΎΠΏΠΎΠ²Π΅ΡΠ΅, Π·Π° Π΄Π° Π΄ΠΎΡΡΡΠΏΠΈΡΠ΅ ΡΠ°Π·ΠΈ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Π΄Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Π ΠΏΡΠΈΠ½ΡΠΈΠΏ, Π΄ΠΎΠ±ΡΠ° ΠΈΠ΄Π΅Ρ. Π’ΠΎΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ΅Π΄ΠΈΡΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π΅Π΄ΠΈΠ½ CPU, ΠΊΠΎΠΉΡΠΎ ΠΏΡΡΠ²ΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈ ΠΏΠ°ΠΌΠ΅Ρ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈ Π΄ΡΡΠ³Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΡΠ΅Π· interconnect Π·Π° Π½Π΅ΡΠΎ. Π Π½Π° ΡΠΎΠ·ΠΈ CPU ΠΏΠΎΠΏΠ°Π΄Π° ΡΠ΅Π»ΠΈΡΡ Π²ΠΈ page cache Π½Π° PostgreSQL β Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅Π·ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠΈ. ΠΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π½Π°ΠΉ-Π»ΠΎΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, Π·Π°ΡΠΎΡΠΎ Π½Π° CPU Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡΠ» ΠΏΠ°ΠΌΠ΅Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ ΠΌΠ°Π»ΠΊΠΎ. Π¦ΡΠ»Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°, ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΡΠ΅Π·ΠΈ interconnects. ΠΠΎΠ»ΡΡΠ°Π²Π° ΡΠ΅ Π±Π°Π²Π½ΠΎ ΠΈ ΡΡΠΆΠ½ΠΎ. Π ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΅ Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ ΠΎΡ ΡΠΎΠ·ΠΈ Π²ΡΠ·Π΅Π». Π Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°Π·ΠΈ ΠΏΠ°ΠΌΠ΅Ρ Π΅ Π»ΠΎΡΠΎ, Π±Π°Π²Π½ΠΎ. Π’ΠΎΠ²Π° Π΅ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΎΠ²Π° Π·Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΏΠΎ-ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Linux ΠΈΠ·ΡΡΠ»ΠΎ Π΄Π° Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΡΠ°ΠΌ. ΠΠ° ΡΠ΅ ΠΎΡΠ½Π°ΡΡ ΠΊΡΠΌ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ.
ΠΠ°ΡΠΎ Π΅ ΡΠ°ΠΊΠ°? ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ. Π’ΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΏΠΎ Π΅Π΄Π½Π° ΠΏΡΠΎΡΡΠ° ΠΏΡΠΈΡΠΈΠ½Π°: Π½ΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΠ΅Ρ Π·Π° page cache β Π΄Π΅ΡΠ΅ΡΠΊΠΈ, ΡΡΠΎΡΠΈΡΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠΈ.
ΠΠΊΠΎ ΡΠΌΠ΅ Π²ΡΠ΄Π΅Π»ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΈ ΠΊΠ΅ΡΠΈΡΠ°Π»ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠΈ ΡΠ°ΠΌ, ΠΏΠ΅ΡΠ°Π»Π±Π°ΡΠ° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ΅ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠ΅ΡΠ°Π»Π±Π°ΡΠ° ΠΎΡ Ρ ΠΈΡΡΠΎΡΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΠ΅ ΡΠΏΠ΅ΡΠ΅Π»ΠΈΠΌ Π½Π΅ΡΡΠ°Π²Π½ΠΈΠΌΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π°ΠΊΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ΅ ΡΡΡΠ΄ΠΈΠΌ Π·Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ΅Π· NUMA.
Π’Π°ΠΊΠ° ΡΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ° Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ²Π΅ΡΠ»ΠΎΡΠΎ Π±ΡΠ΄Π΅ΡΠ΅ Π½Π΅ Π½Π°ΡΡΡΠΏΠΈ ΠΈ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π΅ Π½Π°ΡΡΠΈ ΡΠ°ΠΌΠ° Π½Π° ΠΊΠΎΠΈ CPU ΡΠ°Π±ΠΎΡΠΈ ΠΈ ΠΎΡ ΠΊΡΠ΄Π΅ Ρ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈ Π½Π΅ΡΠΎ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ NUMA, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. Π ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ ΠΏΠ΅ΡΠ°Π»Π±ΠΈΡΠ΅ ΡΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° Π³ΠΎΠ»Π΅ΠΌΠΈ, ΡΠ΅ Π²ΡΠΏΡΠΎΡΡΡ ΠΊΠ°ΠΊ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°.
ΠΠΌΠ° ΠΈ Π΄ΡΡΠ³ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠΈΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎ-ΡΠ΅ΡΡΠΎ ΠΎΡ ΠΏΡΡΠ²ΠΈΡ, Π·Π°ΡΠΎΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ΄Π²Π° ΠΏΡΠΈ Π½Π°Ρ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°, ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° Π΅ ΡΡΠ»ΠΎ Π΄Π΅Π»ΠΎ. ΠΠΌΠ° Π±ΠΈΠ·Π½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ. Π ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ NUMA, Π³ΠΈ ΠΈΠ·ΠΏΠΈΡΠ²Π°Ρ. ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΠΌ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ½Π²Π°Π·ΠΈΠ²Π½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΡΠ΅Π· ΡΠ΅ΡΡΠ°ΡΡ, Π½ΠΎ ΡΡΠΊ Π²Π½ΠΈΠΌΠ°Π²Π°ΠΉΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΡΠ΅, ΡΠ΅ Π΅ Π±ΠΈΠ»ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΎ. ΠΠ°ΡΠΎΡΠΎ, ΠΊΠ°ΠΊΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΠΏΠΈΡΡΡ, ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° NUMA Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° PostgreSQL Π΅ Π΄ΠΎΠ±ΡΠ΅, Π½ΠΎ ΡΡΠ²ΡΠ΅ΠΌ Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΡΠ°Π±ΠΎΡΠΈ. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ ΠΈ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅, ΡΠ΅ ΡΠΎ Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ Π±ΠΈΠ»ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΎ.
ΠΠΌΠ° Π΄ΠΎΠ±ΡΡ ΠΏΠΎΡΡ Π½Π° Robert Haas. Π’ΠΎΠΉ Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠΎΠΌΠΈΡΠ΅ΡΠΈΡΠ΅ Π½Π° PostgreSQL. ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ ΡΠ°ΡΡΠΈ. Π Π°ΠΊΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡ, ΡΠ°ΠΌ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠ»ΠΎΡΠΈΡΠ½ΠΈ ΠΈΡΡΠΎΡΠΈΠΈ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ NUMA Π΅ Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π°Π»Π° ΠΆΠΈΠ²ΠΎΡΠ° Π½Π° Ρ ΠΎΡΠ°ΡΠ°. ΠΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅, ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΊ-Π»ΠΈΡΡΠ° Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ, ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ°, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π΄ΠΎΠ±ΡΠ΅. Π’Π΅Π·ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ΠΈ, Π·Π°ΡΠΎΡΠΎ Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ Π½ΡΠΌΠ° Π΄Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ Π² ΡΠ΅ΠΆΠΈΠΌ master-slave Π·Π° ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ. ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° Π²Π½Π΅ΡΠ΅ΡΠ΅ ΡΠ΅Π·ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° slave, Π·Π°ΡΠΎΡΠΎ Π² Π΅Π΄ΠΈΠ½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ Π°Π²Π°ΡΠΈΡ ΠΈ Π²ΠΈΠ΅ ΡΠ΅ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π° slave, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ master.
Π Π°Π²Π°ΡΠΈΠΉΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΡΠΎ, ΡΠ΅Π»Π΅ΡΠΎΠ½ΡΡ Π²ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π·Π²ΡΠ½ΠΈ ΠΈ Π½Π°ΡΠ°Π»Π½ΠΈΠΊΡΡ ΠΈΠ΄Π²Π° Ρ Π³ΠΎΠ»ΡΠΌΠ° ΠΏΠ°Π»ΠΊΠ°, Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΌΠΈΡΠ»ΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°. Π ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΄ΠΎΡΡΠ° ΠΏΠ»Π°ΡΠ΅Π²Π½ΠΈ.

Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ β ΡΠΎΠ²Π° ΡΠ° huge pages. Huge pages Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΠ²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈ Π²ΡΡΡΠ½ΠΎΡΡ Π½ΡΠΌΠ° ΡΠΌΠΈΡΡΠ», Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈΠΌΠ° Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π³ΠΎ ΠΏΡΠ°Π²ΡΡ. Π’Π΅ Π»Π΅ΡΠ½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ.
Π ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΠΌΠΈΡΡΠ»ΡΡ? ΠΠΌΠ°ΡΠ΅ Π½Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΠΊΡΠΏ ΡΡΡΠ²ΡΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 30 GB. ΠΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ huge pages. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΡΠ½Π° overhead Π·Π° ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. Π ΡΠΎΠ·ΠΈ overhead Π½Π΅ Π΅ Π½Π°ΠΉ-ΠΏΡΠΈΡΡΠ½ΠΈΡΡ.

ΠΠ°ΡΠΎ Π΅ ΡΠ°ΠΊΠ°? ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°? ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΏΠ°ΠΌΠ΅Ρ Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ°. Π’Π°ΠΊΠ° Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΡΠ°ΠΊΠ° Π΅ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΎ. Π Π°ΠΊΠΎ Π²Π»Π΅Π·Π΅ΠΌ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΠΠ‘ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡΠ΅ Π°Π΄ΡΠ΅ΡΠΈ Π² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ. Π ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π½Π΅ Π΅ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ, Π·Π°ΡΠΎΠ²Π° ΠΠ‘ ΠΊΠ΅ΡΠΈΡΠ° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΡΠ°Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π² Translation Lookaside Buffer (TLB).
Π ΡΡΠΉ ΠΊΠ°ΡΠΎ TLB Π΅ ΠΊΠ΅Ρ, Π² ΡΠ°ΠΊΠ°Π²Π° ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΈΡΡΡΠΈ Π·Π° ΠΊΠ΅ΡΠ°. ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΡΡ Π΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΡΠ°ΡΡΠΈ, ΡΠΎΠ·ΠΈ Π±ΡΡΠ΅Ρ ΡΡΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌ. Π Π°ΠΊΠΎ ΠΊΠ΅ΡΡΡ Π΅ Π³ΠΎΠ»ΡΠΌ, ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π² Π½Π΅Π³ΠΎ ΡΡΠ°Π²Π° ΠΏΠΎ-Π±Π°Π²Π½ΠΎ. ΠΠ΄ΡΠ°Π²ΠΈΡΡ overhead Π·Π°Π΅ΠΌΠ° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Ρ.Π΅. ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ²Π° Π½Π΅ ΠΏΠΎ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡ Π½Π°ΡΠΈΠ½. Π’ΠΎΠ²Π° Π΅ ΠΏΡΡΠ²Π°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π°.
ΠΠ²Π΅ β ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π°ΡΠ°ΡΡΠ²Π° ΠΊΠ΅ΡΡΡ Π² ΡΠ°ΠΊΠ°Π²Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ° Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΊΠ΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠΈ. Π Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠ΅Ρ Π±ΡΡΠ·ΠΎ ΡΠΏΠ°Π΄Π° Ρ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠΈΡ ΠΌΡ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΠ°ΡΠΎΠ²Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π΅ ΠΈΠ·ΠΌΠΈΡΠ»Π΅Π½ ΠΏΡΠΎΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. Π Linux ΡΠΎΠΉ ΠΎΡΠ΄Π°Π²Π½Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. Π FreeBSD Π½Π΅ΠΎΡΠ΄Π°Π²Π½Π° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ. ΠΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° Linux. Π’ΠΎΠ²Π° ΡΠ° huge pages.
Π ΡΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ, ΡΠ΅ huge pages, ΠΊΠ°ΡΠΎ ΠΈΠ΄Π΅Ρ, ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π±Π΅ΡΠ΅ Π½Π°Π»ΠΎΠΆΠ΅Π½Π° ΠΎΡ ΠΎΠ±ΡΠ½ΠΎΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΈ Oracle ΠΈ IBM, Ρ.Π΅. ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ ΠΎΠ±ΠΌΠΈΡΠ»ΠΈΡ Π°, ΡΠ΅ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ.

Π ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΡΠ²ΡΡΠΆΠ΅ΠΌ Ρ PostgreSQL? ΠΡΡΠ²ΠΎ, Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ huge pages.
ΠΠ° Π²ΡΠΎΡΠΎ ΠΌΡΡΡΠΎ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²Π½ΠΎ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ ΡΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° sysctl β ΠΊΠΎΠ»ΠΊΠΎ ΠΎΡ ΡΡΡ . Π§ΠΈΡΠ»Π°ΡΠ° ΡΡΠΊ ΡΠ° ΠΎΡ Π½ΡΠΊΠΎΠΉ ΡΡΠ°Ρ ΡΡΡΠ²ΡΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠΌΠ°ΡΠ΅ shared buffers, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ huge pages Π΄Π° ΡΠ΅ Π²ΠΏΠΈΡΠ°Ρ ΡΠ°ΠΌ.
ΠΠΊΠΎ ΡΠ΅Π»ΠΈΡΡ Π²ΠΈ ΡΡΡΠ²ΡΡ Π΅ ΠΎΡΠ΄Π°Π΄Π΅Π½ Π½Π° PostgreSQL, ΡΠΎ Π΄ΠΎΠ±ΡΠ° ΠΎΡΠΏΡΠ°Π²Π½Π° ΡΠΎΡΠΊΠ° Π΅ Π΄Π° ΠΎΡΠ΄Π°Π΄Π΅ΡΠ΅ ΠΈΠ»ΠΈ 25 % ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° shared buffers, ΠΈΠ»ΠΈ 75 %, Π°ΠΊΠΎ ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, ΡΠ΅ Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΡΡΡ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ±Π΅ΡΠ΅ Π² ΡΠ΅Π·ΠΈ 75 %. ΠΡΡΠ²Π°ΡΠ° ΠΎΡΠΏΡΠ°Π²Π½Π° ΡΠΎΡΠΊΠ°. Π ΠΈΠ·ΡΠΈΡΠ»Π΅ΡΠ΅, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ 256 GB ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ 64 GB ΡΠ΅ Π±ΡΠ΄Π°Ρ shared buffers. ΠΠ·ΡΠΈΡΠ»Π΅ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ β Π² ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½Π° ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ°.
ΠΠΎ Π²Π΅ΡΡΠΈΡ 9.2 (Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ Π»ΡΠΆΠ°, ΠΎΡ Π²Π΅ΡΡΠΈΡ 8.2) ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π²ΡΠ½ΡΠ½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ PostgreSQL Ρ huge pages. Π ΡΠΎΠ²Π° Π²ΠΈΠ½Π°Π³ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ. ΠΡΡΠ²ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅ ΡΠ΄ΡΠΎΡΠΎ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ huge pages ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ. Π Π²ΡΠΎΡΠΎ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Ρ ΡΡΡ , ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. ΠΡΠΎΡΡΠΎ ΡΠ°ΠΊΠ° Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅. ΠΠΎΠ½Π΅ΠΆΠ΅ PostgreSQL ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΡΠΈΠ» system 5, ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° libhugetlbfs β ΡΠΎΠ²Π° Π΅ ΠΏΡΠ»Π½ΠΎΡΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°.
Π Π²Π΅ΡΡΠΈΡ 9.3 Π±Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° PostgreSQL ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠ΅ ΠΎΡΠΊΠ°Π·Π°Ρ Π° ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° 5. ΠΡΠΈΡΠΊΠΈ Π±ΡΡ Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠ»ΠΈΠ²ΠΈ, Π·Π°ΡΠΎΡΠΎ Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π΄Π²Π° ΠΈΠ½ΡΡΠ°Π½ΡΠ° Π½Π° PostgreSQL Π½Π° Π΅Π΄Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΡΠΎΠΉ ΠΊΠ°Π·Π²Π°, ΡΠ΅ ΠΌΡ Π»ΠΈΠΏΡΠ²Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. Π ΠΊΠ°Π·Π²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠ΅ sysctl. Π ΡΠ°ΠΌ ΡΠ°ΠΊΡΠ² sysctl, ΡΠ΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° ΠΈ Ρ.Π½. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, Π²ΡΠΈΡΠΊΠΈ Π±ΡΡ Π° ΡΠ°Π·Π²ΡΠ»Π½ΡΠ²Π°Π½ΠΈ. ΠΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ mmap Π΅ ΡΡΡΠΏΠΈΠ»ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° huge pages. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ. Π ΡΠΈΠ»Π½ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Ρ ΠΌΠ΅ Π΄Π° Π½Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ Π½Π° 9.3, Π·Π°ΡΠΎΡΠΎ ΡΠ°ΠΌ overhead Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΡΡΠ΅ΡΠ° Π² Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠΈ.
ΠΠΎ ΠΏΡΠΊ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΠΎΠ±ΡΡΠ½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π² 9.4 Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ. Π 9.4 ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² postgresql.conf, Π² ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈ try, on ΠΈΠ»ΠΈ off.
Try β Π½Π°ΠΉ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° PostgreSQL, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠΉ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΏΠ°ΠΌΠ΅Ρ ΠΎΡ huge pages. Π Π°ΠΊΠΎ Π½Π΅ ΡΡΠΏΠ΅Π΅, ΡΠ΅ Π²ΡΡΡΠ° ΠΊΡΠΌ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. Π Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ FreeBSD ΠΈΠ»ΠΈ Solaris, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ try, ΡΠΎΠ²Π° Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ.
ΠΠΊΠΎ Π΅ on, ΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΡΠ°ΡΡΠΈΡΠ°, Π°ΠΊΠΎ Π½Π΅ Π΅ ΡΡΠΏΡΠ» Π΄Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΎΡ huge pages. Π’ΡΠΊ Π²Π΅ΡΠ΅ β Π½Π° ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΏΠΎ-ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠΎ Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ try, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΡΠ΅ Π΄Π°Π»ΠΈ Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½ΡΠΆΠ½ΠΎ, Π·Π°ΡΠΎΡΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡΡΡΠΎ Π·Π° Π³ΡΠ΅ΡΠΊΠΈ. Π‘Π΅Π³Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ Π½Π° Linux.
ΠΡΠ΅ Π΅Π΄Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ. Transparent huge pages β ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΎΡΠ΅ Π·Π° PostgreSQL. Π’ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΡΡΡ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ. Π ΠΏΡΠΈ Transparent huge pages Π·Π° ΡΠ°ΠΊΡΠ² workload, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π³ΠΎΠ»ΡΠΌ Π±Π»ΠΎΠΊ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ ΠΏΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΌΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠΈ ΠΏΠ°ΠΌΠ΅Ρ, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ³ΡΠ°Π΅ ΡΠΎΠ»Ρ. ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΠΎ-ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ 32, 64, 128, 256 GB ΠΏΠ°ΠΌΠ΅Ρ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ°, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ huge pages ΡΠ° Ok, Π° Transparent ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅.

Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΠΎΡΠΊΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π½Π΅ Π΅ ΠΏΡΡΠΊΠΎ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Π½ΠΎ ΠΌΠΎΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° ΡΠ°Π·Π²Π°Π»ΠΈ ΠΆΠΈΠ²ΠΎΡΠ°. Π¦ΡΠ»Π°ΡΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡΡΡΠ°Π΄Π° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ ΠΎΡ ΡΠΎΠ²Π°, ΡΠ΅ ΡΡΡΠ²ΡΡΡΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ swap-Π²Π°.
Π ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ Π² ΡΠ΅Π΄ΠΈΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡ Π΅, ΡΠ΅ Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ΄ΡΠ° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ ΡΠΎΠ²Π° Π² ΠΏΠΎ-ΡΡΠ°ΡΠΈΡΠ΅ ΡΠ΄ΡΠ° Π½Π° Linux. Π ΡΠΎΠ²Π° Π΅ Π½Π΅ΡΠΎ, Π½Π° ΠΊΠΎΠ΅ΡΠΎ Π΅ Π΄ΠΎΡΡΠ° Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ Π΄Π° ΡΡΡΠΏΠ²Π°Ρ, Π·Π°ΡΠΎΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ swap, ΡΠΎΠ²Π° Π½Π΅ Π·Π°Π²ΡΡΡΠ²Π° Ρ Π½Π°Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΡΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π°Π½Π΅ Π½Π° OOM-killer. Π OOM-killer, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ ΠΏΡΠΈΡΡΠΈΠ³Π½Π°Π» Π½Π°Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π΅ ΡΠ±ΠΈΠ» PostgreSQL, Π΅ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ. ΠΡΠΈΡΠΊΠΈ ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ°Ρ Π·Π° ΡΠΎΠ²Π°, Ρ.Π΅. Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π».

ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°? ΠΠΌΠ°ΡΠ΅ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅. ΠΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΡΡΡΠ²ΡΡΡΡ Π·Π°ΡΠΈΠΊΠ»Ρ Π² swap ΠΈ Π·Π°Π±Π°Π²Ρ. ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ»ΡΡΠ²Π°.

ΠΠΎ-ΡΠ°Π½ΠΎ ΡΡΠ²Π΅ΡΠ²Π°Ρ ΠΌΠ΅ vm.swappiness Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈ Π½Π° Π½ΡΠ»Π°, Ρ.Π΅. Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ swap. ΠΠΎ-ΡΠ°Π½ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅, ΡΠ΅ 32 GB ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ ΡΠ° ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π½Π° swap Π΅ Π΄Π° ΠΈΠΌΠ° ΠΌΡΡΡΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ, Π°ΠΊΠΎ ΡΠ΅ ΡΠ»ΡΡΠΈ ΠΎΡΠΊΠ°Π·. Π ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ. Π ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠΎΡΠ»Π΅ Ρ ΡΠΎΠ²Π° Π½Π΅ΡΠΎ? Π’ΠΎΠ²Π° Π²Π΅ΡΠ΅ Π΅ Π·Π°Π΄Π°ΡΠ°, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΎ Π·Π°ΡΠΎ swap Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΠΎΡΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π² ΡΠ°ΠΊΡΠ² ΡΠ°Π·ΠΌΠ΅Ρ.
ΠΠΎ Π² ΠΏΠΎ-ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅, Ρ.Π΅. Π² ΡΡΠ΅ΡΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ. Π Π°ΠΊΠΎ Π½Π°ΡΡΡΠΎΠΉΡΠ΅ swap Π½Π° Π½ΡΠ»Π°, Ρ.Π΅. Π΄Π° Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅, ΡΠΎ ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΊΡΡΠ½ΠΎ, Π΄ΠΎΡΠΈ ΠΈ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, OOM-killer ΡΠ΅ Π΄ΠΎΠΉΠ΄Π΅, Π·Π° Π΄Π° ΡΠ±ΠΈΠ΅ Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ. ΠΠ°ΡΠΎΡΠΎ ΡΠΎΠΉ ΡΠ΅ ΡΠΌΡΡΠ°, ΡΠ΅ ΠΏΡΠΈ ΡΠ°ΠΊΠΎΠ²Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½ΠΈ Π΅ ΠΎΡΡΠ°Π½Π°Π»ΠΎ ΠΎΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΈ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΡΠ±ΠΈΠ΅ Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ, Π° Π½Π΅ΡΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ. Π’ΠΎΠ²Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΠ΅ Π΅ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ postmaster. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΠ±ΡΠ΅, Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°ΠΌΠ΅ Π±Π°Π·Π°ΡΠ°.
ΠΠ°ΡΠΎΠ²Π° ΡΠ΅Π³Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠΌΠ½Ρ, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ ΡΠ° ΠΎΠΊΠΎΠ»ΠΎ 6, Ρ.Π΅. Π² ΠΊΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ swap Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΎΡΡΠ°Π½Π°Π»Π° ΠΏΠ°ΠΌΠ΅Ρ. Π‘Π΅Π³Π° ΡΡΠ²Π΅ΡΠ²Π°ΠΌΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ vm.swappiness Π½Π° 1, Π·Π°ΡΠΎΡΠΎ ΡΠΎΠ²Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°, Π½ΠΎ Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠ°ΠΊΠΈΠ²Π° Π΅ΡΠ΅ΠΊΡΠΈ, ΠΊΠ°ΡΠΎ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π½Π°Π» OOM-killer, ΠΊΠΎΠΉΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΠ±ΠΈΠ²Π°.

ΠΠ°ΠΊΠ²ΠΎ ΡΠ»Π΅Π΄Π²Π°? ΠΠΎΠ³Π°ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ΅ Π½Π°ΡΠΎΡΠ²Π°ΠΌΠ΅ ΠΊΡΠΌ Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅, Π²ΡΠΈΡΠΊΠΈ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π΄Π° ΡΠ΅ Ρ Π²ΡΡΠ»ΡΡ Π² Π³Π»Π°Π²ΠΎΠ±Π»ΡΡΠΊΠ°Π½ΠΈΡΠ°. ΠΡΡΠΈΠ½Π°ΡΠ°, ΡΠ΅ Π΄ΠΈΡΠΊΡΡ Π΅ Π±Π°Π²Π΅Π½, Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π±ΡΡΠ·Π°, Π΅ ΠΏΠΎΠ·Π½Π°ΡΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΡ Π΄Π΅ΡΡΡΠ²ΠΎΡΠΎ. Π Π²ΡΠΈΡΠΊΠΈ Π·Π½Π°ΡΡ, ΡΠ΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ°.
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° PostgreSQL, ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΏΠΈΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° checkpoints, Π½Π΅ ΠΏΡΠΎΠΈΠ·Π»ΠΈΠ·Π° ΠΎΡ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π΄ΠΈΡΠΊΡΡ Π΅ Π±Π°Π²Π΅Π½. ΠΠΎ-ΡΠΊΠΎΡΠΎ, ΡΠΎΠΉ Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ ΡΠΎΠ²Π°, ΡΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π΄ΠΈΡΠΊΠ° Π½Π΅ Π΅ Π±Π°Π»Π°Π½ΡΠΈΡΠ°Π½Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π΅ΠΎΠ±ΡΠ΅ΠΌΠ΅Π½Π΅Π½ΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ°. PostgreSQL Π½Π΅ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π°, Ρ Π°ΡΠ΄ΡΠ΅ΡΡΡ Π½Π΅ Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½ ΠΈ ΠΈΠ·Π±ΠΎΡΡΡ Π½Π° Ρ Π°ΡΠ΄ΡΠ΅Ρ Π΅ Π³ΡΠ΅ΡΠ΅Π½. Π’Π°Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΡΠ°ΠΌΠΎ Π² ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΊΠ°ΠΊΡΠΎ ΡΡΡΠ±Π²Π°, Ρ.Π΅. ΠΈΠ»ΠΈ Π½ΡΠΌΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΡΡ ΡΠ° Π΄ΠΎΠ±ΡΠ΅ ΠΏΠΎΠ΄Π±ΡΠ°Π½ΠΈ.

ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΡΠΎΠ²Π° ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°? ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Ρ ΠΎΡΠ°ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ PostgreSQL, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ. Π©Π΅ ΠΏΠΎΡΡΠ½Ρ. ΠΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π°Ρ , PostgreSQL ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° checkpoints, Π·Π° Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ Π·Π°ΠΌΡΡΡΠ΅Π½ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π³ΠΎΠ»ΡΠΌ ΠΎΠ±Π΅ΠΌ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΡΠΎΠ³Π°Π²Π° checkpoint Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° ΠΎΠΊΠ°Π·Π²Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π²ΡΡΡ Ρ Π΄ΠΈΡΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π° ΡΠ΅Π·ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ ΡΡΠ΅Π· fsync. Π’Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π² ΡΠ΄ΡΠ΅Π½ΠΈΡ Π±ΡΡΠ΅Ρ ΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° fsync. Π Π°ΠΊΠΎ ΠΎΠ±Π΅ΠΌΡΡ Π±ΡΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌΠ΅ Π½Π΅ΠΏΡΠΈΡΡΠ΅Π½ Π΅ΡΠ΅ΠΊΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΡΠΎΠΊΠ° ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅.
Π’ΡΠΊ ΠΈΠΌΠ°ΠΌ Π΄Π²Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π‘Π΅Π³Π° ΡΠ΅ ΠΏΠΎΡΡΠ½Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ. Π’ΠΎΠ²Π° ΡΠ° Π΄Π²Π° Π³ΡΠ°ΡΠΈΠΊΠ° Ρ Π²ΡΠ΅ΠΌΠ΅Π²Π° ΠΊΠΎΡΡΠ΅Π»Π°ΡΠΈΡ. ΠΡΡΠ²ΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ β Π΅ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ°. Π’ΡΠΊ ΡΡ Π΄ΠΎΡΡΠΈΠ³Π° ΠΏΠΎΡΡΠΈ 90 % Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΊΠΎ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π²ΠΈ Π΅ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ Ρ RAID ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΠΈ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π΅ ΠΏΠΎΡΡΠΈ 90 %, ΡΠΎ ΡΠΎΠ²Π° ΡΠ° Π»ΠΎΡΠΈ Π½ΠΎΠ²ΠΈΠ½ΠΈ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠΊΠΎΡΠΎ ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ 100 ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎ-ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΡΠΏΡΠ°Ρ.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ² ΠΌΠ°ΡΠΈΠ², ΡΠΎΠ³Π°Π²Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π»ΠΈΡΠ½Π°. Π’Π°ΠΌ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½, ΠΊΠ°ΠΊΡΠ² ΡΠΈΠΏ ΠΌΠ°ΡΠΈΠ² Π΅ ΠΈ Ρ.Π½.
Π ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΡΡΠΊ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π³ΡΠ°ΡΠΈΠΊ ΠΎΡ Π²ΡΡΡΠ΅ΡΠ½Π° postgres Π²ΡΡ Π°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠΈΡΠ° checkpoint. Π Π² Π·Π΅Π»Π΅Π½ΠΎ ΡΡΠΊ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΡΡΠ΅ΡΠΈ, ΡΠ΅Π·ΠΈ ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ, Π² ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ° Π΄ΠΎΡΠ»ΠΈ Π² ΡΠΎΠ·ΠΈ checkpoint Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ. Π ΡΠΎΠ²Π° Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅. ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΡΡΠΊ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ ΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄ΠΎΡΡΠΈΠ³Π°ΠΌΠ΅ Π΄ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Ρ.Π΅. ΠΏΠΈΡΠ΅ΠΌ-ΠΏΠΈΡΠ΅ΠΌ, ΡΡΠΊ Π΅ ΡΠ²Π½ΠΎ, ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π΅ΡΠ°. Π Π½Π°ΡΠΈΡΡ checkpoint ΠΎΠΊΠ°Π·Π²Π° Π³ΠΎΠ»ΡΠΌΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ°. Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ-ΡΠΊΠΎΡΠΎ ΡΠ°ΠΊΠ°, Ρ.Π΅. ΡΡΠΊ Π΅ ΠΈΠΌΠ°Π»ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅. Π Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠ²Π°, Π·Π° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΡΠ°ΠΊΠ°. Π’.Π΅. ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π΅ ΠΌΠ°Π»ΠΊΠ°, Π½ΠΎ ΠΊΡΠ΄Π΅ΡΠΎ ΠΈ Π΄Π° Π΅, Π½ΠΈΠ΅ ΡΡΠΊ ΠΏΠΈΡΠ΅ΠΌ.
ΠΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π·Π° Π΄Π° ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π΅ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ? ΠΠΊΠΎ IO ΠΏΠΎΠ΄ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π΅ ΡΠΏΡΡΠ»ΠΎ, ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π΄ΠΎΡΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ²ΠΎΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ, ΡΠ΅ ΡΠ°ΠΊΠ°Ρ.

ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Linux, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π΄ΠΎΠ±ΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅, ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΡΠ΅ Π³ΠΎ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΠΈ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ ΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π»ΠΈ PostgreSQL, Π·Π° Π΄Π° ΠΏΡΠ°Π²ΠΈ ΡΠ΅Π·ΠΈ checkpoints ΠΏΠΎ-ΡΡΠ΄ΠΊΠΎ ΠΈ Π΄Π° Π³ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅Π΄ΠΈΠ½ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³, ΡΠΎ Π²Π»ΠΈΠ·Π°ΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° Debian. ΠΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π½Π° Linux ΡΠ°ΠΊΡΠ² Π΅ ΡΡΠ΅Π½Π°ΡΠΈΡΡ: vm.dirty_ratio=20, vm.dirty_background_ratio=10.
ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ²Π°? Π‘ ΡΠ΄ΡΠΎΡΠΎ 2.6 ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π΅Π΄ΠΈΠ½ Π΄Π΅ΠΌΠΎΠ½ Π·Π° flushing. Pgflush, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π° Ρ ΡΠΎΠ½ΠΎΠ²ΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ ΠΎΡ kernel buffer ΠΈ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΡΡ ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠ½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π²Π΅ΡΠ΅ Π½Π΅ ΠΏΠΎΠΌΠ°Π³Π°.
ΠΠΎΠ³Π° Π½Π°ΡΡΡΠΏΠ²Π° background? ΠΠΎΠ³Π°ΡΠΎ 10% ΠΎΡ ΡΡΠ»Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΠΎΡΡΠΎ Π΅ Π½Π° ΡΡΡΠ²Π΅ΡΠ°, Π΅ Π·Π°Π΅ΡΠ° Ρ ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ Π² kernel buffer, ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΠΈΠ·ΠΏΠΈΡΠ²Π°Π½Π΅ Π²ΡΠ² ΡΠΎΠ½Π°. ΠΠ°ΡΠΎ Π΅ ΡΠΎΠ½ΠΎΠ²ΠΎ? Π’Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΡΠΈ ΠΊΠΎΠ»ΠΊΠΎ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ Π΄Π° ΠΈΠ·Π³ΠΎΡΠ²ΠΈ. Π, Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΈΠ·Π³ΠΎΡΠ²Ρ N ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ. Π Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΠΎΠ²Π° Π½Π΅ΡΠΎ Π·Π°ΡΠΏΠΈΠ²Π°. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈΠ΄Π²Π° ΠΈ ΠΈΠ·Π³ΠΎΡΠ²Ρ ΠΎΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ.
Π’ΠΎΠ²Π° Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΡΠ° ΠΈΡΡΠΎΡΠΈΡ. Π’ΡΠΊ Π·Π°Π΄Π°ΡΠ°ΡΠ° Π΅ ΠΊΠ°ΡΠΎ Ρ Π±Π°ΡΠ΅ΠΉΠ½, ΠΊΠΎΠ³Π°ΡΠΎ Π² Π΅Π΄Π½Π° ΡΡΡΠ±Π° ΠΈΠ·ΡΠΈΡΠ°, Π² Π΄ΡΡΠ³Π° Π²Π»ΠΈΠ²Π°. ΠΠ°ΡΠΈΡΡ checkpoint Π΅ Π΄ΠΎΡΡΠ» ΠΈ Π°ΠΊΠΎ Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠ» ΠΌΠ°Π»ΠΊΠΎ ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅, ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΎΡ kernel buffer pgflush Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ°Π·ΡΠ΅Π΅.
ΠΠΊΠΎ ΡΠ΅Π·ΠΈ ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Ρ Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΏΠ²Π°Ρ, ΡΠ΅ ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ 20%, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠΈΠ·ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Π½Π° Π΄ΠΈΡΠΊΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π°Ρ ΡΠ°Π½Π²Π°Π½Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π»ΠΎΡΠΎ. Π©Π΅ Π·Π°Π³ΡΠ±ΠΈΠΌ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ°ΠΊΡΠ² Π΅ ΡΡΠΈΠΊΡΡ? Π’ΡΠΈΠΊΡΡ Π΅, ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡ ΡΠ²ΡΡ β 20 ΠΈ 10% ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π½Π° ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° β ΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π΅Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΈ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π½Π° Π²ΡΡΠΊΠ° Π΄ΠΈΡΠΊΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ°ΡΠ΅.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ 128 GB ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. 12,8 GB ΠΎΡΠΈΠ²Π°Ρ Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° Π΄ΠΈΡΠΊΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°. Π ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈ ΠΊΡΡ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΌ, ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈ ΠΌΠ°ΡΠΈΠ² Π΄Π° ΠΈΠΌΠ°ΡΠ΅, ΡΠΎΠΉ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ½Π΅ΡΠ΅ ΡΠΎΠ²Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ.

ΠΠ°ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠΈ ΡΠΏΡΡΠΌΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π²Π°ΡΠΈΡ RAID ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ. ΠΠΌΠ°ΠΌ Π²Π΅Π΄Π½Π°Π³Π° ΡΡΠΊ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° Ρ 512 MB ΠΊΡΡ.
ΠΡΠΈΡΠΊΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ vm.dirty_background Π² Π±Π°ΠΉΡΠΎΠ²Π΅. Π ΡΠ΅Π·ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡΠΌΠ΅Π½ΡΡ ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π²Π΅. ΠΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ratio, ΠΈΠ»ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π·ΠΈ Ρ Π±Π°ΠΉΡΠΎΠ²Π΅, ΡΠΎ ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ ΡΠ΅Π·ΠΈ Ρ Π±Π°ΠΉΡΠΎΠ²Π΅. ΠΠΎ ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠΌ ΠΊΠΎΠ½ΡΡΠ»ΡΠ°Π½Ρ DBA ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΡΠ΅ ΡΡΠ°ΡΠ°Ρ Π΄Π° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Ρ Π²ΡΠΈΡΠΊΠΎ ΠΈ Π·Π°ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π΅ Π² Π±Π°ΠΉΡΠΎΠ²Π΅, ΡΠΎ Π΅ Π² Π±Π°ΠΉΡΠΎΠ²Π΅. ΠΠΈΠΊΠΎΠΉ Π½Π΅ Π΅ Π΄Π°Π» Π½ΠΈΠΊΠ°ΠΊΠ²Π° Π³Π°ΡΠ°Π½ΡΠΈΡ, ΡΠ΅ Π΄ΠΎΠ±ΡΠΈΡΡ Π°Π΄ΠΌΠΈΠ½ Π½ΡΠΌΠ° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠ°ΠΌΠ΅Ρ Π½Π° ΡΡΡΠ²ΡΡΠ°, Π½ΡΠΌΠ° Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° ΠΈ ΡΠΈΡΡΠ°ΡΠ° Π΄Π° ΠΎΡΡΠ°Π½Π΅ ΡΡΡΠ°ΡΠ°. ΠΡΠΎΡΡΠΎ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠΈ, Π·Π° Π΄Π° ΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π²Π»Π΅Π·Π΅.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ, Π°ΠΊΠΎ Π½Π΅ ΡΡΠΏΠ΅Π΅ΡΠ΅ Π΄Π° Π²Π»Π΅Π·Π΅ΡΠ΅? ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ Π΅, ΡΠ΅ Π²ΡΡΠΊΠΎ flushing Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΏΠΈΡΠ°, Π½ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠΎΠ²Π° Π΅ ΡΠΈΠ³ΡΡΠ° Π½Π° ΡΠ΅ΡΡΠ°. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠΌΠ° Π³ΠΎΠ»ΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ β ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π°ΠΈΡΡΠΈΠ½Π° ΡΠ΅ ΡΠΏΠΈΡΠ° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ IO-ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ Π²Π°ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, Ρ.Π΅. ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠΈ SQL Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΡΠΎ ΡΠ°ΠΊΠ°. ΠΡΠ΅ΠΊΠΈ Π²Ρ ΠΎΠ΄-ΠΈΠ·Ρ ΠΎΠ΄ ΠΊΡΠΌ Π½Π΅Ρ Π΅ Π½Π° Π½Π°ΠΉ-Π½ΠΈΡΡΠΊ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, Π·Π°ΡΠΎΡΠΎ Π±Π°Π·Π°ΡΠ° Π΅ Π·Π°Π΅ΡΠ° Ρ checkpoint. Π ΠΊΠΎΠ³Π° ΡΠ΅ Ρ Π·Π°Π²ΡΡΡΠΈ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π΅ΡΡΠ½ΠΎ. Π ΠΊΠΎΠ³Π°ΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ Π½Π΅ ΡΠΎΠ½ΠΎΠ²ΠΎΡΠΎ, Π½Π΅ Π±Π΅ΠΊΠ³ΡΠ°ΡΠ½Π΄Π½ΠΎΡΠΎ flushing, ΡΠΎ ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΡΠ»ΠΎΡΠΎ Π²ΠΈ IO Π΅ Π·Π°Π΅ΡΠΎ ΠΎΡ Π½Π΅Π³ΠΎ. Π Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ, Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½ΠΈΡΠΎ.
Π’ΡΠΊ ΠΈΠΌΠ° ΠΎΡΠ΅ Π΄Π²Π° Π²Π°ΠΆΠ½ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π»ΠΈΠ·Π°Ρ ΠΈΠ·Π²ΡΠ½ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ²ΠΏΠ°Π΄Π°Ρ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π² postgresql.conf, Ρ.Π΅. Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π·Π° checkpoints. Π Π²Π°ΡΠ°ΡΠ° Π΄ΠΈΡΠΊΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½Π°. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΊΠ΅Ρ Π½Π° RAID, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π±Π°ΡΠ΅ΡΠΈΡ. Π₯ΠΎΡΠ°ΡΠ° ΠΊΡΠΏΡΠ²Π°Ρ RAID Ρ Π΄ΠΎΠ±ΡΡ ΠΊΠ΅Ρ Π±Π΅Π· Π±Π°ΡΠ΅ΡΠΈΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ SSD Π² RAID, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° ΡΡΡΠ²ΡΡΠ½ΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΊΠΎΠ½Π΄Π΅Π½Π·Π°ΡΠΎΡΠΈ. Π’ΡΠΊ Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΡΠ΅ΠΊΠ»ΠΈΡΡ. ΠΠ° ΡΠΎΠ·ΠΈ Π»ΠΈΠ½ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΌΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ° Π² PostgreSQL. ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ΅ΠΊΠ»ΠΈΡΡΠΎΠ²Π΅ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ.

ΠΠ°ΠΊΠ²ΠΎ Π΄ΡΡΠ³ΠΎ Π±ΠΈ ΠΌΠΎΠ³Π»ΠΎ Π΄Π° ΡΡΠ»ΠΎΠΆΠ½ΠΈ ΠΆΠΈΠ²ΠΎΡΠ°? ΠΠΌΠ° Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°. Π’Π΅ ΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ Π½ΠΎΠ²ΠΈ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ»ΠΎΠΆΠ½ΡΡ ΠΆΠΈΠ²ΠΎΡΠ° Π½Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ, Π°ΠΊΠΎ Π±ΡΠ΄Π°Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ.

ΠΠΌΠ° Π΄Π²Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ Π½ΠΎΠ²ΠΈ Π½Π΅ΡΠ°. Π’Π΅ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ Π° Π² ΡΡΠ΅ΡΠΈΡΠ΅ ΡΠ΄ΡΠ°. Π’ΠΎΠ²Π° Π΅ sched_migration_cost Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈ sched_autogroup_enabled, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ.
Π ΠΊΠ°ΠΊ ΡΠ΅ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π°Ρ ΠΆΠΈΠ²ΠΎΡΠ°? ΠΠ°ΠΊΠ²ΠΎ Π΅ sched_migration_cost? Linux scheduler ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΈΠ³ΡΠΈΡΠ° ΠΏΡΠΎΡΠ΅Ρ ΠΎΡ Π΅Π΄Π½ΠΎ CPU Π½Π° Π΄ΡΡΠ³ΠΎ. Π Π·Π° PostgreSQL, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ, ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π΄ΡΡΠ³ΠΎ CPU Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π΅ΡΡΠ½Π° Π·Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°. ΠΡ Π³Π»Π΅Π΄Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ openoffice ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π΅ Π΄ΠΎΠ±ΡΠ΅, Π½ΠΎ Π·Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ β ΡΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΡΠΎ. ΠΡΠΎ Π·Π°ΡΠΎ ΡΠ°Π·ΡΠΌΠ½Π°ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠ΅Π½Π° Π½Π° Π³ΠΎΠ»ΡΠΌΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ½Π΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Ρ ΠΈΠ»ΡΠ΄ΠΈ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΠΎΠ²Π° Π·Π° scheduler? Π©Π΅ ΡΡΠΈΡΠ°, ΡΠ΅ ΠΏΡΠ΅Π· ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½. Π’.Π΅. Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π΄ΡΠ»Π³Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ Π΄ΡΠ»Π³ΠΎ, scheduler ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ ΡΠΎΠ²Π°. Π©Π΅ ΡΡΠΈΡΠ°, ΡΠ΅ Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΠΈΠ·ΡΠ΅ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠΌΠ°ΡΡ, Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΌΠΈΠ³ΡΠΈΡΠ° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΡΠ΄Π΅. ΠΠΊΠΎ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π½Π΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ, ΡΠΎΠΉ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠΈΠ³ΡΠΈΡΠ°Π½, Π° ΡΠ΅ Π·Π°Π²ΡΡΡΠΈ Π½Π° ΡΠΎΠ²Π° CPU, ΠΊΠΎΠ΅ΡΠΎ ΠΌΡ Π΅ Π±ΠΈΠ»ΠΎ ΠΎΡΡΠ΅Π΄Π΅Π½ΠΎ. Π ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ Π΅ ΠΎΡΠ»ΠΈΡΠ΅Π½.
ΠΡΠΎΡΠΈΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ β ΡΠΎΠ²Π° Π΅ autogroup. ΠΠΌΠ° Π΄ΠΎΠ±ΡΠ° ΠΈΠ΄Π΅Ρ Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ°Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ β Π΄Π° ΡΠ΅ Π³ΡΡΠΏΠΈΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΏΠΎ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠ° ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ. Π’ΠΎΠ²Π° Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° PostgreSQL Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ prefork, ΠΊΠΎΡΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ° ΠΎΡ Π΅Π΄ΠΈΠ½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΠΌΠ°ΡΠ΅ lock writer, checkpoint ΠΈ Π²ΡΠΈΡΠΊΠΈΡΠ΅ Π²ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΡΠ΅ ΡΠ΅ Π³ΡΡΠΏΠΈΡΠ°Ρ Π½Π° Π΅Π΄ΠΈΠ½ scheduler, Π½Π° Π΅Π΄ΠΈΠ½ CPU. Π’Π΅ ΡΠ΅ ΡΠ°ΠΊΠ°Ρ Π΄ΡΡΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈ, Π·Π° Π΄Π° Π½Π΅ ΡΠΈ ΠΏΡΠ΅ΡΠ°Ρ ΠΈ Π΄Π° Π·Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° ΠΏΠΎ-Π΄ΡΠ»Π³ΠΎ. Π’ΠΎΠ²Π° Π΅ ΠΈΡΡΠΎΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ Π΅ Π½ΡΠΆΠ½Π° ΠΏΡΠΈ ΡΠ°ΠΊΠ°Π²Π° Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΎΡΡ ΠΈ Π·Π°ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈ.

ΠΠΎΡΡ ΠΊΠΎΠ»Π΅Π³Π° ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠ΅ΡΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Ρ ΠΏΡΠΎΡΡ pgbench, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°ΡΠ΅ ΠΏΠΎΡΡΠ΄ΡΠΊΠ° Π½Π° migration_cost ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ autogroup. Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° Π½Π° Π»ΠΎΡΠΎΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ Π΅ ΠΏΠΎΡΡΠΈ 10 %.ΠΠΌΠ° ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π΅ Π² ΠΈΠΌΠ΅ΠΉΠ» ΡΠΏΠΈΡΡΠΊΠ° Π½Π° PostgreSQL, ΠΊΡΠ΄Π΅ΡΠΎ Ρ ΠΎΡΠ°ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅. Π²Π»ΠΈΡΠ»ΠΈ Π½Π° 50 %.Π’Π°ΠΊΠΈΠ²Π° ΠΈΡΡΠΎΡΠΈΠΈ ΠΈΠΌΠ° Π΄ΠΎΡΡΠ°.

Π Π½Π°ΠΊΡΠ°Ρ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΏΠ΅ΡΡΠ΅Π½Π΅ Π½Π° Π΅Π½Π΅ΡΠ³ΠΈΡ. ΠΠΎΠ±ΡΠ΅ Π΅, ΡΠ΅ ΡΠ΅Π³Π° Linux ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° Π»Π°ΠΏΡΠΎΠΏ. Π ΡΠΎΠΉ ΡΠΆ ΡΠ΅ ΠΏΠ΅ΡΡΠΈ Π±Π°ΡΠ΅ΡΠΈΡΡΠ°. ΠΠΎ ΠΈΠ·Π²Π΅Π΄Π½ΡΠΆ ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ ΡΠ°ΠΊΠΎΠ²Π° Π½Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈ Π½Π° ΡΡΡΠ²ΡΡ.
ΠΠΎ-Π²ΠΎ Π΄Π°, Π°ΠΊΠΎ Π½Π°Π΅ΠΌΠ°ΡΠ΅ ΡΡΡΠ²ΡΡΠΈ ΠΎΡ Π½ΡΠΊΠΎΠΉ Ρ ΠΎΡΡΠΈΠ½Π³, ΡΠΎ βΠ΄ΠΎΠ±ΡΠΎΠΆΠ΅Π»Π°ΡΠ΅Π»ΠΈΡΠ΅β Ρ ΠΎΡΡΠ΅ΡΠΈ Π½Π΅ ΡΠ΅ Π³ΡΠΈΠΆΠ°Ρ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π²ΠΈ. ΠΠΈΠ΅ ΡΠΌΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΊΠ°, ΡΠ΅ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Π΄Π° ΡΠ΅ ΡΡΠΈΠ»ΠΈΠ·ΠΈΡΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΠ°ΡΠΎΠ²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΠΊΠ»ΡΡΠ°Ρ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΠ΅ΡΡΠ΅Π½Π΅ Π½Π° Π΅Π½Π΅ΡΠ³ΠΈΡ Π·Π° Π»Π°ΠΏΡΠΎΠΏΠΈ.
ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π° ΡΡΡΠ²ΡΡ Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ ΡΠ°ΠΊΠΎΠ²Π° Π½Π΅ΡΠΎ, ΡΠΎ Π²Π°ΡΠΈΡΡ ΠΈΠ·Π±ΠΎΡ Π΅ acpi_cpufreq + performance. ΠΠΎΡΠΈ Ρ ondemand ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
Intel_pstate β Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π΄ΡΠ°ΠΉΠ²Π΅Ρ. Π ΡΠ΅Π³Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΊΡΠΌ Π½Π΅Π³ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΠΏΠΎ-Π½ΠΎΠ² ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅Ρ.
Π, ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, governor ΡΠ°ΠΌΠΎ performance. Ondemand, powersave ΠΈ Π²ΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ β Π½Π΅ Π΅ Π·Π° Π²Π°Ρ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ explain analyze Π² PostgreSQL ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΡΡΠ΄ΡΠΊΠ°, Π°ΠΊΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ powersave, Π·Π°ΡΠΎΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ CPU-ΡΠΎ Π²ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ΅Π΄ΡΠ»ΠΈΡΠ°Π½ΠΎ ΠΏΠΎ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌ Π½Π°ΡΠΈΠ½.
Π’Π΅Π·ΠΈ Π½Π΅ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ β Π΄Π°Π»ΠΈ Π½Π΅ ΡΠ° Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° Π³ΠΎΠ»ΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.

Π Π² ΠΊΡΠ°Ρ Π½Π° ΠΊΡΠ°ΠΈΡΠ°ΡΠ° ΠΈΡΠΊΠ°ΠΌ Π΄Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΎΡ Π½Π°ΡΠ°ΡΠ° DBA ΠΊΠΎΠΌΠ°Π½Π΄Π° PosgreSQL-Consulting, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΠ°ΠΊΡ ΠΠΎΠ³ΡΠΊ ΠΈ ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠ΅ΡΠΎΠ²ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ΠΊΠΈ Π΄Π΅Π½ Π½Π°ΡΡΡΠΏΠ²Π°Ρ ΠΎΠΏΠΈΡ Π² ΡΠ°Π·ΠΈ ΡΡΠ΅ΡΠ°. ΠΠ° Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π΄ΠΎΠ±ΡΠ΅. Π’ΡΠΊ Π΅ ΠΊΠ°ΡΠΎ Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π·Π° Π°Π²ΠΈΠ°ΡΠΈΠΎΠ½Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ. ΠΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Ρ ΠΊΡΡΠ². ΠΡΡΠΊΠ° ΠΎΡ ΡΠ΅Π·ΠΈ Π³Π°ΠΉΠΊΠΈ Π΅ ΠΎΡΠΊΡΠΈΡΠ° Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Π»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ°. Π‘ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΠ²ΠΈΠ΅ Π³ΠΈ ΡΠΏΠΎΠ΄Π΅Π»ΡΠΌ Ρ Π²Π°Ρ.
ΠΠΎΠΏΡΠΎΡΠΈ:
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ! ΠΠΊΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΈΡΠΊΠ° Π΄Π° ΡΠΏΠ΅ΡΡΠΈ ΠΈ Π΄Π° Ρ ΠΎΡΡΠ²Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Π΅Π΄ΠΈΠ½ ΡΡΡΠ²ΡΡ ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΡΠ»Π΅Π΄Π²Π° ΠΌΠΎΠ΄Π½Π°ΡΠ° ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·Π½ΠΈΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ PostgreSQL ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠ°ΠΊΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΡΠ°? Sysctl Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π²Π»ΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ. ΠΠ΅ ΡΡΠΌ ΡΡΠ» sysctl Π΄Π° ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΌΠ° ΡΠ°ΠΌΠΎ cgroup ΠΈ ΡΠ°ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ Π΄ΠΎ ΡΠ°ΡΡ ΠΎΡ ΡΠ΅ΡΡΡΡΠΈΡΠ΅. ΠΠ°ΠΊ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΠΌ Ρ ΡΠΎΠ²Π°? ΠΠ»ΠΈ, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ PostgreSQL Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ²ΡΡ ΠΈ Π³ΠΎ Π½Π°ΡΡΡΠΎΠΉΡΠ΅.
ΠΡΠ³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΡΠΌΠ΅ Π½Π° Π²Π°ΡΠΈΡ Π²ΡΠΏΡΠΎΡ ΠΏΠΎ ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½Π°. ΠΠΊΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π½Π΅ Π·Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ²ΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈ ΠΈ Ρ.Π½., ΠΏΡΠΎΡΡΠΎ ΡΠ΅ ΠΎΡΠΏΡΡΠ½Π΅ΡΠ΅, Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅ ΠΈ Π±Π΅Π· ΡΠ΅Π·ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, ΠΏΡΠΈ ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅Π·ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ²ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ Π΄ΠΎ ΡΡΡ .
Π ΠΊΠ°ΠΊΡΠ² Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ? ΠΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈΠΌΠ°Ρ Π΄ΠΎΡΡΠ° Π½Π΅ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½Π° Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΠΎΡΠΈ Π΄Π° Π΅ Π΄ΠΎΠ±ΡΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅, Π΅Π΄Π½Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΏΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅-ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅, ΠΊΠΎΡΡΠΎ Π½Π΅ Π²Π»ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° ΡΡΠ΅Π΄Π½Π°ΡΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ, ΡΠ»ΡΡΠ²Π°ΡΠ° ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° checkpoint ΠΈΠ»ΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡ Π² WAL, ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ ΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠΈ Π±Π°Π·Π°ΡΠ°. Π Π²ΠΈΠ΅ ΡΠ΅ Π³ΠΎ ΡΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°ΡΠ΅ Ρ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ NGINX Π½Π° ΡΡΡΠΈΡ ΡΡΡΠ²ΡΡ, ΡΡΡΠΎ ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π’ΠΎΠΉ ΡΠ΅ ΡΠ΅ Π±ΠΎΡΠΈ Π·Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. Π Π½ΡΠΌΠ° Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΡΡΠΊ.
ΠΠΎ ΠΎΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π°, Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ Π²ΠΈ Π±ΡΠ΄Π°Ρ Π°ΠΊΡΡΠ°Π»Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ sysctl Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ dirty_ratio, Π·Π° Π΄Π° Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π±Π΅Π·ΡΠΌΠ½ΠΎ β ΡΠ°ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅. ΠΠΎ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½, Π²ΠΈΠ΅ ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π΄ΠΈΡΠΊΠ°. Π ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΡΡ Π΅ΠΌΠ°. Π’ΠΎΠ²Π° ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ . Π Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅.
Π Ρ NUMA ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. VmWare, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅ Ρ NUMA Ρ ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. Π ΡΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ β ΠΆΠ΅Π»Π΅Π·Π΅Π½ ΡΡΡΠ²ΡΡ ΠΈΠ»ΠΈ Π½Π΅.
ΠΠΌΠ°ΠΌ Π²ΡΠΏΡΠΎΡ, ΡΠ²ΡΡΠ·Π°Π½ Ρ Amazon AWS. Π’Π΅ ΠΈΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ ΠΈΠΌΠΈΠ΄ΠΆΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ ΡΡΡ ΡΠ΅ Π½Π°ΡΠΈΡΠ° Amazon RDS. ΠΠΌΠ° Π»ΠΈ ΡΠ°ΠΌ Π½ΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π° ΡΡΡ Π½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°?
Π’Π°ΠΌ ΠΈΠΌΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π½ΠΎ ΡΠΎΠ²Π° ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. Π’ΡΠΊ Π½Π°ΡΡΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π ΡΠ°ΠΌ ΠΈΠΌΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ Π½Π°ΠΊΡΠ΄Π΅ Π΄Π° ΠΎΡΠΈΠ΄Π΅ΠΌ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Ρ.Π΅. ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΠ΅ΡΡΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Amazon RDS ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΠ°Π΄Π°. ΠΠΌΠ° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΈΡΡΠΎΡΠΈΠΈ, ΠΊΠ°ΠΊ Ρ ΠΎΡΠ°ΡΠ° Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π΄Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°Ρ Ρ ΡΠΎΠ²Π°. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° Π΄ΠΎΡΠΈ Π΄ΠΎΡΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ. ΠΠΎ ΡΠΎΠ²Π° Π½ΡΠΌΠ° ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° ΠΠ‘. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎ-ΡΠΊΠΎΡΠΎ Ρ Π°ΠΊΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π»Π°ΠΊΠ°. Π’ΠΎΠ²Π° Π΅ Π΄ΡΡΠ³Π° ΡΠ΅ΠΌΠ°.
ΠΠ°ΡΠΎ Transparent huge pages Π½Π΅ Π΄Π°Π²Π°Ρ Π΅ΡΠ΅ΠΊΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Huge TLB?
ΠΠ΅ Π΄Π°Π²Π°Ρ. ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΈ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ½ΠΈ. ΠΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π΄Π°Π²Π°Ρ ΡΠ°ΠΊΡΠ² Π΅ΡΠ΅ΠΊΡ. ΠΠ°ΠΊΠ²Π° Π΅ ΠΈΡΡΠΎΡΠΈΡΡΠ° Ρ PostgreSQL? ΠΡΠΈ ΡΡΠ°ΡΡΠ° ΡΠΎΠΉ Π·Π°Π΄Π΅Π»Ρ Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΠ°Π»ΠΈ Transparent ΠΈΠ»ΠΈ Π½Π΅ transparent β ΡΡΠ²ΡΠ΅ΠΌ Π½Π΅ Π΅ Π²Π°ΠΆΠ½ΠΎ. Π€Π°ΠΊΡΡΡ, ΡΠ΅ ΡΠ΅ ΡΠ΅ Π·Π°Π΄Π΅Π»ΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ°, ΠΎΠ±ΡΡΠ½ΡΠ²Π° Π²ΡΠΈΡΠΊΠΎ. Π Π°ΠΊΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΡΡΠΊΡΡΡΠΈΡΠ° shared_memory ΡΠ΅Π³ΠΌΠ΅Π½Ρ, ΡΠΎΠ³Π°Π²Π° Transparent huge pages ΡΠ΅ Π±ΡΠ΄Π΅ Π°ΠΊΡΡΠ°Π»Π΅Π½. Π PostgreSQL ΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π΅ Π·Π°Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ΅Π½ Π±Π»ΠΎΠΊ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ° ΠΈ Π²ΡΠΈΡΠΊΠΎ, ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π½ΠΈΡΠΎ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π°. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½ΠΎ ΠΈΠΌΠ° ΡΠΈΡΠΊ ΠΎΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° shared_memory, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ΡΠΎ. PostgreSQL Π½Π΅ Π·Π½Π°Π΅ Π·Π° ΡΠΎΠ²Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
