Π’ΠΎ Π΅ΡΡΡ Π²ΡΠ΅ ΡΡΠ³ΡΠ±ΠΎ Π·Π° ΡΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΡΡΠΎ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΠ΅Ρ

ΠΠ΄ΠΈΠ½ ΡΠ½ΡΡΠ·ΠΈΠ°ΡΡ ΡΠ΅ΡΠΈΠ» Π²ΡΡΡΠ½ΠΈΡΡ Π½Π΅ ΠΊΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΡΡ, Π° ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ PostgreSQL.
Π Π΅ΠΌΡ ΡΡΠΎ ΡΠ΄Π°Π»ΠΎΡΡ: ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΏΠ°Π»Π° Ρ 7082 ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄ΠΎ 0,016 TPS, ΡΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² 42 000 ΡΠ°Π·.
ΠΡΠΈΡΠ΅ΠΌ ΠΎΠ½ Π½Π΅ ΡΡΠΎΠ³Π°Π» ΠΆΠ΅Π»Π΅Π·ΠΎ, Π½Π΅ ΡΠ΄Π°Π»ΡΠ» ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ Π½Π΅ Π²ΠΌΠ΅ΡΠΈΠ²Π°Π»ΡΡ Π² ΠΊΠΎΠ΄ β Π²ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· postgresql.conf.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ autovacuum
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ β ΠΏΠΎΡΡΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΡΡ: shared_buffers = 2MB. ΠΡΠΎ ΡΠ΅Π·ΠΊΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π±ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π΄ΠΈΡΠΊΡ.
ΠΠ°ΡΠ΅ΠΌ β Π·Π°ΡΡΠ°Π²ΠΈΡΡ Postgres Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ autovacuum ΠΈ analyze ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ. Π ΠΈΡΠΎΠ³Π΅ Π² Π»ΠΎΠ³ΠΈ Π±ΡΠ΄ΡΡ ΠΏΠ°Π΄Π°ΡΡ Π΄Π΅ΡΡΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠΎΡΡΠΈ Π±Π΅Π· ΠΏΠΎΠ»ΡΠ·Ρ, Π½ΠΎ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ I/O.
WAL, ΠΊΠ°ΠΊ Ρ ΠΡΡΠ½Π΄ΠΎΠ½Π° Π‘Π°Π½Π΄Π΅ΡΡΠΎΠ½Π°
ΠΠΎΡΠΎΠΌ Π°Π²ΡΠΎΡ ΡΡΠ»ΠΎΠΆΠ½ΠΈΠ» ΡΠΈΡΡΠ΅ΠΌΡ Π»ΠΎΠ³ΠΎΠ² WAL: Π½Π°ΡΡΡΠΎΠΈΠ» ΡΠ°ΡΡΡΠ΅ ΡΠ΅ΠΊΠΏΠΎΠΈΠ½ΡΡ (checkpoint_timeout = 30, max_wal_size = 32MB) ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΠ» Postgres ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±Π°ΠΉΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ (wal_sync_method = open_datasync, wal_level = logical).
π₯ Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°Π·Π²Π΅ΡΠ» ΠΌΠΈΡΡ ΠΎ ΡΠΈΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΡΠ΅Π½Π΄Π°Ρ ΠΈ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈtproger.ru
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΏΠ°Π»Π° Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΅ 1 TPS.

ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΈ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ I/O
ΠΠ΅Π· ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΌΠΈΡ
ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π°Π²ΡΠΎΡ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°Π» ΠΈΡ
Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ²: random_page_cost ΠΈ cpu_index_tuple_cost Π±ΡΠ»ΠΈ Π·Π°Π΄ΡΠ°Π½Ρ Π΄ΠΎ 1e300.
ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ, Postgres Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ Π½Π° io_method = worker Ρ io_workers = 1, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ I/O Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ.
Π€ΠΈΠ½Π°Π»
Π ΠΈΡΠΎΠ³Π΅ Postgres ΡΠΌΠΎΠ³ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ΅Π³ΠΎ 11 ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π·Π° 2 ΠΌΠΈΠ½ΡΡΡ ΡΠΎ 100 ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡΠΈΠΉ, Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ: ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Postgres Π·Π°ΡΠΈΡΠ΅Π½ ΠΎΡ Β«ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΌΠΎΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡΒ». ΠΠΎ Π΅ΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ Π·Π°Ρ ΠΎΡΠ΅ΡΡ β ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΅.

