PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ Π²ΠΈ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ прСписа Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π° Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ² ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° 2016 Π³. β€žPostgreSQL ΠΈ JDBC ΠΈΠ·Ρ†Π΅ΠΆΠ΄Π°Ρ‚ Π²ΡΠΈΡ‡ΠΊΠΎβ€œ

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π”ΠΎΠ±ΡŠΡ€ Π΄Π΅Π½ Казвам сС Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ². Работя Π·Π° NetCracker ΠΎΡ‚ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. И Π°Π· съм Π½Π°ΠΉ-Π²Π΅Ρ‡Π΅ Π² производитСлността. Всичко, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с Java, всичко, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с SQL, Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±ΠΈΡ‡Π°ΠΌ.

И днСс Ρ‰Π΅ говоря Π·Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ срСщнахмС Π² компанията, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ PostgreSQL ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. И Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΡ€Π΅Π΄ΠΈΠΌΠ½ΠΎ с Java. Но Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° днСс, Π½Π΅ Π΅ само Π·Π° Java. ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π°, Ρ‚ΠΎΠ²Π° сС случва ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π©Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ:

  • относно Π²Π·Π΅ΠΌΠ°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ±ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ.
  • ΠžΡ‚Π½ΠΎΡΠ½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ.
  • А ΡΡŠΡ‰ΠΎ ΠΈ относно ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.
  • И Π·Π° ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΠΈΡ‚Π΅ Π³Ρ€Π΅Π±Π»Π°, ΠΊΠΎΠΈΡ‚ΠΎ са Π·Π°Ρ€ΠΎΠ²Π΅Π½ΠΈ Ρ‚Π°ΠΌ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

НСка Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с Π΅Π΄ΠΈΠ½ прост Π²ΡŠΠΏΡ€ΠΎΡ. Π˜Π·Π±ΠΈΡ€Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° въз основа Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ‡Π½ΠΈΡ ΠΊΠ»ΡŽΡ‡.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π‘Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ сС Π½Π°ΠΌΠΈΡ€Π° Π½Π° ΡΡŠΡ‰ΠΈΡ хост. И цялото Ρ‚ΠΎΠ²Π° Π·Π΅ΠΌΠ΅Π΄Π΅Π»ΠΈΠ΅ ΠΎΡ‚Π½Π΅ΠΌΠ° 20 милисСкунди.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π’Π΅Π·ΠΈ 20 милисСкунди са ΠΌΠ½ΠΎΠ³ΠΎ. Ако ΠΈΠΌΠ°Ρ‚Π΅ 100 Ρ‚Π°ΠΊΠΈΠ²Π° заявки, Ρ‚ΠΎΠ³Π°Π²Π° Π²ΠΈΠ΅ ΠΏΡ€Π΅ΠΊΠ°Ρ€Π²Π°Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π² сСкунда, ΠΏΡ€Π΅Π²ΡŠΡ€Ρ‚Π°ΠΉΠΊΠΈ Ρ‚Π΅Π·ΠΈ заявки, Ρ‚.Π΅. Π½ΠΈΠ΅ Π³ΡƒΠ±ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅.

НС ΠΎΠ±ΠΈΡ‡Π°ΠΌΠ΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π° ΠΈ Π²ΠΈΠΆΡ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π±Π°Π·Π°Ρ‚Π° Π·Π° Ρ‚ΠΎΠ²Π°. Π‘Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π½ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π·Π° изпълнСниС Π½Π° заявки.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΅ проста заявка. Какво ΠΌΡƒ Π΅ Ρ…ΡƒΠ±Π°Π²ΠΎΡ‚ΠΎ? Π€Π°ΠΊΡ‚ΡŠΡ‚, Ρ‡Π΅ Π³ΠΎ Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°ΠΌΠ΅, ΠΈ Π½ΠΈΡ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

https://github.com/pgjdbc/pgjdbc/pull/478

Π‘Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° заявка, която Π΅ ΠΏΠΎ-слоТна, Π½ΠΎ ΠΏΠΎ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΡ‚Π΅ заявка Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅, изпълнСниС, ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΠΈ Ρ‚.Π½.

Π‘ΡƒΠΏΠ΅Ρ€ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π°Ρ‚Π° заявка Π΅ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ няма Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² настоящия Π΄ΠΎΠΊΠ»Π°Π΄. НиС ΠΌΠΎΠΆΠ΅ Π±ΠΈ искамС Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠΌΠ° списък с ТСлания, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ ΠΏΠΎΠ΄ някаква Ρ„ΠΎΡ€ΠΌΠ°, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ искамС, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΅ нСвъзмоТно сСга ΠΈ ΠΏΡ€Π΅Π· слСдващата Π³ΠΎΠ΄ΠΈΠ½Π°. Π’Π°ΠΊΠ° Ρ‡Π΅ Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ Π³ΠΎ записахмС ΠΈ Ρ‰Π΅ обикалямС, Ρ€Π°Π·Ρ‚ΡŠΡ€ΡΠ²Π°ΠΉΠΊΠΈ Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ Ρ…ΠΎΡ€Π°.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

И Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ, Π΅ проста заявка ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° заявка.

Какво Π΅ спСциалното Π·Π° всСки ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?

Π•Π΄Π½Π° проста заявка Π΅ Π΄ΠΎΠ±Ρ€Π° Π·Π° Π΅Π΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ изпълнСниС. Π’Π΅Π΄Π½ΡŠΠΆ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ ΠΈ Π·Π°Π±Ρ€Π°Π²Π΅Π½ΠΎ. И ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° Π΄Π°Π½Π½ΠΈ, Ρ‚.Π΅. Π½Π΅ Π΅ подходящ Π·Π° някои високопроизводитСлни систСми.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π Π°Π·ΡˆΠΈΡ€Π΅Π½Π° заявка – позволява Π²ΠΈ Π΄Π° спСститС Π²Ρ€Π΅ΠΌΠ΅ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅. Π’ΠΎΠ²Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. Π’ΠΎΠ²Π° наистина, наистина Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°. Има Π½Π΅ само спСстявания ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅. Има спСстявания ΠΏΡ€ΠΈ прСнос Π½Π° Π΄Π°Π½Π½ΠΈ. ΠŸΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π”Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π°. Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π΅Π΄Π½ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. МоТС Π΄Π° Π΅ Java ΠΈ Ρ‚.Π½.

Π‘ΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ изявлСниС. Π˜Π·ΠΏΡŠΠ»Π½ΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°. БъздадСн Π±Π»ΠΈΠ·ΠΎ. КъдС Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° Ρ‚ΡƒΠΊ? Какъв Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚? Няма ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Π°ΠΊΠ° пишС във всички ΠΊΠ½ΠΈΠ³ΠΈ. Π’Π°ΠΊΠ° трябва Π΄Π° сС пишС. Ако искатС максимална производитСлност, ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠ°.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Но ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π—Π°Ρ‰ΠΎ? Π—Π°Ρ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ "близък". И ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°, ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ сС ΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π΅ ΠΊΠ°Ρ‚ΠΎ ΠΏΡƒΡˆΠ°Ρ‡ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. ΠšΠ°Π·Π°Ρ…ΠΌΠ΅ "PARSE EXECUTE DEALLOCATE".

Π—Π°Ρ‰ΠΎ цялото Ρ‚ΠΎΠ²Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ създаванС ΠΈ Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° изявлСния? Никой Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ тях. Но Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС случва Π² PreparedStatements Π΅, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³ΠΈ Π·Π°Ρ‚Π²ΠΎΡ€ΠΈΠΌ, Ρ‚Π΅ затварят всичко Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ искамС.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

ИскамС ΠΊΠ°Ρ‚ΠΎ Π·Π΄Ρ€Π°Π²ΠΈ Ρ…ΠΎΡ€Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Π±Π°Π·Π°Ρ‚Π°. Π’Π·Π΅Ρ…ΠΌΠ΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ…ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ изявлСниС вСднъТ, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ изпълнявамС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡŠΡ‚ΠΈ. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡŠΡ‚ΠΈ - Ρ‚ΠΎΠ²Π° Π΅ вСднъТ Π² цСлия ΠΆΠΈΠ²ΠΎΡ‚ Π½Π° прилоТСнията - Ρ‚Π΅ са Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ. И Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° ΠΈΠ·Ρ€Π°Π· Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ REST. Π’ΠΎΠ²Π° Π΅ Π½Π°ΡˆΠ°Ρ‚Π° Ρ†Π΅Π».

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Как ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° постигнСм Ρ‚ΠΎΠ²Π°?

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Много Π΅ просто - няма Π½ΡƒΠΆΠ΄Π° Π΄Π° затварятС ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈ. ПишСм Π³ΠΎ Ρ‚Π°ΠΊΠ°: β€žΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Ρ‚Π΅β€œ β€žΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅β€œ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Ако пуснСм Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚ΠΎΠ³Π°Π²Π° Π΅ ясно, Ρ‡Π΅ Π½Π΅Ρ‰ΠΎ Ρ‰Π΅ ΠΏΡ€Π΅Π»Π΅Π΅ някъдС. Ако Π½Π΅ Π΅ ясно, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅. НСка напишСм Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚ΠΎΠ·ΠΈ прост ΠΌΠ΅Ρ‚ΠΎΠ΄. Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ изявлСниС. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π³ΠΎ Π½Π° някаква вСрсия Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ установявамС, Ρ‡Π΅ сС срива доста Π±ΡŠΡ€Π·ΠΎ със Π·Π°Π³ΡƒΠ±Π° Π½Π° цялата ΠΏΠ°ΠΌΠ΅Ρ‚, която имашС.

Ясно Π΅, Ρ‡Π΅ Ρ‚Π°ΠΊΠΈΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠΈ лСсно сС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚. Π—Π° тях няма Π΄Π° говоря. Но Ρ‰Π΅ ΠΊΠ°ΠΆΠ°, Ρ‡Π΅ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ. ΠœΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Π΅ Π³Π»ΡƒΠΏΠ°Π², Π½ΠΎ всС ΠΏΠ°ΠΊ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Как Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ? Какво трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π·Π° Ρ‚ΠΎΠ²Π°?

Π’ дСйствитСлност прилоТСнията Π²ΠΈΠ½Π°Π³ΠΈ затварят ΠΈΠ·Ρ€Π°Π·ΠΈ. Π’ΡŠΠ² всички ΠΊΠ½ΠΈΠ³ΠΈ ΠΊΠ°Π·Π²Π°Ρ‚ Π΄Π° Π³ΠΎ Π·Π°Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Ρ‰Π΅ ΠΈΠ·Ρ‚Π΅Ρ‡Π΅.

А PostgreSQL Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊ Π΄Π° ΠΊΠ΅ΡˆΠΈΡ€Π° заявки. НСобходимо Π΅ всяка сСсия Π΄Π° създава Ρ‚ΠΎΠ·ΠΈ кСш Π·Π° сСбС си.

И Π½ΠΈΠ΅ ΡΡŠΡ‰ΠΎ Π½Π΅ искамС Π΄Π° Π³ΡƒΠ±ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

И ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΅ Π΄Π° Π³ΠΎ Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΈ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ Π½Π΅ΠΊΠ° ΡƒΠ²ΠΈΠ΅ΠΌ всичко Π² PgSQL. Π’Π°ΠΌ ΠΈΠΌΠ° кСш. ΠšΠ΅ΡˆΠΈΡ€Π° всичко. Π©Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ супСр. ВидяхмС Ρ‚ΠΎΠ²Π°. ИмамС 100500 заявки. НС Ρ€Π°Π±ΠΎΡ‚ΠΈ. НиС Π½Π΅ смС съгласни Π΄Π° ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ заявкитС Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ Ρ€ΡŠΡ‡Π½ΠΎ. НС Π½Π΅.

ИмамС ΠΈ Π²Ρ‚ΠΎΡ€ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ - Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π³ΠΎ ΠΈ Π³ΠΎ Π½Π°Ρ€Π΅ΠΆΠ΅Ρ‚Π΅ сами. ΠžΡ‚Π²Π°Ρ€ΡΠΌΠ΅ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ Π΄Π° Ρ€Π΅ΠΆΠ΅ΠΌ. ВидяхмС ΠΈ видяхмС. Оказа сС, Ρ‡Π΅ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

https://github.com/pgjdbc/pgjdbc/pull/319

Π’ΠΎΠ²Π° сС появи ΠΏΡ€Π΅Π· август 2015 Π³. Π‘Π΅Π³Π° ΠΈΠΌΠ° ΠΏΠΎ-ΠΌΠΎΠ΄Π΅Ρ€Π½Π° вСрсия. И всичко Π΅ супСр. Π Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π΄ΠΎΠ±Ρ€Π΅, Ρ‡Π΅ Π½Π΅ промСнямС Π½ΠΈΡ‰ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. И Π΄ΠΎΡ€ΠΈ спряхмС Π΄Π° мислим Π² посока PgSQL, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π° Π½ΠΈ бСшС напълно Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ всички Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄ΠΎ Π½ΡƒΠ»Π°.

Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈΡ‚Π΅ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈΠ·Ρ€Π°Π·ΠΈ сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚ ΠΏΡ€ΠΈ 5-Ρ‚ΠΎ изпълнСниС, Π·Π° Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΏΡ€ΠΈ всяка Π΅Π΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Π° заявка.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

МоТС Π΄Π° ΠΏΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ - къдС са числата? ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρˆ И Ρ‚ΡƒΠΊ няма Π΄Π° Π΄Π°Π²Π°ΠΌ числа, Π·Π°Ρ‰ΠΎΡ‚ΠΎ всяка заявка ΠΈΠΌΠ° своя собствСна.

ΠΠ°ΡˆΠΈΡ‚Π΅ заявки бяха Ρ‚Π°ΠΊΠΈΠ²Π°, Ρ‡Π΅ ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°Ρ…ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 20 милисСкунди Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° OLTP заявки. ИмашС 0,5 милисСкунди Π·Π° изпълнСниС, 20 милисСкунди Π·Π° Π°Π½Π°Π»ΠΈΠ·. Заявка – 10 KiB тСкст, 170 Ρ€Π΅Π΄Π° ΠΏΠ»Π°Π½. Π’ΠΎΠ²Π° Π΅ OLTP заявка. Изисква 1, 5, 10 Ρ€Π΅Π΄Π°, понякога ΠΏΠΎΠ²Π΅Ρ‡Π΅.

Но ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ искахмС Π΄Π° Π³ΡƒΠ±ΠΈΠΌ 20 милисСкунди. НамалихмС Π³ΠΎ Π΄ΠΎ 0. всичко Π΅ страхотно

Какво ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΎΡ‚ Ρ‚ΡƒΠΊ? Ако имаш Java, Ρ‚ΠΎΠ³Π°Π²Π° взимаш ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ‚Π° вСрсия Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ сС Ρ€Π°Π΄Π²Π°Ρˆ.

Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ Π΅Π·ΠΈΠΊ, Ρ‚ΠΎΠ³Π°Π²Π° помислСтС - ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°? Π—Π°Ρ‰ΠΎΡ‚ΠΎ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° крайния Π΅Π·ΠΈΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ PL 8 ΠΈΠ»ΠΈ ΠΈΠΌΠ°Ρ‚Π΅ LibPQ, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅ Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Π·Π° вас, Ρ‡Π΅ ΠΏΡ€Π΅ΠΊΠ°Ρ€Π²Π°Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ Π² изпълнСниС, Π° Π² Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ Ρ‚ΠΎΠ²Π° си струва Π΄Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ. ΠΊΠ°ΠΊ? Всичко Π΅ Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

ОсвСн Ρ‡Π΅ ΠΈΠΌΠ° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ някои особСности. И Π½ΠΈΠ΅ Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° тях Ρ‚ΠΎΡ‡Π½ΠΎ сСга. По-голямата част Ρ‰Π΅ бъдС Π·Π° индустриалната архСология, Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΡ…ΠΌΠ΅, Π½Π° ΠΊΠ°ΠΊΠ²ΠΎ сС Π½Π°Ρ‚ΡŠΠΊΠ½Π°Ρ…ΠΌΠ΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Ако заявката сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ. Π‘Π»ΡƒΡ‡Π²Π° сС. Някой Π·Π°Π»Π΅ΠΏΠ²Π° Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π·Π°Π΅Π΄Π½ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ SQL заявка.

Π—Π°Ρ‰ΠΎ Π΅ лош? Π›ΠΎΡˆΠΎ Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ всСки ΠΏΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½ΠΈΠ·.

И Ρ…Π΅Ρˆ-ΠΊΠΎΠ΄ΡŠΡ‚ Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π½ΠΈΠ· трябва Π΄Π° сС ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ. Π’ΠΎΠ²Π° наистина Π΅ Π·Π°Π΄Π°Ρ‡Π° Π½Π° процСсора - Π½Π°ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° дълъг тСкст Π½Π° заявка Π΄ΠΎΡ€ΠΈ Π² ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Ρ…Π΅Ρˆ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° лСсно. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΈΠ·Π²ΠΎΠ΄ΡŠΡ‚ Π΅ прост - Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ заявки. Π‘ΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΉΡ‚Π΅ Π³ΠΈ Π² Π΅Π΄Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°. И сС Ρ€Π°Π΄Π²Π°ΠΉ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π‘Π»Π΅Π΄Π²Π°Ρ‰ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ са Π²Π°ΠΆΠ½ΠΈ. Има ORM, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅ няма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ какъв Π²ΠΈΠ΄ NULL ΠΈΠΌΠ°, Π½Π΅ΠΊΠ° ΠΈΠΌΠ° някакъв Π²ΠΈΠ΄. Ако Int, Ρ‚ΠΎΠ³Π°Π²Π° ΠΊΠ°Π·Π²Π°ΠΌΠ΅ setInt. И Π°ΠΊΠΎ NULL, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅ΠΊΠ° Π²ΠΈΠ½Π°Π³ΠΈ Π΅ VARCHAR. И ΠΊΠ°ΠΊΠ²Π° Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΊΠ°ΠΊΠ²ΠΎ Π΅ NULL? Π‘Π°ΠΌΠ°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Ρ‰Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ всичко. И Ρ‚Π°Π·ΠΈ снимка Π½Π΅ става.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ сС интСрСсува. Ако стС ΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΡŠΡ‚, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ число, Π° вторият ΠΏΡŠΡ‚ стС ΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Π΅ Π΅ VARCHAR, Ρ‚ΠΎΠ³Π°Π²Π° Π΅ нСвъзмоТно Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ. И Π² Ρ‚ΠΎΠ·ΠΈ случай трябва Π΄Π° ΠΏΡ€Π΅ΡΡŠΠ·Π΄Π°Π΄Π΅ΠΌ Π½Π°ΡˆΠ΅Ρ‚ΠΎ изявлСниС.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Ако ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° заявка, ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ във Π²Π°ΡˆΠ°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π° Π½Π΅ са ΠΎΠ±ΡŠΡ€ΠΊΠ°Π½ΠΈ. Врябва Π΄Π° Π²Π½ΠΈΠΌΠ°Π²Π°Ρ‚Π΅ Π·Π° NULL. Π’ΠΎΠ²Π° Π΅ чСсто срСщана Π³Ρ€Π΅ΡˆΠΊΠ°, която ΠΈΠΌΠ°Ρ…ΠΌΠ΅, слСд ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ…ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ PreparedStatements

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π”ΠΎΠ±Ρ€Π΅, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. МоТС Π±ΠΈ са Π²Π·Π΅Π»ΠΈ ΡˆΠΎΡ„ΡŒΠΎΡ€Π°. И производитСлността ΠΏΠ°Π΄Π½Π°. НСщата сС Π²Π»ΠΎΡˆΠΈΡ…Π°.

ΠΊΠ°ΠΊ става Ρ‚ΠΎΠ²Π° Π’ΠΎΠ²Π° бъг Π»ΠΈ Π΅ ΠΈΠ»ΠΈ функция? Π—Π° съТалСниС Π½Π΅ бСшС възмоТно Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ Π΄Π°Π»ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈΠ»ΠΈ функция. Но ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ прост сцСнарий Π·Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Вя напълно Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎ Π½ΠΈ устрои Π² засада. И сС ΡΡŠΡΡ‚ΠΎΠΈ Π² Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±ΠΈ Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ ΠΎΡ‚ Π΅Π΄Π½Π° маса. Π˜ΠΌΠ°Ρ…ΠΌΠ΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΠΎΡ‰Π΅ Ρ‚Π°ΠΊΠΈΠ²Π° искания. ΠšΠ°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π΄Π²Π΅ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ маси, Π½ΠΎ ΠΈΠΌΠ° Ρ‚Π°ΠΊΡŠΠ² сцСнарий Π·Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅. Π’Π·Π΅ΠΌΠ΅Ρ‚Π΅ всяка вСрсия ΠΎΡ‚ Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ я ΠΈΠ³Ρ€Π°ΠΉΡ‚Π΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

https://gist.github.com/vlsi/df08cbef370b2e86a5c1

Π’ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π΅, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, всяка ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ индСксирана. Има Π΅Π΄ΠΈΠ½ ΠΌΠΈΠ»ΠΈΠΎΠ½ Ρ€Π΅Π΄Π° Π² Π΅Π΄Π½Π° NULL ΠΊΠΎΠ»ΠΎΠ½Π°. А Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° само 20 Ρ€Π΅Π΄Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ изпълнявамС Π±Π΅Π· ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, всичко Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΄ΠΎΠ±Ρ€Π΅.

Ако Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° изпълнявамС с ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Ρ‚.Π΅. изпълнявамС "?" ΠΈΠ»ΠΈ β€ž$1β€œ Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° заявка, ΠΊΠ°ΠΊΠ²ΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅?

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

https://gist.github.com/vlsi/df08cbef370b2e86a5c1

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ изпълнСниС Π΅ спорСд очакванията. Вторият Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·. НСщо бСшС ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΎ. Π’Ρ€Π΅Ρ‚ΠΈ, Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚ΠΈ, ΠΏΠ΅Ρ‚ΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‚Ρ€ΡΡΡŠΠΊ - ΠΈ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ. И Π½Π°ΠΉ-Π»ΠΎΡˆΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° сС случва Π½Π° ΡˆΠ΅ΡΡ‚Π°Ρ‚Π° СкзСкуция. Кой знаСшС, Ρ‡Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС направят Ρ‚ΠΎΡ‡Π½ΠΎ ΡˆΠ΅ΡΡ‚ Π΅ΠΊΠ·Π΅ΠΊΡƒΡ†ΠΈΠΈ, Π·Π° Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ какъв Π΅ дСйствитСлният ΠΏΠ»Π°Π½ Π·Π° изпълнСниС?

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Кой Π΅ Π²ΠΈΠ½ΠΎΠ²Π΅Π½ Какво стана? Π‘Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° оптимизация. И ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ Π·Π° общия случай. И ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Π² Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ тя ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° към Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π΅Π½ ΠΏΠ»Π°Π½, ΠΊΠΎΠΉΡ‚ΠΎ Π·Π° съТалСниС ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½. МоТС Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅ ΡΡŠΡ‰ΠΎΡ‚ΠΎ, Π° ΠΌΠΎΠΆΠ΅ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ. И ΠΈΠΌΠ° някакъв Π²ΠΈΠ΄ ΠΏΡ€Π°Π³ΠΎΠ²Π° стойност, която Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Какво ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎ Π²ΡŠΠΏΡ€ΠΎΡΠ°? Π’ΡƒΠΊ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΅ ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈ Π½Π΅Ρ‰ΠΎ. Има просто Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. Π’ΠΎΠ²Π° Π΅ +0, OFFSET 0. Бъс сигурност Π·Π½Π°Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π³ΠΎ Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ ΠΈ добавямС β€ž+0β€œ към заявката ΠΈ всичко Π΅ Π½Π°Ρ€Π΅Π΄. Π©Π΅ Ρ‚ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΠΎ-късно.

А ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ - Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΏΠΎ-Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»Π½ΠΎ ΠΏΠ»Π°Π½ΠΎΠ²Π΅Ρ‚Π΅. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ трябва Π½Π΅ само Π΄Π° напишС заявка, Π½ΠΎ ΠΈ Π΄Π° ΠΊΠ°ΠΆΠ΅ β€žΠΎΠ±ΡΡΠ½Π΅Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·β€œ 6 ΠΏΡŠΡ‚ΠΈ. Ако Π΅ 5, няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ.

Има ΠΈ Ρ‚Ρ€Π΅Ρ‚Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ - Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ писмо Π΄ΠΎ pgsql-hackers. Написах ΠΎΠ±Π°Ρ‡Π΅, всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ясно Π΄Π°Π»ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈΠ»ΠΈ функция.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

https://gist.github.com/vlsi/df08cbef370b2e86a5c1

Π”ΠΎΠΊΠ°Ρ‚ΠΎ мислим Π΄Π°Π»ΠΈ Ρ‚ΠΎΠ²Π° Π΅ бъг ΠΈΠ»ΠΈ функция, Π½Π΅ΠΊΠ° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌ. НСка Π²Π·Π΅ΠΌΠ΅ΠΌ Π½Π°ΡˆΠ°Ρ‚Π° заявка ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ "+0". Всичко Π΅ Π½Π°Ρ€Π΅Π΄. Π”Π²Π° символа ΠΈ Π΄ΠΎΡ€ΠΈ Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° мислитС ΠΊΠ°ΠΊ Π΅ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΅. Много просто. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°Π±Ρ€Π°Π½ΠΈΡ…ΠΌΠ΅ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° индСкс Π² Ρ‚Π°Π·ΠΈ ΠΊΠΎΠ»ΠΎΠ½Π°. НямамС индСкс Π² ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° β€ž+0β€œ ΠΈ Ρ‚ΠΎΠ²Π° Π΅, Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° индСкса, всичко Π΅ Π½Π°Ρ€Π΅Π΄.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π’ΠΎΠ²Π° Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π½Π° 6 обяснСния. Π‘Π΅Π³Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ‚Π΅ вСрсии трябва Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ 6 ΠΏΡŠΡ‚ΠΈ, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. Ако няматС ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°. И Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π° исканС сС проваля. Π’ΠΎΠ²Π° Π½Π΅ Π΅ слоТно Π½Π΅Ρ‰ΠΎ.

ИзглСТда, ΠΊΠΎΠ»ΠΊΠΎ Π΅ възмоТно? Π‘ΡƒΠ±ΠΎΠ»Π΅Ρ‡ΠΊΠ° Ρ‚ΡƒΠΊ, Π³Ρ€Π΅ΡˆΠΊΠ° Ρ‚Π°ΠΌ. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π±ΡŠΠ³ΡŠΡ‚ Π΅ навсякъдС.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡ‚Π±Π»ΠΈΠ·ΠΎ. НапримСр, ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ схСми. Π‘Ρ…Π΅ΠΌΠ° A с Ρ‚Π°Π±Π»ΠΈΡ†Π° S ΠΈ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° B с Ρ‚Π°Π±Π»ΠΈΡ†Π° S. Заявка – ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°. Какво Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π² Ρ‚ΠΎΠ·ΠΈ случай? Π©Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π³Ρ€Π΅ΡˆΠΊΠ°. Π©Π΅ ΠΈΠΌΠ°ΠΌΠ΅ всичко ΠΏΠΎ-Π³ΠΎΡ€Π΅. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π΅ - Π±ΡŠΠ³ΡŠΡ‚ Π΅ навсякъдС, Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ всичко ΠΏΠΎ-Π³ΠΎΡ€Π΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π‘Π΅Π³Π° Π²ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π΅: "Π—Π°Ρ‰ΠΎ?" ИзглСТда, Ρ‡Π΅ ΠΈΠΌΠ° докумСнтация, Ρ‡Π΅ Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ схСма, Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° "search_path", която Π½ΠΈ ΠΊΠ°Π·Π²Π° къдС Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. ИзглСТда, Ρ‡Π΅ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°.

Какъв Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚? ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ изявлСнията, ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°, Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·ΠΈΡ€Π°Ρ‚, Ρ‡Π΅ search_path ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ ΠΎΡ‚ някого. Π’Π°Π·ΠΈ стойност остава Ρ‚Π°ΠΊΠ° Π΄Π° сС ΠΊΠ°ΠΆΠ΅ постоянна Π·Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. И някои части ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π½ΠΎΠ²ΠΈ значСния.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π Π°Π·Π±ΠΈΡ€Π° сС, Ρ‚ΠΎΠ²Π° зависи ΠΎΡ‚ вСрсията, Π²ΡŠΡ€Ρ…Ρƒ която тСстватС. Зависи ΠΊΠΎΠ»ΠΊΠΎ сСриозно сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ Π²Π°ΡˆΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. А вСрсия 9.1 просто Ρ‰Π΅ изпълни старитС заявки. НовитС вСрсии ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ…Π²Π°Π½Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° ΠΈ Π΄Π° Π²ΠΈ ΠΊΠ°ΠΆΠ°Ρ‚, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠ°.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π—Π°Π΄Π°ΠΉΡ‚Π΅ search_path + ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ =
ΠΊΠ΅ΡˆΠΈΡ€Π°Π½ΠΈΡΡ‚ ΠΏΠ»Π°Π½ Π½Π΅ трябва Π΄Π° промСня Ρ‚ΠΈΠΏΠ° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚

Как Π΄Π° Π³ΠΎ Π»Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅? Има проста Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° - Π½Π΅ я ΠΏΡ€Π°Π²Π΅Ρ‚Π΅. Няма Π½ΡƒΠΆΠ΄Π° Π΄Π° промСнятС search_path, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ. Ако ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π½ΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ±ΡΡŠΠΆΠ΄Π°Ρ‚Π΅, Ρ‚.Π΅. отварятС, ΠΎΠ±ΡΡŠΠΆΠ΄Π°Ρ‚Π΅, добавятС. МоТС Π±ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡƒΠ±Π΅Π΄ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ някой ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ стойност, Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ трябва Π΄Π° ΠΊΠ°ΠΆΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π·Π° Ρ‚ΠΎΠ²Π°: β€žΠ’ΠΈΠΆΡ‚Π΅, Π²Π°ΡˆΠ°Ρ‚Π° стойност Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Ρ‚ΡƒΠΊ. МоТС Π±ΠΈ трябва Π΄Π° Π½ΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ изявлСнията ΠΈ Π΄Π° Π³ΠΈ ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ?β€œ Π‘Π΅Π³Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ сС Π΄ΡŠΡ€ΠΆΠΈ Ρ‚Π°ΠΉΠ½ΠΎ ΠΈ Π½Π΅ ΡΡŠΠΎΠ±Ρ‰Π°Π²Π° ΠΏΠΎ никакъв Π½Π°Ρ‡ΠΈΠ½, Ρ‡Π΅ изявлСнията са сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ някъдС Π²ΡŠΡ‚Ρ€Π΅.

И ΠΏΠ°ΠΊ Ρ‰Π΅ подчСртая - Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅Ρ‰ΠΎ Π½Π΅Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ Π·Π° Java. Π©Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π΄Π½ΠΎ към Π΅Π΄Π½ΠΎ Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ Π½Π΅Ρ‰ΠΎ Π² PL/pgSQL. Но Ρ‚Π°ΠΌ Ρ‰Π΅ сС Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

НСка ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ ΠΎΡ‰Π΅ ΠΌΠ°Π»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ. НиС ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΈ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅. ИмамС Ρ‚Π°Π±Π»ΠΈΡ†Π° с ΠΌΠΈΠ»ΠΈΠΎΠ½ Ρ€Π΅Π΄Π°. ВсСки Ρ€Π΅Π΄ Π΅ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚. ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½ΠΈ. И ΠΈΠΌΠ°ΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² Java ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° ΠΎΡ‚ 128 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π°.

НиС, ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° във всички ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΡ‚ΠΎΡ‡Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. ВоСст отварямС resultSet ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ ΠΌΠ°Π»ΠΊΠΎ Ρ‡Π΅Ρ‚Π΅ΠΌ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ Ρ‚Π°ΠΌ. Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π»ΠΈ Π©Π΅ ΠΏΠ°Π΄Π½Π΅ Π»ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°? Π©Π΅ ΠΏΠΎΡ‡Π΅Ρ‚Π΅Ρˆ Π»ΠΈ ΠΌΠ°Π»ΠΊΠΎ? НСка сС Π΄ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Π½Π΅ΠΊΠ° сС Π΄ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π½Π° Postgres. НиС Π½Π΅ Π³ΠΎ вярвамС. Π©Π΅ ΠΈΠ·ΠΏΠ°Π΄Π½Π΅ΠΌ Π»ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°? Кой Π΅ ΠΈΠ·ΠΏΠΈΡ‚Π°Π» OutOfMemory? Кой успя Π΄Π° Π³ΠΎ ΠΎΠΏΡ€Π°Π²ΠΈ слСд Ρ‚ΠΎΠ²Π°? Някой успя Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈ.

Ако ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠΈΠ»ΠΈΠΎΠ½ Ρ€Π΅Π΄ΠΎΠ²Π΅, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅. Изисква сС OFFSET/LIMIT. Кой Π΅ Π·Π° Ρ‚Π°Π·ΠΈ опция? И ΠΊΠΎΠΉ Π΅ Π·Π° ΠΈΠ³Ρ€Π° с autoCommit?

Π’ΡƒΠΊ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, Π½Π°ΠΉ-нСочакваният Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ сС ΠΎΠΊΠ°Π·Π²Π° ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½. И Π°ΠΊΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ autoCommit, Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅. Π—Π°Ρ‰ΠΎ Ρ‚Π°ΠΊΠ°? Науката Π½Π΅ Π·Π½Π°Π΅ Π·Π° Ρ‚ΠΎΠ²Π°.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Но ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ всички ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‰ΠΈ сС с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π½Π° Postgres, ΠΈΠ·Π²Π»ΠΈΡ‡Π°Ρ‚ всички Π΄Π°Π½Π½ΠΈ. PgJDBC Π½Π΅ Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ‚ΠΎΠ²Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅; Ρ‚ΠΎΠΉ ΠΈΠ·Π±ΠΈΡ€Π° всички Ρ€Π΅Π΄ΠΎΠ²Π΅.

Има Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Ρ‚Π΅ΠΌΠ°Ρ‚Π° FetchSize, Ρ‚.Π΅. ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ изявлСниС, Ρ‡Π΅ Ρ‚ΡƒΠΊ, моля, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ с 10, 50. Но Ρ‚ΠΎΠ²Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ autoCommit. Π˜Π·ΠΊΠ»ΡŽΡ‡ΠΈΡ… autoCommit - Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ.

Но ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΏΡ€Π΅Π· ΠΊΠΎΠ΄Π° ΠΈ настройванСто Π½Π° setFetchSize навсякъдС Π΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π—Π°Ρ‚ΠΎΠ²Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ настройка, която Ρ‰Π΅ ΠΊΠ°Π·Π²Π° стойността ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° цялата Π²Ρ€ΡŠΠ·ΠΊΠ°.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π’ΠΎΠ²Π° ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½. И ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅? Ако ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΌΠ°Π»ΠΊΠΈ суми, Π°ΠΊΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ 10 Ρ€Π΅Π΄Π° навСднъТ, Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΉΠ½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ Ρ‚Π°Π·ΠΈ стойност трябва Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° ΠΎΠΊΠΎΠ»ΠΎ сто.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π’ идСалния случай, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, всС ΠΎΡ‰Π΅ трябва Π΄Π° сС Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚Π΅ Π² Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, Π½ΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°Ρ‚Π° Π΅ слСдната: Π·Π°Π΄Π°ΠΉΡ‚Π΅ defaultRowFetchSize Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ сто ΠΈ Π±ΡŠΠ΄Π΅Ρ‚Π΅ щастливи.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

НСка Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ към вмъкванС Π½Π° Π΄Π°Π½Π½ΠΈ. ΠŸΠΎΡΡ‚Π°Π²ΡΠ½Π΅Ρ‚ΠΎ Π΅ ΠΏΠΎ-лСсно, ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ. НапримСр INSERT, VALUES. Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡŠΡ€ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ β€žINSERT SELECTβ€œ. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π΅ ΡΡŠΡ‰ΠΎΡ‚ΠΎ. Няма Ρ€Π°Π·Π»ΠΈΠΊΠ° Π² производитСлността.

ΠšΠ½ΠΈΠ³ΠΈΡ‚Π΅ ΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅ трябва Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠ½ΠΈΠ³ΠΈΡ‚Π΅ ΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΏΠΎ-слоТни ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ с няколко скоби. А Postgres ΠΈΠΌΠ° чудСсна функция - ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ COPY, Ρ‚.Π΅. Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Ако Π³ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅, ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ някои интСрСсни открития. Как искамС Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ²Π°? ИскамС Π΄Π° Π½Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΈ Π΄Π° Π½Π΅ изпълнявамС Π½Π΅Π½ΡƒΠΆΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° TCP Π½Π΅ Π½ΠΈ позволява Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°. Ако ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π΅ Π·Π°Π΅Ρ‚ с ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° заявка, Ρ‚ΠΎΠ³Π°Π²Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π½Π΅ Ρ‡Π΅Ρ‚Π΅ заявкитС Π² ΠΎΠΏΠΈΡ‚ΠΈ Π΄Π° Π½ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ. ΠšΡ€Π°ΠΉΠ½ΠΈΡΡ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π΅, Ρ‡Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Ρ‡Π°ΠΊΠ° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ заявката, Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Ρ‡Π°ΠΊΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π°.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

И слСдоватСлно ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° синхронизация. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ взаимодСйствия, Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Π·Π°Π³ΡƒΠ±Π° Π½Π° Π²Ρ€Π΅ΠΌΠ΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²Π˜ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π³ΠΈ добавямС, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-лошо става. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ΡŠΡ‚ Π΅ доста пСсимистичСн ΠΈ Π³ΠΈ добавя доста чСсто, ΠΎΠΊΠΎΠ»ΠΎ вСднъТ Π½Π° всСки 200 Ρ€Π΅Π΄Π°, Π² зависимост ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ Ρ‚.Π½.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

https://github.com/pgjdbc/pgjdbc/pull/380

Π‘Π»ΡƒΡ‡Π²Π° сС Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚Π΅ само Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ ΠΈ всичко Ρ‰Π΅ сС ускори 10 ΠΏΡŠΡ‚ΠΈ. Π‘Π»ΡƒΡ‡Π²Π° сС. Π—Π°Ρ‰ΠΎ? ΠšΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, константа ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ Π²Π΅Ρ‡Π΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° някъдС. А стойността β€ž128β€œ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°ΡˆΠ΅ Π΄Π° Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π‘ΡŠΠΎΡ€ΡŠΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠΈΠΊΡ€ΠΎΠ±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ Π½Π° Java

Π”ΠΎΠ±Ρ€Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ бСшС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° вСрсия. ΠžΡ‚ΠΊΡ€ΠΈΡ‚ ΠΏΡ€Π΅Π΄ΠΈ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° пусканСто. Всички значСния, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π°Π²Π°ΠΌ, са Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ вСрсии.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

НСка Π³ΠΎ ΠΏΡ€ΠΎΠ±Π²Π°ΠΌΠ΅. НиС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°ΠΌΠ΅ InsertBatch просто. НиС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π°ΠΌΠ΅ InsertBatch няколко ΠΏΡŠΡ‚ΠΈ, Ρ‚.Π΅. Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ Π½Π΅Ρ‰ΠΎ, Π½ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ стойности. Π‘Π»ΠΎΠΆΠ΅Π½ Ρ…ΠΎΠ΄. НС всСки ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠ²Π°, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° прост Ρ…ΠΎΠ΄, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-лСсСн ΠΎΡ‚ ΠšΠžΠŸΠ˜Π ΠΠΠ•.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠšΠžΠŸΠ˜Π ΠΠΠ•.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

И ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π²ΡŠΡ€Ρ…Ρƒ структури. Π”Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ потрСбитСлския Ρ‚ΠΈΠΏ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΠΏΠΎΠ΄Π°ΠΉΡ‚Π΅ масив ΠΈ INSERT Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°.

Ако ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°: pgjdbc/ubenchmsrk/InsertBatch.java, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π΅ Π² GitHub. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΈ заявки сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Ρ‚Π°ΠΌ. Няма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Ρ…ΠΌΠ΅. И ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π°Π·Π±Ρ€Π°Ρ…ΠΌΠ΅, бСшС, Ρ‡Π΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° Π΅ просто нСвъзмоТно. Всички ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½Π΅ са Π½ΡƒΠ»Π΅Π²ΠΈ, Ρ‚.Π΅. Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π΅ практичСски Π½ΡƒΠ»Π° Π² сравнСниС с Π΅Π΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ изпълнСниС.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π’ΠΌΡŠΠΊΠ²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ проста маса. Π’Ρ€ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ. И ΠΊΠ°ΠΊΠ²ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚ΡƒΠΊ? Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ ΠΈ Ρ‚Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° са ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ сравними. И COPY Π΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ вмъквамС ΠΏΠ°Ρ€Ρ‡Π΅Ρ‚Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ Π΅Π΄Π½Π° стойност VALUES, Π΄Π²Π΅ стойности VALUES, Ρ‚Ρ€ΠΈ стойности VALUES ΠΈΠ»ΠΈ посочихмС 10 ΠΎΡ‚ тях, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ със запСтая. Π’ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ Π΅ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ. 1, 2, 4, 128. Π’ΠΈΠΆΠ΄Π° сС, Ρ‡Π΅ ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π°Ρ‚Π°, която Π΅ нарисувана Π² синьо, Π³ΠΎ ΠΊΠ°Ρ€Π° Π΄Π° сС чувства ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅. ВоСст, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΌΡŠΠΊΠ²Π°Ρ‚Π΅ Π΅Π΄Π½ΠΎ ΠΏΠΎ Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΌΡŠΠΊΠ²Π°Ρ‚Π΅ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ навСднъТ, става Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ, просто Π·Π°Ρ‰ΠΎΡ‚ΠΎ смС Π½Π°Ρ‚ΡŠΠΏΠΊΠ°Π»ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π² VALUES. По-ΠΌΠ°Π»ΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ EXECUTE.

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° COPY Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΠΎΠ±Π΅ΠΌΠΈ Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π΅ΠΎΠ±Π΅Ρ‰Π°Π²Π°Ρ‰ΠΎ. Π”ΠΎΡ€ΠΈ Π½Π΅ съм рисувал Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π΅. Π’Π΅ ΠΎΡ‚ΠΈΠ²Π°Ρ‚ Π² рая, тоСст Ρ‚Π΅Π·ΠΈ Π·Π΅Π»Π΅Π½ΠΈ числа Π·Π° ΠšΠžΠŸΠ˜Π ΠΠΠ•.

COPY трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΠΎΠ½Π΅ сто Ρ€Π΅Π΄Π° Π΄Π°Π½Π½ΠΈ. Π Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° отварянС Π½Π° Ρ‚Π°Π·ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ° са Π³ΠΎΠ»Π΅ΠΌΠΈ. И, чСстно ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ съм ΠΊΠΎΠΏΠ°Π» Π² Ρ‚Π°Π·ΠΈ посока. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ… Batch, Π½ΠΎ Π½Π΅ ΠΈ COPY.

Какво Ρ‰Π΅ ΠΏΡ€Π°Π²ΠΈΠΌ слСд Ρ‚ΠΎΠ²Π°? ΠŸΡ€ΠΎΠ±Π²Π°Ρ…ΠΌΠ΅ Π³ΠΎ. Π Π°Π·Π±ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΈΠ»ΠΈ структури, ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ Π±Π°Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π° няколко значСния.

PostgreSQL ΠΈ JDBC изстискват цСлия сок. Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π‘ΠΈΡ‚Π½ΠΈΠΊΠΎΠ²

Какво трябва Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΎΡ‚ днСшния Π΄ΠΎΠΊΠ»Π°Π΄?

  • PreparedStatement Π΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ всичко. Π’ΠΎΠ²Π° Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° производитСлността. Π’ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ голям ΠΏΡ€ΠΎΠ²Π°Π» Π² ΠΌΠ΅Ρ…Π»Π΅ΠΌΠ°.
  • И трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ EXPLAIN ANALYSE 6 ΠΏΡŠΡ‚ΠΈ.
  • И Π½ΠΈΠ΅ трябва Π΄Π° Ρ€Π°Π·Ρ€Π΅Π΄ΠΈΠΌ OFFSET 0 ΠΈ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ ΠΊΠ°Ρ‚ΠΎ +0, Π·Π° Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΌΠ΅ оставащия ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΈ заявки.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€