PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืื ื™ ืžืฆื™ืข ืœืš ืœืงืจื•ื ืืช ื”ืชืžืœื™ืœ ืฉืœ ื”ื“ื•"ื— ืฉืœ ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘ ื‘ืชื—ื™ืœืช 2016 "PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ"

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืื—ืจ ื”ืฆื”ืจื™ื™ื ื˜ื•ื‘ื™ื ืฉืžื™ ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘. ืื ื™ ืขื•ื‘ื“ ืขื‘ื•ืจ NetCracker ื›ื‘ืจ 10 ืฉื ื™ื. ื•ืื ื™ ื‘ืขื™ืงืจ ื‘ืขื ื™ื™ืŸ ืฉืœ ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช. ื›ืœ ืžื” ืฉืงืฉื•ืจ ืœื’'ืื•ื•ื”, ื›ืœ ืžื” ืฉืงืฉื•ืจ ืœ-SQL ื–ื” ืžื” ืฉืื ื™ ืื•ื”ื‘.

ื•ื”ื™ื•ื ืื“ื‘ืจ ืขืœ ืžื” ืฉื ืชืงืœื ื• ื‘ื—ื‘ืจื” ื›ืฉื”ืชื—ืœื ื• ืœื”ืฉืชืžืฉ ื‘-PostgreSQL ื›ืฉืจืช ืžืกื“ ื ืชื•ื ื™ื. ื•ืื ื—ื ื• ืขื•ื‘ื“ื™ื ื‘ืขื™ืงืจ ืขื 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 ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืชืจื’ื•ืœ. ื›ืš ื ืจืื™ืช ืืคืœื™ืงืฆื™ื” ื˜ื™ืคื•ืกื™ืช. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ื’'ืื•ื•ื” ื•ื›ื•'.

ื™ืฆืจื ื• ืืžื™ืจื”. ื‘ื™ืฆืข ืืช ื”ืคืงื•ื“ื”. ื ื•ืฆืจ ืงืจื•ื‘. ืื™ืคื” ื”ื˜ืขื•ืช ื›ืืŸ? ืžื” ื”ื‘ืขื™ื”? ืื™ืŸ ื‘ืขื™ื”. ื–ื” ืžื” ืฉื›ืชื•ื‘ ื‘ื›ืœ ื”ืกืคืจื™ื. ื›ืš ืฆืจื™ืš ืœื›ืชื•ื‘ ืืช ื–ื”. ืื ืืชื” ืจื•ืฆื” ื‘ื™ืฆื•ืขื™ื ืžืงืกื™ืžืœื™ื™ื, ื›ืชื•ื‘ ื›ืš.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืื‘ืœ ื”ืชืจื’ื•ืœ ื”ื•ื›ื™ื— ืฉื–ื” ืœื ืขื•ื‘ื“. ืœืžื”? ื›ื™ ื™ืฉ ืœื ื• ืฉื™ื˜ื” "ืงืจื•ื‘". ื•ื›ืฉืื ื—ื ื• ืขื•ืฉื™ื ืืช ื–ื”, ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื ืžืกืชื‘ืจ ืฉื–ื” ื›ืžื• ืžืขืฉืŸ ืฉืขื•ื‘ื“ ืขื ืžืกื“ ื ืชื•ื ื™ื. ืืžืจื ื• "ื ืชื— ื‘ืฆืข ื‘ื™ื˜ื•ืœ".

ืœืžื” ื›ืœ ื”ื™ืฆื™ืจื” ื•ื”ืคืจื™ืงื” ื”ื ื•ืกืคืช ื”ื–ื• ืฉืœ ื”ืฆื”ืจื•ืช? ืืฃ ืื—ื“ ืœื ืฆืจื™ืš ืื•ืชื. ืื‘ืœ ืžื” ืฉืงื•ืจื” ื‘ื“ืจืš ื›ืœืœ ื‘-PreparedStatements ื”ื•ื ืฉื›ืืฉืจ ืื ื—ื ื• ืกื•ื’ืจื™ื ืื•ืชื, ื”ื ืกื•ื’ืจื™ื ืืช ื›ืœ ืžื” ืฉื ืžืฆื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื. ื–ื” ืœื ืžื” ืฉืื ื—ื ื• ืจื•ืฆื™ื.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืื ื—ื ื• ืจื•ืฆื™ื, ื›ืžื• ืื ืฉื™ื ื‘ืจื™ืื™ื, ืœืขื‘ื•ื“ ืขื ื”ื‘ืกื™ืก. ืœืงื—ื ื• ื•ื”ื›ื ื• ืืช ื”ื”ืฆื”ืจื” ืฉืœื ื• ืคืขื ืื—ืช, ื•ืื– ืื ื—ื ื• ืžื‘ืฆืขื™ื ืื•ืชื” ืคืขืžื™ื ืจื‘ื•ืช. ืœืžืขืฉื”, ืคืขืžื™ื ืจื‘ื•ืช - ื–ื• ืคืขื ืื—ืช ื‘ื›ืœ ื—ื™ื™ ื”ืืคืœื™ืงืฆื™ื•ืช - ื”ืŸ ื ื•ืชื—ื•. ื•ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ืื•ืชื• ืžื–ื”ื” ืžืฉืคื˜ ื‘-RESTs ืฉื•ื ื™ื. ื–ื• ื”ืžื˜ืจื” ืฉืœื ื•.

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, ื›ืœื•ืžืจ ื–ื” ื”ื™ื” ืžืกืคื™ืง ื‘ืฉื‘ื™ืœื ื• ื›ื“ื™ ืœื”ืคื—ื™ืช ืืช ื›ืœ ืขืœื•ื™ื•ืช ื”ืชืงื•ืจื” ืœื›ืžืขื˜ ืืคืก.

ื‘ื”ืชืื ืœื›ืš, ื”ืฆื”ืจื•ืช ืžื•ื›ื ื•ืช ืขืœ ื™ื“ื™ ืฉืจืช ืžื•ืคืขืœื•ืช ื‘ื‘ื™ืฆื•ืข ื”ื—ืžื™ืฉื™ ืขืœ ืžื ืช ืœืžื ื•ืข ื‘ื–ื‘ื•ื– ื–ื™ื›ืจื•ืŸ ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ื›ืœ ื‘ืงืฉื” ื—ื“ ืคืขืžื™ืช.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืืคืฉืจ ืœืฉืื•ืœ - ืื™ืคื” ื”ืžืกืคืจื™ื? ืžื” ืืชื” ืžืงื‘ืœ? ื•ื›ืืŸ ืœื ืืชืŸ ืžืกืคืจื™ื, ื›ื™ ืœื›ืœ ื‘ืงืฉื” ื™ืฉ ืืช ืฉืœื”.

ื”ืฉืื™ืœืชื•ืช ืฉืœื ื• ื”ื™ื• ื›ืืœื” ืฉื”ืฉืงืขื ื• ื‘ืขืจืš 20 ืžื™ืœื™ืฉื ื™ื•ืช ื‘ื ื™ืชื•ื— ืฉืœ ืฉืื™ืœืชื•ืช OLTP. ื”ื™ื• 0,5 ืžื™ืœื™ืฉื ื™ื•ืช ืœื‘ื™ืฆื•ืข, 20 ืžื™ืœื™ืฉื ื™ื•ืช ืœื ื™ืชื•ื—. ื‘ืงืฉื” - 10 KiB ืฉืœ ื˜ืงืกื˜, 170 ืฉื•ืจื•ืช ืฉืœ ืชื•ื›ื ื™ืช. ื–ื•ื”ื™ ื‘ืงืฉืช OLTP. ื”ื•ื ืžื‘ืงืฉ 1, 5, 10 ืฉื•ืจื•ืช, ืœืคืขืžื™ื ื™ื•ืชืจ.

ืื‘ืœ ืœื ืจืฆื™ื ื• ืœื‘ื–ื‘ื– 20 ืžื™ืœื™ืฉื ื™ื•ืช ื‘ื›ืœืœ. ื”ื•ืจื“ื ื• ืืช ื–ื” ืœ-0. ื”ื›ืœ ื ื”ื“ืจ.

ืžื” ืืชื” ื™ื›ื•ืœ ืœืงื—ืช ืžื›ืืŸ? ืื ื™ืฉ ืœืš ื’'ืื•ื•ื”, ืื– ืืชื” ืœื•ืงื— ืืช ื”ื’ืจืกื” ื”ืžื•ื“ืจื ื™ืช ืฉืœ ื”ื ื”ื’ ื•ืฉืžื—.

ืื ืืชื” ืžื“ื‘ืจ ื‘ืฉืคื” ืื—ืจืช, ืื– ืชื—ืฉื•ื‘ - ืื•ืœื™ ื’ื ืืชื” ืฆืจื™ืš ืืช ื–ื”? ื›ื™ ืžื‘ื—ื™ื ืช ื”ืฉืคื” ื”ืกื•ืคื™ืช, ืœืžืฉืœ, ืื PL 8 ืื• ื™ืฉ ืœืš LibPQ, ืื– ืœื ื‘ืจื•ืจ ืœืš ืฉืืชื” ืžืฉืงื™ืข ื–ืžืŸ ืœื ื‘ื‘ื™ืฆื•ืข, ื‘ื ื™ืชื•ื—, ื•ื–ื” ืฉื•ื•ื” ื‘ื“ื™ืงื”. ืึตื™ืš? ื”ื›ืœ ื‘ื—ื™ื ื.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืืœื ืฉื™ืฉ ื˜ืขื•ื™ื•ืช ื•ื›ืžื” ืžื•ื–ืจื•ื™ื•ืช. ื•ืื ื—ื ื• ื ื“ื‘ืจ ืขืœื™ื”ื ืขื›ืฉื™ื•. ืจื•ื‘ื• ื™ื”ื™ื” ืขืœ ืืจื›ื™ืื•ืœื•ื’ื™ื” ืชืขืฉื™ื™ืชื™ืช, ืขืœ ืžื” ืฉืžืฆืื ื•, ืขืœ ืžื” ืฉื ืชืงืœื ื• ื‘ื•.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืื ื”ื‘ืงืฉื” ื ื•ืฆืจืช ื‘ืื•ืคืŸ ื“ื™ื ืžื™. ื–ื” ืงื•ืจื”. ืžื™ืฉื”ื• ืžื“ื‘ื™ืง ืืช ื”ืžื—ืจื•ื–ื•ืช ื™ื—ื“, ื•ื›ืชื•ืฆืื” ืžื›ืš ืฉืื™ืœืชืช SQL.

ืœืžื” ื”ื•ื ืจืข? ื–ื” ืจืข ื›ื™ ื‘ื›ืœ ืคืขื ืื ื—ื ื• ืžืกื™ื™ืžื™ื ืขื ืžื—ืจื•ื–ืช ืื—ืจืช.

ื•ืืช ื”-hashCode ืฉืœ ื”ืžื—ืจื•ื–ืช ื”ืฉื•ื ื” ื”ื–ื• ืฆืจื™ืš ืœืงืจื•ื ืฉื•ื‘. ื–ื• ื‘ืืžืช ืžืฉื™ืžืช CPU - ืœืžืฆื•ื ื˜ืงืกื˜ ื‘ืงืฉื” ืืจื•ืš ืืคื™ืœื• ื‘-hash ืงื™ื™ื ื–ื” ืœื ื›ืœ ื›ืš ืงืœ. ืœื›ืŸ, ื”ืžืกืงื ื” ืคืฉื•ื˜ื” โ€“ ืืœ ืชื™ื™ืฆืจ ื‘ืงืฉื•ืช. ืื—ืกืŸ ืื•ืชื ื‘ืžืฉืชื ื” ืื—ื“. ื•ืœืฉืžื•ื—.

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 ื‘ื–ืžืŸ ืฉื”ืืคืœื™ืงืฆื™ื” ืคื•ืขืœืช. ืื ืชืฉื ื”, ืขื“ื™ืฃ ืœื™ืฆื•ืจ ื—ื™ื‘ื•ืจ ื—ื“ืฉ.

ืืชื” ื™ื›ื•ืœ ืœื“ื•ืŸ, ื›ืœื•ืžืจ ืœืคืชื•ื—, ืœื“ื•ืŸ, ืœื”ื•ืกื™ืฃ. ืื•ืœื™ ื ื•ื›ืœ ืœืฉื›ื ืข ืืช ืžืคืชื—ื™ ืžืกื“ ื”ื ืชื•ื ื™ื ืฉื›ืืฉืจ ืžื™ืฉื”ื• ืžืฉื ื” ืขืจืš, ืžืกื“ ื”ื ืชื•ื ื™ื ืฆืจื™ืš ืœื•ืžืจ ืœืœืงื•ื— ืขืœ ื›ืš: "ืชืจืื”, ื”ืขืจืš ืฉืœืš ืขื•ื“ื›ืŸ ื›ืืŸ. ืื•ืœื™ ืืชื” ืฆืจื™ืš ืœืืคืก ืืช ื”ื”ืฆื”ืจื•ืช ื•ืœืฉื—ื–ืจ ืื•ืชืŸ?" ื›ืขืช ื”ืžืื’ืจ ืžืชื ื”ื’ ื‘ื—ืฉืื™ ื•ืื™ื ื• ืžื“ื•ื•ื— ื‘ืฉื•ื ืฆื•ืจื” ืฉื”ื”ืฆื”ืจื•ืช ื”ืฉืชื ื• ืื™ืคืฉื”ื• ื‘ืคื ื™ื.

ื•ืื“ื’ื™ืฉ ืฉื•ื‘ - ื–ื” ืžืฉื”ื• ืฉืœื ืื•ืคื™ื™ื ื™ ืœื’'ืื•ื•ื”. ื ืจืื” ืืช ืื•ืชื• ื”ื“ื‘ืจ ื‘-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". ื‘ืคื•ืขืœ ื–ื” ืื•ืชื• ื“ื‘ืจ. ืื™ืŸ ื”ื‘ื“ืœ ื‘ื‘ื™ืฆื•ืขื™ื.

ืกืคืจื™ื ืื•ืžืจื™ื ืฉืืชื” ืฆืจื™ืš ืœื‘ืฆืข ืžืฉืคื˜ Batch, ืกืคืจื™ื ืื•ืžืจื™ื ืฉืืชื” ื™ื›ื•ืœ ืœื‘ืฆืข ืคืงื•ื“ื•ืช ืžื•ืจื›ื‘ื•ืช ื™ื•ืชืจ ืขื ืžืกืคืจ ืกื•ื’ืจื™ื™ื. ื•ืœ-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 microbenchmark

ื˜ื•ื‘ ืฉื–ื” ืœื ื ื›ืœืœ ื‘ื’ืจืกื” ื”ืจืฉืžื™ืช. ื”ืชื’ืœื” ืœืคื ื™ ืชื—ื™ืœืช ื”ืฉื—ืจื•ืจ. ื›ืœ ื”ืžืฉืžืขื•ื™ื•ืช ืฉืื ื™ ื ื•ืชืŸ ืžื‘ื•ืกืกื•ืช ืขืœ ื’ืจืกืื•ืช ืžื•ื“ืจื ื™ื•ืช.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ื‘ื•ืื• ื ื ืกื” ืืช ื–ื”. ืื ื• ืžื•ื“ื“ื™ื ืืช InsertBatch ืคืฉื•ื˜. ืื ื—ื ื• ืžื•ื“ื“ื™ื ืืช InsertBatch ืžืกืคืจ ืคืขืžื™ื, ื›ืœื•ืžืจ ืื•ืชื• ื”ื“ื‘ืจ, ืื‘ืœ ื™ืฉ ื”ืจื‘ื” ืขืจื›ื™ื. ืžื”ืœืš ืžืกื•ื‘ืš. ืœื ื›ื•ืœื ื™ื›ื•ืœื™ื ืœืขืฉื•ืช ืืช ื–ื”, ืื‘ืœ ื–ื” ืžื”ืœืš ื›ืœ ื›ืš ืคืฉื•ื˜, ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืž-COPY.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช COPY.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ื•ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื–ื” ืขืœ ืžื‘ื ื™ื. ื”ื›ืจื–ื” ืขืœ ืกื•ื’ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืžืฉืชืžืฉ, ื”ืขื‘ืจ ืžืขืจืš ื•-INSERT ื™ืฉื™ืจื•ืช ืœื˜ื‘ืœื”.

ืื ืืชื” ืคื•ืชื— ืืช ื”ืงื™ืฉื•ืจ: pgjdbc/ubenchmsrk/InsertBatch.java, ืื– ื”ืงื•ื“ ื”ื–ื” ื ืžืฆื ื‘-GitHub. ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืกืคืฆื™ืคื™ืช ืื™ืœื• ื‘ืงืฉื•ืช ื ื•ืฆืจื•ืช ืฉื. ื–ื” ืœื ืžืฉื ื”.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ื”ืฉืงื ื•. ื•ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉื”ื‘ื ื• ื”ื™ื” ืฉืœื ืœื”ืฉืชืžืฉ ื‘ืืฆื•ื•ื” ื–ื” ืคืฉื•ื˜ ื‘ืœืชื™ ืืคืฉืจื™. ื›ืœ ืืคืฉืจื•ื™ื•ืช ื”ืืฆื•ื•ื” ื”ืŸ ืืคืก, ื›ืœื•ืžืจ ื–ืžืŸ ื”ื‘ื™ืฆื•ืข ื”ื•ื ื›ืžืขื˜ ืืคืก ื‘ื”ืฉื•ื•ืื” ืœื‘ื™ืฆื•ืข ื—ื“ ืคืขืžื™.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืื ื• ืžื›ื ื™ืกื™ื ื ืชื•ื ื™ื. ื–ื” ืฉื•ืœื—ืŸ ืžืื•ื“ ืคืฉื•ื˜. ืฉืœื•ืฉื” ืขืžื•ื“ื™ื. ื•ืžื” ืื ื—ื ื• ืจื•ืื™ื ื›ืืŸ? ืื ื• ืจื•ืื™ื ืฉื›ืœ ืฉืœื•ืฉ ื”ืืคืฉืจื•ื™ื•ืช ื”ืœืœื• ื‘ืจ ื”ืฉื•ื•ืื” ื‘ืขืจืš. ื•-COPY ื”ื•ื, ื›ืžื•ื‘ืŸ, ื˜ื•ื‘ ื™ื•ืชืจ.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ื–ื” ื›ืืฉืจ ืื ื• ืžื›ื ื™ืกื™ื ื—ืœืงื™ื. ื›ืฉืืžืจื ื• ืฉืขืจืš VALUES ืื—ื“, ืฉื ื™ ืขืจื›ื™ื ืฉืœ VALUES, ืฉืœื•ืฉื” ืขืจื›ื™ื ืฉืœ VALUES, ืื• ืฉืฆื™ื™ื ื• 10 ืžื”ื ืžื•ืคืจื“ื™ื ื‘ืคืกื™ืง. ื–ื” ืจืง ืื•ืคืงื™ ืขื›ืฉื™ื•. 1, 2, 4, 128. ื ื™ืชืŸ ืœืจืื•ืช ืฉื”-Batch Insert, ืฉืžืฆื•ื™ืจ ื‘ื›ื—ื•ืœ, ื’ื•ืจื ืœื• ืœื”ืจื’ื™ืฉ ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘. ื›ืœื•ืžืจ, ื›ืฉืžื›ื ื™ืกื™ื ืื—ื“ ื‘ื›ืœ ืคืขื ืื• ืืคื™ืœื• ื›ืฉืžื›ื ื™ืกื™ื ืืจื‘ืขื” ื‘ื›ืœ ืคืขื, ื–ื” ื”ื•ืคืš ืœื”ื™ื•ืช ื˜ื•ื‘ ืคื™ ืฉื ื™ื™ื, ืคืฉื•ื˜ ื›ื™ ื“ื—ืกื ื• ืขื•ื“ ืงืฆืช ื‘-VALUES. ืคื—ื•ืช ืคืขื•ืœื•ืช EXECUTE.

ื”ืฉื™ืžื•ืฉ ื‘-COPY ื‘ื ืคื—ื™ื ืงื˜ื ื™ื ื”ื•ื ืžืื•ื“ ืœื ืžื‘ื˜ื™ื—. ืืคื™ืœื• ืœื ืฆื™ื™ืจืชื™ ืืช ื”ืฉื ื™ื™ื ื”ืจืืฉื•ื ื™ื. ื”ื ื”ื•ืœื›ื™ื ืœื’ืŸ ืขื“ืŸ, ื›ืœื•ืžืจ, ื”ืžืกืคืจื™ื ื”ื™ืจื•ืงื™ื ื”ืืœื” ืขื‘ื•ืจ COPY.

ื™ืฉ ืœื”ืฉืชืžืฉ ื‘-COPY ื›ืืฉืจ ื™ืฉ ืœืš ืœืคื—ื•ืช ืžืื” ืฉื•ืจื•ืช ืฉืœ ื ืชื•ื ื™ื. ื”ืชืงื•ืจื” ืฉืœ ืคืชื™ื—ืช ื—ื™ื‘ื•ืจ ื–ื” ื”ื™ื ื’ื“ื•ืœื”. ื•ืœืžืขืŸ ื”ืืžืช, ืœื ื—ืคืจืชื™ ื‘ื›ื™ื•ื•ืŸ ื”ื–ื”. ืขืฉื™ืชื™ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ Batch, ืื‘ืœ ืœื COPY.

ืžื” ื ืขืฉื” ืขื›ืฉื™ื•? ื ื™ืกื™ื ื• ืืช ื–ื”. ืื ื• ืžื‘ื™ื ื™ื ืฉืขืœื™ื ื• ืœื”ืฉืชืžืฉ ื‘ืžื‘ื ื™ื ืื• ื‘ืืงื˜ ื—ื›ื ื”ืžืฉืœื‘ ืžืกืคืจ ืžืฉืžืขื•ื™ื•ืช.

PostgreSQL ื•-JDBC ืกื•ื—ื˜ื™ื ืืช ื›ืœ ื”ืžื™ืฅ. ื•ืœื“ื™ืžื™ืจ ืกื™ื˜ื ื™ืงื•ื‘

ืžื” ื›ื“ืื™ ืœืงื—ืช ืžื”ื“ื•ื— ืฉืœ ื”ื™ื•ื?

  • PreparedStatement ื”ื•ื ื”ื›ืœ ืฉืœื ื•. ื–ื” ื ื•ืชืŸ ื”ืจื‘ื” ืขื‘ื•ืจ ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช. ื–ื” ืžื™ื™ืฆืจ ืคืœื•ืค ื’ื“ื•ืœ ื‘ืžืฉื—ื”.
  • ื•ืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื”ืกื‘ืจ ื ื™ืชื•ื— 6 ืคืขืžื™ื.
  • ื•ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื“ืœืœ OFFSET 0, ื•ื˜ืจื™ืงื™ื ื›ืžื• +0 ื›ื“ื™ ืœืชืงืŸ ืืช ื”ืื—ื•ื– ื”ื ื•ืชืจ ืฉืœ ื”ืฉืื™ืœืชื•ืช ื”ื‘ืขื™ื™ืชื™ื•ืช ืฉืœื ื•.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”