ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π°ΡΠ°Π»Π° 2016 Π³ΠΎΠ΄Π° ΠΠ»Π°Π΄ΠΈΠΌΠΈΡΠ° Π‘ΠΈΡΠ½ΠΈΠΊΠΎΠ²Π° "PostgreSQL ΠΈ JDBC Π²ΡΠΆΠΈΠΌΠ°Π΅ΠΌ Π²ΡΠ΅ ΡΠΎΠΊΠΈ"
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ! ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ Π‘ΠΈΡΠ½ΠΈΠΊΠΎΠ². Π― ΡΠ°Π±ΠΎΡΠ°Ρ 10 Π»Π΅Ρ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ NetCracker. Π Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. ΠΡΠ΅, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Java, Π²ΡΠ΅, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ SQL β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ Π»ΡΠ±Π»Ρ.
Π ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠΎΠΌ, Ρ ΡΠ΅ΠΌ ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ PostgreSQL Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π±Π°Π· Π΄Π°Π½Π½ΡΡ . Π ΠΌΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ Java. ΠΠΎ ΡΠΎ, ΡΡΠΎ Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΡΠ²ΡΠ·Π°Π½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ Java. ΠΠ°ΠΊ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ .
ΠΡ Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ:
- ΠΏΡΠΎ Π²ΡΠ±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ .
- Π ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
- Π ΠΏΡΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ Π³ΡΠ°Π±Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΌ Π·Π°ΡΡΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ Π²ΠΎΠΏΡΠΎΡΠ°. ΠΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ.
ΠΠ°Π·Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ Ρ ΠΎΡΡΠ΅. Π Π²ΡΠ΅ ΡΡΠΎ Ρ ΠΎΠ·ΡΠΉΡΡΠ²ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 20 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄.
ΠΠΎΡ ΡΡΠΈ 20 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ°ΠΊΠΈΡ 100 Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΠΎ Π²Ρ ΡΡΠ°ΡΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΎΠΊΡΡΡΠΈΡΡ, Ρ. Π΅. Π² ΠΏΡΡΡΡΡ ΡΡΠ°ΡΠΈΠΌ Π²ΡΠ΅ΠΌΡ.
ΠΡ ΡΡΠΎ Π½Π΅ Π»ΡΠ±ΠΈΠΌ Π΄Π΅Π»Π°ΡΡ ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π±Π°Π·Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. ΠΠ°Π·Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π°ΠΌ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΠ΅ΡΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ. Π§Π΅ΠΌ ΠΎΠ½ Ρ ΠΎΡΠΎΡ? Π’Π΅ΠΌ, ΡΡΠΎ ΠΌΡ Π΅Π³ΠΎ Π±Π΅ΡΠ΅ΠΌ ΠΈ ΠΏΠΎΡΡΠ»Π°Π΅ΠΌ, ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅.
Π£ Π±Π°Π·Ρ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΠ»Π΅Π΅ Ρ ΠΈΡΡΡΠΉ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΡΠ»Π°ΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ°ΡΡΠΈΠ½Π³, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Ρ. Π΄.
Super extended query β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅. ΠΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ-ΡΠΎ Ρ ΠΎΡΠΈΠΌ ΠΎΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΎΡΠ΅Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ Π²ΠΈΠ΄Π΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½, Ρ. Π΅. ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ, Π½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΈ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ Π³ΠΎΠ΄. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΈ Π±ΡΠ΄Π΅ΠΌ Ρ ΠΎΠ΄ΠΈΡΡ, ΡΡΡΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π»ΡΠ΄Π΅ΠΉ.
Π ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠ°ΠΊ β ΡΡΠΎ simple query ΠΈ extended 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 Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ Π½Π° 5-ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ.
ΠΠΎΠΆΠ½ΠΎ ΡΠΏΡΠΎΡΠΈΡΡ β Π³Π΄Π΅ ΡΠΈΡΡΡ? Π§ΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅? Π ΡΡΡ Ρ ΡΠΈΡΡΡ Π½Π΅ Π΄Π°ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° ΠΎΠ½ΠΈ ΡΠ²ΠΎΠΈ.
Π£ Π½Π°Ρ Π·Π°ΠΏΡΠΎΡΡ Π±ΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠ΅, ΡΡΠΎ ΠΌΡ Π½Π° 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Β» Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°, ΡΠΎ ΡΡΠΎ ΠΌΡ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ?
ΠΠ΅ΡΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ. ΠΡΠΎΡΠΎΠ΅ β ΡΡΡΡ ΠΏΠΎΠ±ΡΡΡΡΠ΅Π΅. Π§ΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ. Π’ΡΠ΅ΡΡΠ΅-ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠ΅-ΠΏΡΡΠΎΠ΅. ΠΠΎΡΠΎΠΌ Ρ Π»ΠΎΠΏ β ΠΈ ΠΊΠ°ΠΊ-ΡΠΎ Π²ΠΎΡ ΡΠ°ΠΊ. Π ΡΠ°ΠΌΠΎΠ΅ ΠΏΠ»ΠΎΡ ΠΎΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ΅ΡΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. ΠΡΠΎ Π·Π½Π°Π», ΡΡΠΎ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΠΌ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΏΠ»Π°Π½ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ?
ΠΡΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ? Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ? ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. Π ΠΎΠ½Π° ΠΊΠ°ΠΊ Π±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄ generic ΡΠ»ΡΡΠ°ΠΉ. Π, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠ°Π·Π° ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π½Π° generic ΠΏΠ»Π°Π½, ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ, Π΄ΡΡΠ³ΠΈΠΌ. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ. Π ΡΠ°ΠΌ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
Π§ΡΠΎ Ρ ΡΡΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ? ΠΠ΄Π΅ΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ. ΠΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ. ΠΡΠΎ +0, OFFSET 0. ΠΠ°Π²Π΅ΡΠ½ΡΠΊΠ°, Π²Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π½Π°Π΅ΡΠ΅. ΠΡΠΎΡΡΠΎ Π±Π΅ΡΠ΅ΠΌ ΠΈ Π² Π·Π°ΠΏΡΠΎΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Β«+0Β» ΠΈ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ. ΠΠΎΠΊΠ°ΠΆΡ ΠΏΠΎΠΏΠΎΠ·ΠΆΠ΅.
Π Π΅ΡΡΡ Π΅ΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ β Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΏΠ»Π°Π½Ρ ΡΠΌΠΎΡΡΠ΅ΡΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ, Π½ΠΎ ΠΈ 6 ΡΠ°Π· ΡΠΊΠ°Π·Π°ΡΡ Β«explain analyzeΒ». ΠΡΠ»ΠΈ 5, ΡΠΎ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ.
Π Π΅ΡΡΡ Π΅ΡΠ΅ ΡΡΠ΅ΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π² pgsql-hackers ΠΏΠΈΡΡΠΌΠΎ. Π― Π½Π°ΠΏΠΈΡΠ°Π», ΠΏΡΠ°Π²Π΄Π°, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ β Π±Π°Π³ ΡΡΠΎ ΠΈΠ»ΠΈ ΡΠΈΡΠ°.
ΠΠΎΠΊΠ° ΠΌΡ Π΄ΡΠΌΠ°Π΅ΠΌ β Π±Π°Π³ ΡΡΠΎ ΠΈΠ»ΠΈ ΡΠΈΡΠ°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΈΠ½ΠΈΠΌ. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π½Π°Ρ Π·Π°ΠΏΡΠΎΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Β«+0Β». ΠΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ. ΠΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½Π°Π΄ΠΎ Π΄ΡΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°ΠΌ ΠΈ ΡΠ΅Π³ΠΎ ΡΠ°ΠΌ. ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ. ΠΡ ΠΏΡΠΎΡΡΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π·Π°ΠΏΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎ ΡΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅. ΠΠ΅Ρ Ρ Π½Π°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Β«+0Β» ΠΈ Π²ΡΠ΅, Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ, Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ.
ΠΠΎΡ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 6-ΠΈ explainβΠΎΠ². Π‘Π΅ΠΉΡΠ°Ρ Π² ΡΠ΅ΠΊΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ 6 ΡΠ°Π·, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠΎ ΠΌΡ Π²ΠΎΡ ΡΠ°ΠΊ Π΄Π΅Π»Π°Π΅ΠΌ. Π Ρ Π½Π°Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠ°Π΄Π°Π΅Ρ. ΠΠ΅Π»ΠΎ Π½Π΅ Ρ ΠΈΡΡΠΎΠ΅.
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ? Π’ΡΡ Π±Π°Π³, ΡΠ°ΠΌ Π±Π°Π³. Π Π΅Π°Π»ΡΠ½ΠΎ Π±Π°Π³ Π²Π΅Π·Π΄Π΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΡ Π΅ΠΌΡ. Π‘Ρ Π΅ΠΌΠ° Π Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ Π« ΠΈ ΡΡ Π΅ΠΌΠ° Π Ρ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ Π«. ΠΠ°ΠΏΡΠΎΡ β Π²ΡΠ±ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ. Π§ΡΠΎ Ρ Π½Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ? Π£ Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π±ΡΠ΄Π΅Ρ. Π£ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅. ΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ°ΠΊΠΎΠ΅ β Π±Π°Π³ Π²Π΅Π·Π΄Π΅, Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠΏΡΠΎΡ: Β«ΠΠΎΡΠ΅ΠΌΡ?Β». ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π΅ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΡΠΎ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡ Π΅ΠΌΠ°, ΡΠΎ Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Β«search_pathΒ», ΠΊΠΎΡΠΎΡΠ°Ρ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΅ΡΡΡ.
Π ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°? ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ server-prepared statements Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°ΡΡ, ΡΡΠΎ search_path ΠΌΠΎΠΆΠ΅Ρ ΠΊΡΠΎ-ΡΠΎ ΠΌΠ΅Π½ΡΡΡ. ΠΠΎΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π±Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π½Π΅ ΠΏΠΎΠ΄Ρ Π²Π°ΡΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΠ΅. ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ Ρ Π²Π°Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ. Π Π²Π΅ΡΡΠΈΡ 9.1 ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΡΠ°ΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. ΠΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ ΠΏΠΎΠ΄Π²ΠΎΡ ΠΈ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°.
cached plan must not change result type
ΠΠ°ΠΊ ΡΡΠΎ Π»Π΅ΡΠΈΡΡ? ΠΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΠ΅ΠΏΡ β Π½Π΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ°ΠΊ. ΠΠ΅ Π½Π°Π΄ΠΎ ΠΌΠ΅Π½ΡΡΡ 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 ΡΡΡΠΎΠΊ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΡΠΎΠΊ ΠΈ Ρ. Π΄.
ΠΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΡΠΎΡΠΊΡ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠ΄Π½Ρ Π²ΡΠ΅Π³ΠΎ ΠΈ Π² 10 ΡΠ°Π· Π²ΡΠ΅ ΡΡΠΊΠΎΡΠΈΡΡΡ. Π’Π°ΠΊΠΎΠ΅ Π±ΡΠ²Π°Π΅Ρ. ΠΠΎΡΠ΅ΠΌΡ? ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π³Π΄Π΅-ΡΠΎ ΡΠ°ΠΊΠ°Ρ ΡΠΆΠ΅ Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π°. Π Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«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 β Π½Π΅Ρ.
Π§ΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅? ΠΠΎΠΌΠ΅ΡΠΈΠ»ΠΈ. ΠΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΠΈΠ»ΠΈ Ρ ΠΈΡΡΠΎΡΠΌΠ½ΡΠΉ bacth, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠΈΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π§ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ½Π΅ΡΡΠΈ ΠΈΠ· ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅Π³ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π°?
- PreparedStatement β ΡΡΠΎ Π½Π°ΡΠ΅ Π²ΡΠ΅. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π΅Ρ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ½ΠΎ Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ Π±ΠΎΡΠΊΡ Π΄Π΅Π³ΡΡ.
- Π Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ EXPLAIN ANALYZE 6 ΡΠ°Π·.
- Π Π½Π°Π΄ΠΎ ΡΠ°Π·Π±Π°Π²Π»ΡΡΡ OFFSET 0, ΠΈ ΡΡΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠ° +0 Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΡΠ°Π²ΡΠΈΠΉΡΡ ΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΎΡ Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com