ΠΡΠ΅Π΄Π»Π°Π³Π°ΠΌ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Ρ ΡΠ°Π·ΡΠΈΡΡΠΎΠ²ΠΊΠ°ΡΠ° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΎΡ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° 2016 Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ Π‘ΠΈΡΠ½ΠΈΠΊΠΎΠ² "PostgreSQL ΠΈ JDBC ΠΈΠ·ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ"


ΠΠΎΠ±ΡΡ Π΄Π΅Π½! ΠΠ· ΡΡΠΌ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ Π‘ΠΈΡΠ½ΠΈΠΊΠΎΠ². Π Π°Π±ΠΎΡΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° NetCracker ΠΎΡ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΡΠΈΡΠΊΠΎ, ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ Java, Π²ΡΠΈΡΠΊΠΎ, ΡΠ²ΡΡΠ·Π°Π½ΠΎ Ρ SQL β ΡΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±ΠΈΡΠ°ΠΌ.
Π Π΄Π½Π΅Ρ ΡΠ΅ Π²ΠΈ ΡΠ°Π·ΠΊΠ°ΠΆΠ° Π·Π° ΡΠΎΠ²Π°, Ρ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ PostgreSQL ΠΊΠ°ΡΠΎ ΡΡΡΠ²ΡΡ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ Java. ΠΠΎ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Ρ Π΄Π½Π΅Ρ, Π½Π΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½ΠΎ ΡΠ°ΠΌΠΎ Ρ Java. ΠΠ°ΠΊΡΠΎ ΠΏΠΎΠΊΠ°Π·Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ°, ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΈ Π² Π΄ΡΡΠ³ΠΈ Π΅Π·ΠΈΡΠΈ.

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

ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡ Π²ΡΠΏΡΠΎΡ. ΠΠ·Π²Π»ΠΈΡΠ°ΠΌΠ΅ Π΅Π΄Π½Π° ΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ° ΠΏΠΎ ΠΏΡΡΠ²ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ.

ΠΠ°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π½Π° ΡΡΡΠΈΡ Ρ ΠΎΡΡ. Π Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΎΡΠ½Π΅ΠΌΠ° 20 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ.

Π’Π΅Π·ΠΈ 20 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ 100 ΡΠ°ΠΊΠΈΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ, ΡΠΎΠ³Π°Π²Π° Π³ΡΠ±ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°ΡΠ°, Π·Π° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΏΡΠ΅Π· ΡΠ΅Π·ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Ρ.Π΅. Ρ Π°Π±ΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π½Π°ΠΏΡΠ°Π·Π½ΠΎ.
ΠΠ΅ ΠΎΠ±ΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΎΠ²Π° ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠΎΠ²Π°. ΠΠ°Π·Π°ΡΠ° Π½ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ.

ΠΡΡΠ²ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°. ΠΠ°ΠΊΠ²ΠΎ Π΅ Ρ ΡΠ±Π°Π²ΠΎΡΠΎ Π² Π½Π΅Ρ? Π’ΠΎΠ²Π°, ΡΠ΅ Ρ Π²Π·ΠΈΠΌΠ°ΠΌΠ΅ ΠΈ Ρ ΠΏΡΠ°ΡΠ°ΠΌΠ΅, ΠΈ Π½ΠΈΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅.

ΠΠ°Π·Π°ΡΠ° ΠΈΠΌΠ° ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π΅ ΠΏΠΎ-ΡΠΌΠ½Π°, Π½ΠΎ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠΈ. ΠΠΎΠΆΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Ρ.Π½.
Super extended query β ΡΠΎΠ²Π° Π΅ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠΊΡΠΈΠ²Π°ΠΌΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠΈΡ Π΄ΠΎΠΊΠ»Π°Π΄. ΠΠΎΠΆΠ΅ Π±ΠΈ ΠΈΡΠΊΠ°ΠΌΠ΅ Π½Π΅ΡΠΎ ΠΎΡ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΊΡΠ² ΡΠΏΠΈΡΡΠΊ Ρ ΠΆΠ΅Π»Π°Π½ΠΈΡ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½, Ρ.Π΅. ΡΠΎΠ²Π° Π΅ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π² Π½Π°ΠΉ-ΡΠΊΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠ°ΡΠΎΠ²Π° ΠΏΡΠΎΡΡΠΎ Π³ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ ΠΌΠ΅ ΠΈ ΡΠ΅ Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π° Π½Π°ΡΡΠΎΡΠ²Π°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Ρ ΠΎΡΠ°.

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

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

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

ΠΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°, ΡΠ΅ ΡΠΎΠ²Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ. ΠΠ°ΡΠΎ? ΠΠ°ΡΠΎΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ΅ΡΠΎΠ΄ "close". Π ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΊΠ°, ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΡΠΎΠ²Π° Π΅ ΠΊΠ°ΡΠΎ ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΏΡΡΠ°Ρ Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. ΠΠ°Π·Π°Ρ ΠΌΠ΅ "PARSE EXECUTE DEALLOCATE".
ΠΠ°ΡΠ΅ΠΌ ΡΠ΅Π·ΠΈ ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½ΠΈΡ ΠΈ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ? Π’Π΅ Π½Π° Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΡΠ° Π½ΡΠΆΠ½ΠΈ. ΠΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π² PreparedStatement ΡΠ°ΠΊΠ° ΠΈ ΡΡΠ°Π²Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π³ΠΈ Π·Π°ΡΠ²ΠΎΡΠΈΠΌ, ΡΠ΅ Π·Π°ΡΠ²Π°ΡΡΡ Π²ΡΠΈΡΠΊΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅.

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

ΠΠ°ΠΊ Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌ ΡΠΎΠ²Π°?

ΠΠ½ΠΎΠ³ΠΎ Π΅ ΠΏΡΠΎΡΡΠΎ β Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π·Π°ΡΠ²Π°ΡΡΠΌΠ΅ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅. ΠΠΈΡΠ΅ΠΌ ΡΠ°ΠΊΠ°: "prepare" "execute".


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

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

Π ΠΊΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°.
ΠΡΡΠ²ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ β Π²Π·ΠΈΠΌΠ°ΠΌΠ΅ ΠΈ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, ΡΠ΅ Π½Π΅ΠΊΠ° Π²ΡΠΈΡΠΊΠΎ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π² PgSQL. Π’Π°ΠΌ ΠΈΠΌΠ° ΠΊΠ΅Ρ. Π’ΠΎΠΉ Π²ΡΠΈΡΠΊΠΎ ΠΊΠ΅ΡΠΈΡΠ°. Π©Π΅ ΡΡΠ°Π½Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ. ΠΠΈΠ΅ ΡΠ°ΠΊΠ° Π³ΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅. ΠΠΌΠ°ΠΌΠ΅ 100500 Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠ΅ ΡΠ°Π±ΠΎΡΠΈ. ΠΠ΅ ΡΠΌΠ΅ ΡΡΠ³Π»Π°ΡΠ½ΠΈ Π΄Π° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° ΡΡΡΠ½ΠΎ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΈ. ΠΠ΅-Π½Π΅.
ΠΠΌΠ°ΠΌΠ΅ Π²ΡΠΎΡΠΈ Π²Π°ΡΠΈΠ°Π½Ρ β Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΈ ΡΠ°ΠΌΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ. ΠΡΠ²ΠΎΡΠΈΡ ΠΌΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ. Π Π°Π±ΠΎΡΠΈΠΌ, ΡΠ°Π±ΠΎΡΠΈΠΌ. ΠΠΊΠ°Π·Π° ΡΠ΅, ΡΠ΅ Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΠ»ΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ.

ΠΠΎΡΠ²ΠΈ ΡΠ΅ ΡΠΎΠ²Π° ΠΏΡΠ΅Π· Π°Π²Π³ΡΡΡ 2015 Π³ΠΎΠ΄ΠΈΠ½Π°. Π‘Π΅Π³Π° Π²Π΅ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎ-ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π° Π²Π΅ΡΡΠΈΡ. Π Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΡΠΏΠ΅Ρ. Π Π°Π±ΠΎΡΠΈ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π΄ΠΎΠ±ΡΠ΅, ΡΠ΅ Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎΡΠΈ ΡΠΏΡΡΡ ΠΌΠ΅ Π΄Π° ΠΌΠΈΡΠ»ΠΈΠΌ Π² ΠΏΠΎΡΠΎΠΊΠ° PgSQL, Ρ.Π΅. ΡΠΎΠ²Π° Π½ΠΈ Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ Π΄ΠΎ Π½ΡΠ»Π°.
Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, Server-prepared statements ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Ρ Π½Π° ΠΏΠ΅ΡΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π·Π° Π΄Π° Π½Π΅ Ρ Π°ΡΡΠΈΠΌ ΠΏΠ°ΠΌΠ΅Ρ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π·Π° Π²ΡΡΠΊΠΎ Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅.

ΠΠΎΠΆΠ΅ Π΄Π° ΠΏΠΈΡΠ°ΡΠ΅ β ΠΊΡΠ΄Π΅ ΡΠ° ΡΠΈΡΡΠΈΡΠ΅? ΠΠ°ΠΊΠ²ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅? Π ΡΡΠΊ Π½ΡΠΌΠ° Π΄Π° Π΄Π°ΠΌ ΡΠΈΡΡΠΈ, Π·Π°ΡΠΎΡΠΎ Π·Π° Π²ΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΡΠ΅ ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ.
ΠΠΌΠ°Ρ ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π·Π° OLTP-Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° Ρ Π°ΡΡΠ΅Ρ ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 20 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³. ΠΠΌΠ°ΡΠ΅ 0,5 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ 20 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³. ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π±Π΅ΡΠ΅ 10 ΠΠΈΠ ΡΠ΅ΠΊΡΡ ΠΈ 170 ΡΠ΅Π΄Π° ΠΏΠ»Π°Π½. Π’ΠΎΠ²Π° Π΅ OLTP Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅. Π’ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π° 1, 5, 10 ΡΠ΅Π΄Π°, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΏΠΎΠ²Π΅ΡΠ΅.
ΠΠΎ Π½Π° Π½Π°Ρ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ Π½ΠΈ ΡΠ΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Ρ Π°ΡΡΠΈΠΌ 20 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΈΠ΅ Π³ΠΎ ΡΠ²Π΅Π΄ΠΎΡ ΠΌΠ΅ Π΄ΠΎ 0. ΠΡΠΈΡΠΊΠΎ Π΅ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΎ.
ΠΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ ΠΎΡ ΡΡΠΊ? ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Java, Π²Π·Π΅ΠΌΠ°ΡΠ΅ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° ΠΈ ΡΠ΅ ΡΠ°Π΄Π²Π°ΡΠ΅.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠ°ΠΊΡΠ² Π΄ΡΡΠ³ Π΅Π·ΠΈΠΊ, ΠΏΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ β ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΠΈ Π²Π°Ρ ΡΠΎΠ²Π° ΡΡΡΠΎ Π²ΠΈ ΡΡΡΠ±Π²Π°? ΠΠ°ΡΠΎΡΠΎ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡ Π΅Π·ΠΈΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π΅ PL 8 ΠΈΠ»ΠΈ ΠΈΠΌΠ°ΡΠ΅ LibPQ, Π½Π΅ Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΠ΅ Ρ Π°ΡΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π½Π΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π° Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ ΠΈ Π΅ Π΄ΠΎΠ±ΡΠ΅ ΡΠΎΠ²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ. ΠΠ°ΠΊ? ΠΡΠΈΡΠΊΠΎ Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ.

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

ΠΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ. Π’Π°ΠΊΠΎΠ²Π° Π½Π΅ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°. ΠΡΠΊΠΎΠΉ ΡΠ²ΡΡΠ·Π²Π° Π½ΠΈΠ·ΠΎΠ²Π΅, ΠΏΠΎΠ»ΡΡΠ°Π²Π° SQL-Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅.
ΠΠ°ΡΠΎ Π΅ Π»ΠΎΡΠΎ? ΠΠΎΡΠΎ Π΅, Π·Π°ΡΠΎΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π½ΠΈΠ·.
Π Π·Π° ΡΠ°Π·ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΡΡΡΠΎΠΊΠ° ΡΡΡΠ±Π²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΠΈ hashCode. Π’ΠΎΠ²Π° Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ Π·Π°Π΄Π°ΡΠ° Π·Π° CPU β Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ Π΄ΡΠ»ΡΠ³ ΡΠ΅ΠΊΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π² Π΄ΠΎΡΠΈ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ hash Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡΠΎΡΡΠΎ. ΠΠ°ΡΠΎΠ²Π° ΠΈΠ·Π²ΠΎΠ΄ΡΡ Π΅ ΠΏΡΠΎΡΡ β Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΉΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ. Π‘ΡΡ ΡΠ°Π½ΡΠ²Π°ΠΉΡΠ΅ Π³ΠΈ Π² Π½ΡΠΊΠ°ΠΊΠ²Π° Π΅Π΄Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°. Π ΡΠ΅ ΡΠ°Π΄Π²Π°ΠΉΡΠ΅.

Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π’ΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ° Π²Π°ΠΆΠ½ΠΈ. ΠΠΌΠ° ORM, ΠΊΠΎΠΈΡΠΎ ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ Π½ΡΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΡΠ² Π΅ NULL, Π½Π΅ΠΊΠ° Π±ΡΠ΄Π΅ ΠΊΠ°ΠΊΡΠ² Π΄Π° Π΅. ΠΠΊΠΎ Π΅ Int, ΡΠΎ Π½ΠΈΠ΅ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ setInt. Π Π°ΠΊΠΎ Π΅ NULL, Π½Π΅ΠΊΠ° Π±ΡΠ΄Π΅ VARCHAR Π²ΠΈΠ½Π°Π³ΠΈ. Π ΠΊΠ°ΠΊΠ²Π° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ°, Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΠΊΠ°ΠΊΡΠ² ΡΠ°ΠΌ Π΅ NULL? ΠΠ°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌΠ° Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅. Π ΡΠ°ΠΊΡΠ² ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΠΉ ΠΏΡΠΊΠ°. ΠΠΊΠΎ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ ΠΊΠ°Π·Π²Π°ΡΠ΅, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΡΠΈΡΠ»ΠΎ, Π° Π²ΡΠΎΡΠΈ ΠΏΡΡ ΠΊΠ°Π·Π²Π°ΡΠ΅, ΡΠ΅ Π΅ VARCHAR, ΡΠΎ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Server-prepared statements. Π Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π½Π°ΡΠΈΡΡ statement ΠΎΡΠ½ΠΎΠ²ΠΎ.

ΠΠΊΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π΄Π° Π½Π΅ ΡΠ΅ ΠΎΠ±ΡΡΠΊΠ²Π°Ρ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ°. Π’ΡΡΠ±Π²Π° Π΄Π° Π²Π½ΠΈΠΌΠ°Π²Π°ΡΠ΅ Ρ NULL. Π’ΠΎΠ²Π° Π΅ ΡΠ΅ΡΡΠ° Π³ΡΠ΅ΡΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ PreparedStatements.

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

Π‘ΠΌΠΈΡΡΠ»ΡΡ Π΅, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, Π²ΡΡΠΊΠ° ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π°. Π Π΅Π΄Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΏΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° NULL ΠΈΠΌΠ° ΠΌΠΈΠ»ΠΈΠΎΠ½ ΡΠ΅Π΄Π°. Π Π²ΡΠ² Π²ΡΠΎΡΠ°ΡΠ° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ 20 ΡΠ΅Π΄Π°. ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ Π±Π΅Π· ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅.
ΠΠΊΠΎ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΡΡΡ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Ρ.Π΅. ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ Π·Π½Π°ΠΊ Β«?Β» ΠΈΠ»ΠΈ Β«$1Β» Π·Π° Π½Π°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅?

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

ΠΠΎΠΉ Π΅ Π²ΠΈΠ½ΠΎΠ²Π΅Π½? ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎ? ΠΠ°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΡΠ΄ΡΡΠΆΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. Π ΡΡ Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π° Π·Π° ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ. Π, ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, ΠΎΡ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΡΠ°ΡΡΠΊ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° Π½Π° ΠΎΠ±Ρ ΠΏΠ»Π°Π½, ΠΊΠΎΠΉΡΠΎ, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½. ΠΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΡΠΈΡ, Π° ΠΌΠΎΠΆΠ΅ ΠΈ Π΄Π° Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½. Π ΡΠ°ΠΌ ΠΈΠΌΠ° Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠ°Π³ΠΎΠ²Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠ°ΠΊΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Ρ ΡΠΎΠ²Π°? Π’ΡΠΊ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° Π½Π΅ΡΠΎ. ΠΠΌΠ° ΠΏΡΠΎΡΡΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. Π’ΠΎΠ²Π° Π΅ +0, OFFSET 0. Π‘ΠΈΠ³ΡΡΠ½ΠΎ Π·Π½Π°Π΅ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Β«+0Β» Π² Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄. Π©Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ.
Π ΠΈΠΌΠ° ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π²Π°ΡΠΈΠ°Π½Ρ β Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΡΡΠ±Π²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, Π½ΠΎ ΠΈ 6 ΠΏΡΡΠΈ Π΄Π° ΠΊΠ°ΠΆΠ΅ Β«explain analyzeΒ». ΠΠΊΠΎ ΠΊΠ°Π·Π²Π° ΡΠ°ΠΌΠΎ 5, Π½ΡΠΌΠ° Π΄Π° ΡΠ²ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°.
Π ΠΈΠΌΠ° ΠΈ ΡΡΠ΅ΡΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ β Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΠΉΠ» Π² pgsql-hackers. ΠΠ°ΠΏΠΈΡΠ°Ρ , Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΡΡΠ½ΠΎ β Π΄Π°Π»ΠΈ Π΅ Π±ΡΠ³ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ.

ΠΠΎΠΊΠ°ΡΠΎ ΠΌΠΈΡΠ»ΠΈΠΌ β Π±ΡΠ³ Π»ΠΈ Π΅ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΠΌ. ΠΠ·Π΅ΠΌΠ°ΠΌΠ΅ Π½Π°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Β«+0Β». ΠΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄. ΠΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈ Π΄ΠΎΡΠΈ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΌΠΈΡΠ»ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°. ΠΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΡΠΎΡΡΠΎ Π·Π°Π±ΡΠ°Π½ΠΈΡ ΠΌΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎ ΡΠ°Π·ΠΈ ΠΊΠΎΠ»ΠΎΠ½Π°. ΠΡΠΌΠ°ΠΌΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° Β«+0Β» ΠΈ Π²ΡΠΈΡΠΊΠΎ, Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡ, Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄.

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

ΠΠ΅ΠΊΠ° Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ ΡΡ Π΅ΠΌΠΈ. Π‘Ρ Π΅ΠΌΠ° Π Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π« ΠΈ ΡΡ Π΅ΠΌΠ° Π Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π«. ΠΠ°ΡΠ²ΠΊΠ°ΡΠ° β Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ? Π©Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π³ΡΠ΅ΡΠΊΠ°. ΠΡΠΈΡΠΊΠΎ ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ. ΠΡΠ°Π²ΠΈΠ»ΠΎΡΠΎ Π΅ ΡΠ°ΠΊΠΎΠ²Π° β Π±ΡΠ³ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΎ ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.

Π‘Π΅Π³Π° Π²ΡΠΏΡΠΎΡΡΡ Π΅: Β«ΠΠ°ΡΠΎ?Β». ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΠΈΠΌΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΠ΅, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡ Π΅ΠΌΠ°, ΡΠΎ ΠΈΠΌΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Β«search_pathΒ», ΠΊΠΎΡΡΠΎ ΡΠΊΠ°Π·Π²Π° ΠΊΡΠ΄Π΅ Π΄Π° ΡΡΡΡΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°. ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°.
Π ΡΠ΅ΠΌ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ? ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ server-prepared statements Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΠΈΡΠ°Ρ, ΡΠ΅ search_path ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½. Π’ΠΎΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π²Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎ Π·Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. Π Π½ΡΠΊΠΎΠΈ ΡΠ°ΡΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΠΏΠΎΠ΄Ρ Π²Π°Π½Π°Ρ Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.

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

ΠΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΠΌ? ΠΠΌΠ° ΠΏΡΠΎΡΡΠ° ΡΠ΅ΡΠ΅ΠΏΡΠ° β Π½Π΅ Π³ΠΎ ΠΏΡΠ°Π²Π΅ΡΠ΅. ΠΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΉΡΠ΅ search_path Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅, ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π½ΠΎΠ²ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
ΠΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, Ρ. Π΅. Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΠΌ, Π΄Π° ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, Π΄Π° Π΄ΠΎΠΏΠΈΡΠ΅ΠΌ. ΠΠΎΠΆΠ΅ Π±ΠΈ ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠ΅ Π² ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ Π½ΡΠΊΠΎΠΉ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ: βΠΠΈΠΆΡΠ΅, ΡΡΠΊ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΡΠ΅ Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π°. ΠΠΎΠΆΠ΅ Π±ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π½ΡΠ»ΠΈΡΠ°ΡΠ΅ statements, Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅?β. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π΄ΡΡΠΆΠΈ ΡΠ°ΠΉΠ½ΠΎ ΠΈ Π½Π΅ ΡΡΠΎΠ±ΡΠ°Π²Π° ΠΏΠΎ Π½ΠΈΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½, ΡΠ΅ Π½ΡΠΊΡΠ΄Π΅ Π²ΡΡΡΠ΅ Π² statements ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ.
Π ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°ΠΌ β ΡΠΎΠ²Π° Π½Π΅ Π΅ ΡΠΈΠΏΠΈΡΠ½ΠΎ Π·Π° Java. Π‘ΡΡΠΎΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π² PL/pgSQL Π΅Π΄ΠΈΠ½ Π½Π° Π΅Π΄ΠΈΠ½. ΠΠΎ ΡΠ°ΠΌ ΡΠ΅ ΡΠ΅ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅.

ΠΠ΅ΠΊΠ° ΠΏΡΠΎΠ±Π²Π°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ Π΄Π°Π½Π½ΠΈ. ΠΠ·Π±ΠΈΡΠ°ΠΌΠ΅, ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅. ΠΠΌΠ°ΠΌΠ΅ ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΠΌΠΈΠ»ΠΈΠΎΠ½ ΡΠ΅Π΄Π°. ΠΡΠ΅ΠΊΠΈ ΡΠ΅Π΄ Π΅ ΠΏΠΎ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ. ΠΠΊΠΎΠ»ΠΎ Π΅Π΄ΠΈΠ½ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ Π΄Π°Π½Π½ΠΈ. Π ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² Java ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° ΠΎΡ 128 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡΠ°.
ΠΠΈΠ΅, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½ΠΎ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°. Π’. Π΅. ΠΎΡΠ²Π°ΡΡΠΌΠ΅ resultSet ΠΈ ΡΠ΅ΡΠ΅ΠΌ ΠΎΡ ΡΠ°ΠΌ Π΄Π°Π½Π½ΠΈ Π½Π° ΡΠ°ΡΡΠΈ. Π©Π΅ ΡΡΠ°Π±ΠΎΡΠΈ Π»ΠΈ ΡΠΎΠ²Π°? ΠΡΠΌΠ° Π»ΠΈ Π΄Π° ΠΏΠ°Π΄Π½Π΅ ΠΏΠΎ ΠΏΠ°ΠΌΠ΅Ρ? Π©Π΅ ΡΠ΅ΡΠ΅ Π»ΠΈ ΠΏΠΎ ΠΌΠ°Π»ΠΊΠΎ? ΠΠ΅ΠΊΠ° Π²ΡΡΠ²Π°ΠΌΠ΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, Π²ΡΡΠ²Π°ΠΌΠ΅ Π² Postgres. ΠΠ΅ Π²ΡΡΠ²Π°ΠΌΠ΅. Π©Π΅ ΠΏΠ°Π΄Π½Π΅ΠΌ OutOfMemory? ΠΠΎΠ³ΠΎ Π΅ ΡΠΎΠ²ΡΡΠΊΠ°Π»ΠΎ OutOfMemory? Π ΠΊΠΎΠΉ ΡΡΠΏΡ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°? ΠΡΠΊΠΎΠΉ ΡΡΠΏΡ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈ.
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠΈΠ»ΠΈΠΎΠ½ ΡΠ΅Π΄Π°, Π½Π΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅. ΠΠ°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ OFFSET/LIMIT. ΠΠΎΠΉ Π΅ Π·Π° ΡΠ°ΠΊΡΠ² Π²Π°ΡΠΈΠ°Π½Ρ? Π ΠΊΠΎΠΉ Π΅ Π·Π° Π²Π°ΡΠΈΠ°Π½Ρ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ³ΡΠ°Π΅ Ρ autoCommit?
Π’ΡΠΊ, ΠΊΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Π½Π°ΠΉ-Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ. Π Π°ΠΊΠΎ ΠΈΠ·Π²Π΅Π΄Π½ΡΠΆ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅ autoCommit, ΡΠΎ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅. ΠΠ°ΡΠΎ ΡΠ°ΠΊΠ°? ΠΠ°ΡΠΊΠ°ΡΠ° Π½Π΅ Π·Π½Π°Π΅.

ΠΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΡΠ²ΡΡΠ·Π²Π°ΡΠΈ ΡΠ΅ Ρ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Postgres, ΠΈΠ·Π±ΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. PgJDBC Π² ΡΠΎΠ²Π° ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ·Π±ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅.
ΠΠΌΠ° Π²Π°ΡΠΈΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΠΌΠ° FetchSize, Ρ. Π΅. ΠΌΠΎΠΆΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ statement Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅, ΡΠ΅ ΡΡΠΊ, ΠΌΠΎΠ»Ρ, ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ 10, 50. ΠΠΎ ΡΠΎΠ²Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅ autoCommit. ΠΠ·ΠΊΠ»ΡΡΠΈΡ ΡΠ΅ autoCommit β Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ.
ΠΠΎ Ρ ΠΎΠ΄Π΅Π½Π΅ΡΠΎ ΠΏΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ Π²ΠΊΠ°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° setFetchSize Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠ°ΡΠΎΠ²Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°, ΠΊΠΎΡΡΠΎ Π΄Π° Π·Π°Π΄Π°Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΡΡΠ»ΠΎΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅.

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

Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΠΈΠΌ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΠΌΠ΅ ΠΈ Π² Π±Π°ΠΉΡΠΎΠ²Π΅, Π½ΠΎ ΡΠ΅ΡΠ΅ΠΏΡΠ°ΡΠ° Π΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ°: Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ defaultRowFetchSize Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΡΡΠΎ ΠΈ ΡΠ΅ ΡΠ°Π΄Π²Π°ΠΌΠ΅.

ΠΠ΅ΠΊΠ° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ Π²ΠΌΡΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠΌΡΠΊΠ²Π°Π½Π΅ΡΠΎ Π΅ ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎ, ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, INSERT, VALUES. Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅ ΠΈ 'INSERT SELECT'. Π ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° ΡΠΎΠ²Π° Π΅ Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ. ΠΡΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
ΠΠ½ΠΈΠ³ΠΈΡΠ΅ ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ Batch statement, ΠΊΠ½ΠΈΠ³ΠΈΡΠ΅ ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠΎΠ±ΠΈ. Π Π² Postgres ΠΈΠΌΠ° ΡΡΠ΄Π΅ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ β ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ COPY, Ρ.Π΅. Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ.

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

Π ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° TCP Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΊΠ°. ΠΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ Π΅ Π·Π°Π΅Ρ Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°, Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΎΠΏΠΈΡΠ²Π°ΠΉΠΊΠΈ ΡΠ΅ Π΄Π° Π½ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ, Π½Π΅ ΡΠ΅ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΠ°ΠΊΠ° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ°.

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

ΠΠΎΠ½ΡΠΊΠΎΠ³Π°, Π°ΠΊΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΡΠ΅Π΄, Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΡΠΊΠΎΡΠΈ Π΄Π΅ΡΠ΅ΡΠΎΠΊΡΠ°ΡΠ½ΠΎ. Π‘ΡΠ°Π²Π° ΡΠ°ΠΊΠ°. ΠΠ°ΡΠΎ? ΠΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π±Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π½ΡΠΊΡΠ΄Π΅. Π ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° '128' ΠΎΠ·Π½Π°ΡΠ°Π²Π°ΡΠ΅ β Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉ batching.

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

ΠΠ΅ΠΊΠ° ΠΈΠ·ΠΌΠ΅ΡΠΈΠΌ. ΠΠ΅ΡΠΈΠΈΠΌ InsertBatch ΠΏΡΠΎΡΡΠΎ. ΠΠ΅ΡΠΈΠΌ InsertBatch ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ, Ρ.Π΅. ΡΡΡΠΎΡΠΎ, Π½ΠΎ Ρ ΠΌΠ½ΠΎΠ³ΠΎ values. Π₯ΠΈΡΡΡ Ρ ΠΎΠ΄. ΠΠ΅ Π²ΡΠ΅ΠΊΠΈ Π³ΠΎ Π·Π½Π°Π΅, Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΡΠ°ΠΊΡΠ² ΠΏΡΠΎΡΡ Ρ ΠΎΠ΄, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ COPY.

ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ COPY.

ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π° ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈ. ΠΠ±ΡΠ²Π΅ΡΠ΅ ΡΠΈΠΏ User default, ΠΏΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΠΈΠ² ΠΈ INSERT Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°.
ΠΠΊΠΎ ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ Π»ΠΈΠ½ΠΊΠ°: pgjdbc/ubenchmsrk/InsertBatch.java, ΡΠΎ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π΅ Π½Π° GitHub. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΡΠ°ΠΌ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ. ΠΠ΅ Π΅ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.

Π‘ΡΠ°ΡΡΠΈΡΠ°Ρ ΠΌΠ΅. Π ΠΏΡΡΠ²ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅, Π΅, ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ batch - ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΡΠΈΡΠΊΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° batching ΡΠ° ΡΠ°Π²Π½ΠΈ Π½Π° Π½ΡΠ»Π°, Ρ.Π΅. Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π²Π½ΠΎ Π½Π° Π½ΡΠ»Π° Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.

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

Π’ΠΎΠ²Π° Π΅ ΠΊΠΎΠ³Π°ΡΠΎ Π²ΠΌΡΠΊΠ²Π°ΠΌΠ΅ Π½Π° ΠΏΠ°ΡΡΠ΅ΡΠ°. ΠΠΎΠ³Π°ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΌΠ΅ Π·Π° Π΅Π΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ VALUES, Π΄Π²Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ VALUES, ΡΡΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ VALUES ΠΈΠ»ΠΈ ΠΈΠ·ΡΠ΅Π΄ΠΈΡ ΠΌΠ΅ 10 Ρ Π·Π°ΠΏΠ΅ΡΠ°Ρ. Π’ΠΎΠ²Π° Π΅ ΡΠΎΡΠ½ΠΎ ΡΠ΅Π³Π° ΠΏΠΎ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π°. 1, 2, 4, 128. Π―ΡΠ½ΠΎ Π΅, ΡΠ΅ Batch Insert, ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π°ΡΠΈΡΡΠ²Π°Π½ Π² ΡΠΈΠ½ΡΠΎ, Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ±Π»Π΅ΠΊΡΠ°Π²Π° ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°. Π’.Π΅. ΠΊΠΎΠ³Π°ΡΠΎ Π²ΠΌΡΠΊΠ²Π°ΡΠ΅ ΠΏΠΎ Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΠΏΠΎ ΡΠ΅ΡΠΈΡΠΈ, ΡΡΠ°Π²Π° Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅, ΠΏΡΠΎΡΡΠΎ Π·Π°ΡΠΎΡΠΎ Π² VALUES ΡΠΌΠ΅ Π²ΠΊΠ°ΡΠ°Π»ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅. ΠΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ EXECUTE.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° COPY Π·Π° ΠΌΠ°Π»ΠΊΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π΅ ΠΊΡΠ°ΠΉΠ½ΠΎ Π½Π΅ΡΠ΅Π»Π΅ΡΡΠΎΠ±ΡΠ°Π·Π½ΠΎ. ΠΠ΅ Π½Π°ΡΠΈΡΡΠ²Π°Ρ Π΄ΠΎΡΠΈ ΠΏΡΡΠ²ΠΈΡΠ΅ Π΄Π²Π°. Π’Π΅ ΠΎΡΠΈΠ²Π°Ρ Π² Π½Π΅Π±Π΅ΡΠ°ΡΠ°, Ρ.Π΅. ΡΠ΅Π·ΠΈ Π·Π΅Π»Π΅Π½ΠΈ ΡΠΈΡΡΠΈ Π·Π° COPY.
COPY ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΎΠ±Π΅ΠΌΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π΅ ΠΏΠΎΠ½Π΅ Π½Π°Π΄ ΡΡΠΎ ΡΠ΅Π΄Π°. ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ Π·Π° ΠΎΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠΎΠ²Π° ΡΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈ. Π, ΡΠ΅ΡΡΠ½ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ ΡΡΠΌ Π·Π°Π΄ΡΠ»Π±Π°Π²Π°Π» Π² ΡΠ°Π·ΠΈ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ batch, COPY - Π½Π΅.
ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ? ΠΠ·ΠΌΠ΅ΡΠ²Π°ΠΌΠ΅. Π Π°Π·Π±ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ, ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ batch, ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.

ΠΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ ΠΎΡ Π΄Π½Π΅ΡΠ½Π°ΡΠ° Π»Π΅ΠΊΡΠΈΡ?
- PreparedStatement - ΡΠΎΠ²Π° Π΅ Π½Π°ΡΠ΅ΡΠΎ Π²ΡΠΈΡΠΊΠΎ. Π’ΠΎ Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. ΠΠ±Π°ΡΠ΅ Π΄Π°Π²Π° ΠΈ Π³ΠΎΠ»ΡΠΌΠ° Π±ΠΎΡΠΊΠ° Ρ ΠΊΠ°ΡΡΠ°Π½.
- Π ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ EXPLAIN ANALYZE 6 ΠΏΡΡΠΈ.
- Π ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ OFFSET 0 ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ +0, Π·Π° Π΄Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΠΌΠ΅ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
