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


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

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

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

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

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

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

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

Π’ΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ, Π΅ simple query ΠΈ extended query.
ΠΠ°ΠΊΠ²Π° Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄?
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΡ ΠΈ Π·Π°Π±ΡΠ°Π²ΡΡΠ΅. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΠΈ, Ρ.Π΅. Π·Π° Π½ΡΠΊΠΎΠΈ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π΅ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°.

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

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

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

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

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

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


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

ΠΠ°ΠΊ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ? ΠΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π·Π° ΡΠΎΠ²Π°?
Π ΡΠ΅Π°Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π²ΠΈΠ½Π°Π³ΠΈ Π·Π°ΡΠ²Π°ΡΡΡ statements. ΠΡΠ² Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΈΡΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π·Π°ΡΠ²Π°ΡΡΡ, ΠΈΠ½Π°ΡΠ΅ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ ΠΈΠ·ΡΠ΅ΡΠ΅.
Π 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. Π Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ΡΡΡΠ±Π²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½Π°ΡΠ΅ΡΠΎ Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅.

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

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

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

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

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

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

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

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

Π‘Π΅Π³Π° Π²ΡΠΏΡΠΎΡΡΡ Π΅: βΠΠ°ΡΠΎ?β. ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΊΠ°Π·Π²Π°, ΡΠ΅ Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡ Π΅ΠΌΠ°, ΡΠΎ ΠΈΠΌΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° β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 type, ΠΏΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΌΠ°ΡΠΈΠ² ΠΈ 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
