ืื ื ืืฆืืข ืื ืืงืจืื ืืช ืืชืืืื ืฉื ืืื"ื ืฉื ืืืืืืืจ ืกืืื ืืงืื ืืชืืืืช 2016 "PostgreSQL ื-JDBC ืกืืืืื ืืช ืื ืืืืฅ"
ืืืจ ืืฆืืจืืื ืืืืื ืฉืื ืืืืืืืจ ืกืืื ืืงืื. ืื ื ืขืืื ืขืืืจ NetCracker ืืืจ 10 ืฉื ืื. ืืื ื ืืขืืงืจ ืืขื ืืื ืฉื ืคืจืืืืงืืืืืืช. ืื ืื ืฉืงืฉืืจ ืื'ืืืื, ืื ืื ืฉืงืฉืืจ ื-SQL ืื ืื ืฉืื ื ืืืื.
ืืืืื ืืืืจ ืขื ืื ืฉื ืชืงืื ื ืืืืจื ืืฉืืชืืื ื ืืืฉืชืืฉ ื-PostgreSQL ืืฉืจืช ืืกื ื ืชืื ืื. ืืื ืื ื ืขืืืืื ืืขืืงืจ ืขื Java. ืืื ืื ืฉืื ื ืืืื ืืกืคืจ ืืื ืืืื ืืื ืื ืจืง ืขื ื'ืืืื. ืืคื ืฉืืจืื ืืคืืขื, ืื ืงืืจื ืื ืืฉืคืืช ืืืจืืช.
ืื ืื ื ื ืืืจ:
- ืืืื ืืืืืช ื ืชืื ืื.
- ืืืื ืฉืืืจืช ื ืชืื ืื.
- ืืื ืขื ืืืฆืืขืื.
- ืืืืื ืืืืจืคืืช ืืชืช ืืืืืืช ืฉืงืืืจืืช ืฉื.
ื ืชืืื ืืฉืืื ืคืฉืืื. ืื ื ืืืืจืื ืฉืืจื ืืืช ืืืืืื ืขื ืกืื ืืืคืชื ืืจืืฉื.
ืืกื ืื ืชืื ืื ืืืืงื ืขื ืืืชื ืืืจื. ืืื ืืืงืืืืช ืืื ืืืงืืช 20 ืืืืืฉื ืืืช.
20 ืืืืืฉื ืืืช ืืื ืื ืืจืื. ืื ืืฉ ืื 100 ืืงืฉืืช ืืืื, ืื ืืชื ืืืื ืืื ืืฉื ืืื ืืืืืื ืืื ืืืงืฉืืช ืืืื, ืืืืืจ ืื ืื ื ืืืืืืื ืืื.
ืื ืื ื ืื ืืืืืื ืืขืฉืืช ืืช ืื ืืืจืืืช ืื ืืืกืืก ืืฆืืข ืื ื ืืฉืืื ืื. ืืกื ืื ืชืื ืื ืืฆืืข ืื ื ืฉืชื ืืคืฉืจืืืืช ืืืืฆืืข ืฉืืืืชืืช.
ืืืคืฉืจืืช ืืจืืฉืื ื ืืื ืืงืฉื ืคืฉืืื. ืื ืืื ืืื? ืื ืฉืื ืื ื ืืืงืืื ืืืชื ืืฉืืืืื ืืืชื, ืืชื ืื.
ืืืกื ืื ืชืื ืื ืืฉ ืื ืฉืืืืชื ืืชืงืืืช, ืฉืืื ืืืชืจ ืืกืืืืช, ืืื ืืืชืจ ืคืื ืงืฆืืื ืืืช. ื ืืชื ืืฉืืื ืื ืคืจื ืืงืฉื ืื ืืชืื, ืืืฆืืข, ืืจืืืช ืืฉืชื ื ืืื'.
ืฉืืืืชื ืกืืคืจ ืืืจืืืช ืืื ืืฉืื ืฉืื ื ืขืกืืง ืืืื ืื ืืืื. ืื ืื ื, ืืืื, ืจืืฆืื ืืฉืื ืืืืืืจ ืืืฉ ืจืฉืืืช ืืฉืืืืช ืฉืืชืืืฉื ืืฆืืจื ืืืฉืื, ืืืืืจ ืื ืื ืฉืื ืื ื ืจืืฆืื, ืืื ืื ืืืชื ืืคืฉืจื ืขืืฉืื ืืืฉื ื ืืืื. ืื ืคืฉืื ืืงืืื ื ืืช ืื ืื ืกืชืืื ืืจืืขื ืืช ืืื ืฉืื ืืจืืฉืืื.
ืืื ืฉืื ืื ื ืืืืืื ืืขืฉืืช ืื ืฉืืืืชื ืคืฉืืื ืืฉืืืืชื ืืืจืืืช.
ืื ืืืืื ืืื ืืืฉื?
ืฉืืืืชื ืคืฉืืื ืืืื ืืืืฆืืข ืื ืคืขืื. ืคืขื ืืืช ื ืขืฉื ืื ืฉืื. ืืืืขืื ืืื ืฉืืื ืื ืชืืื ืืคืืจืื ืื ืชืื ืื ืืืื ืืจื, ืืืืืจ ืืื ืื ืืชืืื ืืืื ืืขืจืืืช ืืขืืืช ืืืฆืืขืื ืืืืืื.
ืฉืืืืชื ืืืจืืืช - ืืืคืฉืจืช ืื ืืืกืื ืืื ืื ืืชืื. ืื ืื ืฉืขืฉืื ื ืืืชืืื ื ืืืฉืชืืฉ. ืื ืืืฉ ืืืฉ ืขืืจ ืื ื. ืืฉ ืื ืจืง ืืืกืืื ืื ืืชืื. ืืฉ ืืืกืืื ืืืขืืจืช ื ืชืื ืื. ืืขืืจืช ื ืชืื ืื ืืคืืจืื ืืื ืืจื ืืจืื ืืืชืจ ืืขืืื.
ืืืื ื ืขืืืจ ืืชืจืืื. ืื ื ืจืืืช ืืคืืืงืฆืื ืืืคืืกืืช. ืื ืืืื ืืืืืช ื'ืืืื ืืื'.
ืืฆืจื ื ืืืืจื. ืืืฆืข ืืช ืืคืงืืื. ื ืืฆืจ ืงืจืื. ืืืคื ืืืขืืช ืืื? ืื ืืืขืื? ืืื ืืขืื. ืื ืื ืฉืืชืื ืืื ืืกืคืจืื. ืื ืฆืจืื ืืืชืื ืืช ืื. ืื ืืชื ืจืืฆื ืืืฆืืขืื ืืงืกืืืืืื, ืืชืื ืื.
ืืื ืืชืจืืื ืืืืื ืฉืื ืื ืขืืื. ืืื? ืื ืืฉ ืื ื ืฉืืื "ืงืจืื". ืืืฉืื ืื ื ืขืืฉืื ืืช ืื, ืื ืงืืืช ืืืื ืฉื ืืกื ืื ืชืื ืื ืืกืชืืจ ืฉืื ืืื ืืขืฉื ืฉืขืืื ืขื ืืกื ื ืชืื ืื. ืืืจื ื "ื ืชื ืืฆืข ืืืืื".
ืืื ืื ืืืฆืืจื ืืืคืจืืงื ืื ืืกืคืช ืืื ืฉื ืืฆืืจืืช? ืืฃ ืืื ืื ืฆืจืื ืืืชื. ืืื ืื ืฉืงืืจื ืืืจื ืืื ื-PreparedStatements ืืื ืฉืืืฉืจ ืื ืื ื ืกืืืจืื ืืืชื, ืื ืกืืืจืื ืืช ืื ืื ืฉื ืืฆื ืืืกื ืื ืชืื ืื. ืื ืื ืื ืฉืื ืื ื ืจืืฆืื.
ืื ืื ื ืจืืฆืื, ืืื ืื ืฉืื ืืจืืืื, ืืขืืื ืขื ืืืกืืก. ืืงืื ื ืืืื ื ืืช ืืืฆืืจื ืฉืื ื ืคืขื ืืืช, ืืื ืื ืื ื ืืืฆืขืื ืืืชื ืคืขืืื ืจืืืช. ืืืขืฉื, ืคืขืืื ืจืืืช - ืื ืคืขื ืืืช ืืื ืืื ืืืคืืืงืฆืืืช - ืื ื ืืชืื. ืืื ืื ื ืืฉืชืืฉืื ืืืืชื ืืืื ืืฉืคื ื-RESTs ืฉืื ืื. ืื ืืืืจื ืฉืื ื.
ืืื ื ืืื ืืืฉืื ืืืช?
ืื ืืืื ืคืฉืื - ืืื ืฆืืจื ืืกืืืจ ืืฆืืจืืช. ืื ืื ื ืืืชืืื ืืช ืื ืื: "ืืืื ื" "ืชืืฆืขื".
ืื ื ืฉืืง ืืฉืื ืืื, ืื ืืจืืจ ืฉืืฉืื ืืขืื ืขื ืืืืชืื ืืืคืฉืื. ืื ืื ืื ืืจืืจ, ืืชื ืืืื ืื ืกืืช ืืช ืื. ืืืื ื ืืชืื ืืืช ืืืื ืฉืืฉืชืืฉืช ืืฉืืื ืืคืฉืืื ืืื. ืฆืืจ ืืฆืืจื. ืื ื ืืฉืืงืื ืืืชื ืืืจืกื ืืืฉืื ืฉื ืื ืื ืืืชืงื ืืืืืื ืฉืืื ืงืืจืก ืื ืืืจ ืขื ืืืืื ืื ืืืืืจืื ืฉืืื ืื.
ืืจืืจ ืฉืฉืืืืืช ืืืื ื ืืชื ืืช ืืชืืงืื ืืงืืืช. ืื ื ืื ืืืืจ ืขืืืื. ืืื ืื ื ืืืื ืฉืืืจืกื ืืืืฉื ืขืืืืช ืืจืื ืืืชืจ ืืืจ. ืืฉืืื ืืืคืฉืืช, ืืื ืืื ืืืช.
ืืื ืืขืืื ื ืืื? ืื ืื ืื ื ืฆืจืืืื ืืขืฉืืช ืืฉืืื ืื?
ืืืฆืืืืช, ืืืฉืืืื ืชืืื ืกืืืจืื ืืฆืืจืืช. ืืื ืืกืคืจืื ืืืืจืื ืืกืืืจ ืืืชื, ืืืจืช ืืืืืจืื ืืืืืฃ.
ื-PostgreSQL ืื ืืืืข ืืื ืืฉืืืจ ืฉืืืืชืืช ืืืืืื. ืืฉ ืฆืืจื ืฉืื ืืคืขืื ืชืืฆืืจ ืืช ืืืืืื ืืื ืืขืฆืื.
ืืื ืื ื ืื ืื ืจืืฆืื ืืืืื ืืื ืขื ื ืืชืื.
ืืืจืืื ืืฉ ืื ื ืฉืชื ืืคืฉืจืืืืช.
ืืืคืฉืจืืช ืืจืืฉืื ื ืืื ืฉื ืืงื ืืช ืื ืื ืืืจ ืฉืืื ื ืขืืืฃ ืืื ื-PgSQL. ืืฉ ืฉื ืืืืื. ืื ืืืืกื ืืื. ืื ืืืฆื ื ืืืจ. ืจืืื ื ืืช ืื. ืืฉ ืื ื 100500 ืืงืฉืืช. ืื ืขืืื. ืืื ื ื ืืกืืืืื ืืืคืื ืืงืฉืืช ืืืืืืื ืืืืคื ืืื ื. ืื ืื.
ืืฉ ืื ื ืืคืฉืจืืช ืฉื ืืื - ืืงืืช ืืืชื ืืืืชืื ืืืชื ืืขืฆืื ื. ืื ืื ื ืคืืชืืื ืืช ืืืงืืจืืช ืืืชืืืืื ืืืชืื. ืจืืื ื ืืจืืื ื. ืืชืืจืจ ืฉืื ืื ืื ืื ืงืฉื ืืขืฉืืช.
ืื ืืืคืืข ืืืืืืกื 2015. ืขืืฉืื ืืฉ ืืจืกื ืืืืจื ืืช ืืืชืจ. ืืืื ื ืืืจ. ืื ืขืืื ืื ืื ืืื ืฉืื ืื ื ืื ืืฉื ืื ืฉืื ืืืจ ืืืคืืืงืฆืื. ืืืคืืื ืืคืกืงื ื ืืืฉืื ืืืืืื ืฉื PgSQL, ืืืืืจ ืื ืืื ืืกืคืืง ืืฉืืืื ื ืืื ืืืคืืืช ืืช ืื ืขืืืืืช ืืชืงืืจื ืืืืขื ืืคืก.
ืืืชืื ืืื, ืืฆืืจืืช ืืืื ืืช ืขื ืืื ืฉืจืช ืืืคืขืืืช ืืืืฆืืข ืืืืืฉื ืขื ืื ืช ืืื ืืข ืืืืื ืืืืจืื ืืืกื ืื ืชืื ืื ืืื ืืงืฉื ืื ืคืขืืืช.
ืืคืฉืจ ืืฉืืื - ืืืคื ืืืกืคืจืื? ืื ืืชื ืืงืื? ืืืื ืื ืืชื ืืกืคืจืื, ืื ืืื ืืงืฉื ืืฉ ืืช ืฉืื.
ืืฉืืืืชืืช ืฉืื ื ืืื ืืืื ืฉืืฉืงืขื ื ืืขืจื 20 ืืืืืฉื ืืืช ืื ืืชืื ืฉื ืฉืืืืชืืช OLTP. ืืื 0,5 ืืืืืฉื ืืืช ืืืืฆืืข, 20 ืืืืืฉื ืืืช ืื ืืชืื. ืืงืฉื - 10 KiB ืฉื ืืงืกื, 170 ืฉืืจืืช ืฉื ืชืืื ืืช. ืืืื ืืงืฉืช OLTP. ืืื ืืืงืฉ 1, 5, 10 ืฉืืจืืช, ืืคืขืืื ืืืชืจ.
ืืื ืื ืจืฆืื ื ืืืืื 20 ืืืืืฉื ืืืช ืืืื. ืืืจืื ื ืืช ืื ื-0. ืืื ื ืืืจ.
ืื ืืชื ืืืื ืืงืืช ืืืื? ืื ืืฉ ืื ื'ืืืื, ืื ืืชื ืืืงื ืืช ืืืจืกื ืืืืืจื ืืช ืฉื ืื ืื ืืฉืื.
ืื ืืชื ืืืืจ ืืฉืคื ืืืจืช, ืื ืชืืฉืื - ืืืื ืื ืืชื ืฆืจืื ืืช ืื? ืื ืืืืื ืช ืืฉืคื ืืกืืคืืช, ืืืฉื, ืื PL 8 ืื ืืฉ ืื LibPQ, ืื ืื ืืจืืจ ืื ืฉืืชื ืืฉืงืืข ืืื ืื ืืืืฆืืข, ืื ืืชืื, ืืื ืฉืืื ืืืืงื. ืึตืื? ืืื ืืืื ื.
ืืื ืฉืืฉ ืืขืืืืช ืืืื ืืืืจืืืืช. ืืื ืื ื ื ืืืจ ืขืืืื ืขืืฉืื. ืจืืื ืืืื ืขื ืืจืืืืืืืืื ืชืขืฉืืืชืืช, ืขื ืื ืฉืืฆืื ื, ืขื ืื ืฉื ืชืงืื ื ืื.
ืื ืืืงืฉื ื ืืฆืจืช ืืืืคื ืืื ืื. ืื ืงืืจื. ืืืฉืื ืืืืืง ืืช ืืืืจืืืืช ืืื, ืืืชืืฆืื ืืื ืฉืืืืชืช SQL.
ืืื ืืื ืจืข? ืื ืจืข ืื ืืื ืคืขื ืื ืื ื ืืกืืืืื ืขื ืืืจืืืช ืืืจืช.
ืืืช ื-hashCode ืฉื ืืืืจืืืช ืืฉืื ื ืืื ืฆืจืื ืืงืจืื ืฉืื. ืื ืืืืช ืืฉืืืช CPU - ืืืฆืื ืืงืกื ืืงืฉื ืืจืื ืืคืืื ื-hash ืงืืื ืื ืื ืื ืื ืงื. ืืื, ืืืกืงื ื ืคืฉืืื โ ืื ืชืืืฆืจ ืืงืฉืืช. ืืืกื ืืืชื ืืืฉืชื ื ืืื. ืืืฉืืื.
ืืืขืื ืืืื. ืกืืื ื ืชืื ืื ืืฉืืืื. ืืฉ ORM ืฉืืืืจืื ืฉืื ืื ืืฉื ื ืืืื ืกืื ืฉื NULL ืืฉ, ืฉืืืื ืืืื ืกืื. ืื Int, ืื ืื ืื ื ืืืืจืื setInt. ืืื NULL, ืื ืฉืืืื ืชืืื VARCHAR. ืืื ืื ืืฉื ื ืืกืืคื ืฉื ืืืจ ืืืื NULL ืืฉ? ืืืืืจ ืขืฆืื ืืืื ืืื. ืืืชืืื ื ืืื ืื ืขืืืืช.
ืืคืืขื, ืืืืืจ ืืืืืข ืื ืืืคืช ืืืื. ืื ืืืจืช ืืคืขื ืืจืืฉืื ื ืฉืื ืืกืคืจ, ืืืคืขื ืืฉื ืืื ืืืจืช ืฉืื VARCHAR, ืื ืื ืืคืฉืจ ืืขืฉืืช ืฉืืืืฉ ืืืืจ ืืืฆืืจืืช ืฉืืืื ื ืขื ืืื ืฉืจืช. ืืืืงืจื ืื, ืขืืื ื ืืืฆืืจ ืืืืฉ ืืช ืืืฆืืจื ืฉืื ื.
ืื ืืชื ืืืฆืข ืืช ืืืชื ืฉืืืืชื, ืืื ืฉืกืืื ืื ืชืื ืื ืืขืืืื ืฉืื ืืื ื ืืืืืืืื. ืืชื ืฆืจืื ืืืืืืจ ื-NULL. ืื ืฉืืืื ื ืคืืฆื ืฉืืืืชื ืื ื ืืืืจ ืฉืืชืืื ื ืืืฉืชืืฉ ื-PreparedStatements
ืืืงืื, ืืืคืขื. ืืืื ืืงืื ืืช ืื ืื. ืืืคืจืืืืงืืืืืืช ืืจืื. ืืืจืื ืืฉืชืืฉื.
ืืื ืื ืงืืจื? ืืื ืื ืืื ืื ืชืืื ื? ืืืจืื ืืฆืขืจ, ืื ื ืืชื ืืื ืืืืื ืื ืืืืืจ ืืืื ืื ืืชืืื ื. ืืื ืืฉ ืชืจืืืฉ ืคืฉืื ืืืื ืืฉืืืืจ ืืขืื ืื. ืืื ืืจืื ืื ื ืืืืคื ืืืชื ืฆืคืื ืืืืืืื. ืืื ืืืจืื ืืืืืื ืืืฉ ืืืืื ืืืช. ืืื ืื ื, ืืืืื, ืขืื ืืงืฉืืช ืืืื. ืืืื, ืื ืืืื ืฉื ืืื ืื ืฉืืืฉื ืืืืืืช, ืืื ืืฉ ืชืจืืืฉ ืืฉืืขื ืืื. ืงื ืื ืืจืกื ืืืกื ืื ืชืื ืื ืฉืื ืืืคืขื ืืืชื.
ืื ืงืืื ืืื ืฉืืฉ ืื ื ืฉืชื ืขืืืืืช, ืฉืื ืืืช ืืื ืืชืืืกืคืช ืืืื ืืงืก. ืืฉ ืืืืืื ืฉืืจืืช ืืขืืืืช NULL ืืืช. ืืืขืืืื ืืฉื ืืื ืืืืื ืจืง 20 ืฉืืจืืช. ืืืฉืจ ืื ื ืืืฆืขืื ืืื ืืฉืชื ืื ืงืฉืืจืื, ืืื ืขืืื ืืื.
ืื ื ืชืืื ืืืฆืข ืขื ืืฉืชื ืื ืงืฉืืจืื, ืืืืืจ ื ืืฆืข ืืช ื-"?" ืื "$1" ืขืืืจ ืืืงืฉื ืฉืื ื, ืื ืื ืื ื ืืงืืืื ืืกืืคื ืฉื ืืืจ?
ืืืืฆืืข ืืจืืฉืื ืืื ืืฆืคืื. ืืฉื ื ืงืฆืช ืืืชืจ ืืืืจ. ืืฉืื ื ืฉืืจ ืืืืืื. ืฉืืืฉื, ืจืืืขื, ืืืืฉื. ืืื ืืื ื - ืืืฉืื ืืื. ืืืืืจ ืืืจืืข ืืืืชืจ ืืื ืฉืื ืงืืจื ืืืืฆืื ืืืืจื ืืฉืืฉืืช. ืื ืืืข ืฉืฆืจืื ืืขืฉืืช ืืืืืง ืฉืฉ ืืืฆืืืช ืืืืจื ืืื ืืืืื ืืื ืชืืื ืืช ืืืืฆืืข ืืคืืขื?
ืื ืืฉื? ืื ืงืจื? ืืกื ืื ืชืื ืื ืืืื ืืืคืืืืืืฆืื. ืื ืจืื ืฉืืื ืืืชืื ืืืงืจื ืืื ืจื. ืืืืชืื ืืื, ืืื ืืฉืื ืืกืืื, ืืื ืขืืืจืช ืืชืืื ืืช ืื ืจืืช, ืฉืืืจืื ืืฆืขืจ ืขืฉืืื ืืืชืืจืจ ืืฉืื ื. ืื ืืืื ืืืชืืจืจ ืืื, ืื ืฉืื ืืืื ืืืืืช ืฉืื ื. ืืืฉ ืืืืฉืื ืขืจื ืกืฃ ืฉืืืืื ืืืชื ืืืืช ืืื.
ืื ืืชื ืืืื ืืขืฉืืช ืื ืืืื? ืืื, ืืืืื, ืงืฉื ืืืชืจ ืืื ืื ืืฉืื. ืืฉ ืคืชืจืื ืคืฉืื ืฉืื ืื ื ืืฉืชืืฉืื. ืื +0, OFFSET 0. ืืื ืืชื ืืืืจ ืคืชืจืื ืืช ืืืื. ืื ืื ื ืคืฉืื ืืืงืืื ืืช ืื ืืืืกืืคืื "+0" ืืืงืฉื ืืืื ืืกืืจ. ืื ื ืืจืื ืื ืืืืืจ ืืืชืจ.
ืืืฉ ืืคืฉืจืืช ื ืืกืคืช - ืืกืชืืื ืขื ืืชืืื ืืืช ืืืชืจ ืชืฉืืืช ืื. ืขื ืืืื ืื ืจืง ืืืชืื ืืงืฉื, ืืื ืื ืืืืจ "ืืกืืจ ืื ืชื" 6 ืคืขืืื. ืื ืื 5, ืื ืื ืืขืืื.
ืืืฉ ืืคืฉืจืืช ืฉืืืฉืืช - ืืืชืื ืืืชื ื-pgsql-hackers. ืืชืืชื, ืขื ืืืช, ืขืืืื ืื ืืจืืจ ืื ืื ืืื ืื ืชืืื ื.
ืืืื ืฉืื ืื ื ืืืฉืืื ืื ืื ืืื ืื ืชืืื ื, ืืืื ื ืชืงื ืืช ืื. ืืืื ื ืืงื ืืช ืืืงืฉื ืฉืื ื ืื ืืกืืฃ "+0". ืืื ืืกืืจ. ืฉื ื ืกืืืื ืืืชื ืืคืืื ืื ืฆืจืื ืืืฉืื ืืื ืื ืื ืื ืื. ืคืฉืื ืืืื. ืคืฉืื ืืกืจื ื ืขื ืืกื ืื ืชืื ืื ืืืฉืชืืฉ ืืืื ืืงืก ืืขืืืื ืื. ืืื ืื ื ืืื ืืงืก ืืขืืืื "+0" ืืืื, ืืกื ืื ืชืื ืื ืื ืืฉืชืืฉ ืืืื ืืงืก, ืืื ืืกืืจ.
ืื ืืืื ืฉื 6 ืืืกืืืจ. ืขืืฉืื ืืืจืกืืืช ืื ืืืืืืช ืืชื ืฆืจืื ืืขืฉืืช ืืช ืื 6 ืคืขืืื ืื ืืฉ ืื ืืฉืชื ืื ืงืฉืืจืื. ืื ืืื ืื ืืฉืชื ืื ืงืฉืืจืื, ืื ืื ืฉืื ืื ื ืขืืฉืื. ืืืกืืคื ืฉื ืืืจ ืืืืงื ืืืงืฉื ืืื ื ืืฉืืช. ืื ืื ืืืจ ืืกืืื.
ืื ื ืจืื, ืืื ืื ืืคืฉืจื? ืืื ืคื, ืืื ืฉื. ืืืขืฉื, ืืืื ื ืืฆื ืืื ืืงืื.
ืืืื ื ืกืชืื ืืงืจืื. ืืืืืื, ืืฉ ืื ื ืฉืชื ืกืืืืช. ืกืืืื A ืขื ืืืื S ืืชืจืฉืื B ืขื ืืืื S. ืฉืืืืชื - ืืืจ ื ืชืื ืื ืืืืื. ืื ืืืื ืื ื ืืืงืจื ืืื? ืชืืื ืื ื ืฉืืืื. ืืืื ืื ื ืืช ืื ืืืืืจ ืืขืื. ืืืื ืืื - ืืื ื ืืฆื ืืื ืืงืื, ืืืื ืื ื ืืช ืื ืืืืืจ ืืขืื.
ืขืืฉืื ืืฉืืื ืืื: "ืืื?" ื ืจืื ืฉืืฉ ืชืืขืื ืฉืื ืืฉ ืื ื ืกืืื, ืื ืืฉ ืืฉืชื ื "search_path" ืฉืืืืจ ืื ื ืืืื ืืืคืฉ ืืช ืืืืื. ื ืจืื ืฉืืฉ ืืฉืชื ื.
ืื ืืืขืื? ืืืขืื ืืื ืฉืืฆืืจืืช ืฉืืืื ื ืขื ืืื ืฉืจืช ืื ืืืฉืืืช ืฉืืืฉืื ืืืื ืืฉื ืืช ืืช search_path. ืขืจื ืื ื ืฉืืจ, ืืืืืื, ืงืืืข ืขืืืจ ืืกื ืื ืชืื ืื. ืืืืงืื ืืกืืืืื ืขืฉืืืื ืฉืื ืืงืืื ืืฉืืขืืืืช ืืืฉืืช.
ืืืืื, ืื ืชืืื ืืืจืกื ืฉืื ืืชื ืืืืง. ืชืืื ืืืืื ืจืฆืื ืืช ืืืืืืืช ืฉืื ืฉืื ืืช. ืืืจืกื 9.1 ืคืฉืื ืชืืฆืข ืืช ืืืงืฉืืช ืืืฉื ืืช. ืืจืกืืืช ืืืฉืืช ืขืฉืืืืช ืืชืคืืก ืืช ืืืื ืืืกืคืจ ืื ืฉืืฉ ืื ืืื.
ืืื ืืืคื ืืื? ืืฉ ืืชืืื ืคืฉืื - ืื ืชืขืฉื ืืช ืื. ืืื ืฆืืจื ืืฉื ืืช ืืช search_path ืืืื ืฉืืืคืืืงืฆืื ืคืืขืืช. ืื ืชืฉื ื, ืขืืืฃ ืืืฆืืจ ืืืืืจ ืืืฉ.
ืืชื ืืืื ืืืื, ืืืืืจ ืืคืชืื, ืืืื, ืืืืกืืฃ. ืืืื ื ืืื ืืฉืื ืข ืืช ืืคืชืื ืืกื ืื ืชืื ืื ืฉืืืฉืจ ืืืฉืื ืืฉื ื ืขืจื, ืืกื ืื ืชืื ืื ืฆืจืื ืืืืจ ืืืงืื ืขื ืื: "ืชืจืื, ืืขืจื ืฉืื ืขืืืื ืืื. ืืืื ืืชื ืฆืจืื ืืืคืก ืืช ืืืฆืืจืืช ืืืฉืืืจ ืืืชื?" ืืขืช ืืืืืจ ืืชื ืื ืืืฉืื ืืืื ื ืืืืื ืืฉืื ืฆืืจื ืฉืืืฆืืจืืช ืืฉืชื ื ืืืคืฉืื ืืคื ืื.
ืืืืืืฉ ืฉืื - ืื ืืฉืื ืฉืื ืืืคืืื ื ืื'ืืืื. ื ืจืื ืืช ืืืชื ืืืืจ ื-PL/pgSQL ืืื ืืืื. ืืื ืื ืืฉืืืืจ ืฉื.
ืืื ื ื ืกื ืืืืืจ ื ืชืื ืื ื ืืกืคืื. ืื ืื ื ืืืืจืื ืืืืืจืื. ืืฉ ืื ื ืืืื ืขื ืืืืืื ืฉืืจืืช. ืื ืฉืืจื ืืื ืงืืืืืืื. ืืขืจื ืืืื-ืืืื ืฉื ื ืชืื ืื. ืืืฉ ืื ื ืืืืจืื ืขืืืื ืืืืื ืช Java ืฉื 128 ืืื ืืืื.
ืื ื, ืืคื ืฉืืืืืฅ ืืื ืืกืคืจืื, ืืฉืชืืฉืื ืืขืืืื ืืจื. ืืืืืจ, ืื ืื ื ืคืืชืืื ืืช resultSet ืืงืืจืืื ืืช ืื ืชืื ืื ืืฉื ืืื ืืื. ืื ืืขืืื? ืืื ืื ืืืคืื ืืืืืืจืื? ืชืงืจื ืงืฆืช? ืืืื ื ืกืืื ืขื ืืกื ืื ืชืื ืื, ืืืื ื ืกืืื ืขื Postgres. ืื ืื ื ืื ืืืืื ืื ืืื. ืืื ื ืืคืื ืืืืฅ ืืืืืจืื? ืื ืืืื ืืช OutOfMemory? ืื ืืฆืืื ืืชืงื ืืช ืื ืืืจื ืื? ืืืฉืื ืืฆืืื ืืชืงื ืืช ืื.
ืื ืืฉ ืื ืืืืืื ืฉืืจืืช, ืืชื ืื ืืืื ืคืฉืื ืืืืืจ. ื ืืจืฉ OFFSET/LIMIT. ืื ืืชืืื ืืืืคืฆืื ืืื? ืืื ืืขื ืืฉืืง ืขื autoCommit?
ืืื, ืืจืืื, ืืืืคืฆืื ืืื ืื ืฆืคืืื ืืชืืจืจืช ืื ืืื ื. ืืื ืชืืื ืคืชืืื ืืช autoCommit, ืื ืืขืืืจ. ืืื? ืืืืข ืื ืืืืข ืขื ืื.
ืืื ืืืจืืจืช ืืืื, ืื ืืืงืืืืช ืืืชืืืจืื ืืืกื ื ืชืื ืื Postgres ืืืืืื ืืช ืื ืื ืชืื ืื. PgJDBC ืืื ื ืืืฆื ืืืคื ืืืงืฉืจ ืื; ืืื ืืืืจ ืืช ืื ืืฉืืจืืช.
ืืฉ ืืจืืืฆืื ืขื ืขืจืืช ืื ืืฉื FetchSize, ืืืืืจ ืืชื ืืืื ืืืืจ ืืจืื ืฉื ืืฆืืจื ื ืคืจืืช ืฉืืื, ื ื ืืืืืจ ื ืชืื ืื ืืคื 10, 50. ืืื ืื ืื ืขืืื ืขื ืฉืืชื ืืืื ืืช autoCommit. ืืืื ืืช autoCommit - ืื ืืชืืื ืืขืืื.
ืืื ืืขืืืจ ืขื ืืงืื ืืืืืืืจ setFetchSize ืืื ืืงืื ืื ืื ื ืื. ืืื, ืืืฆืขื ื ืืืืจื ืฉืชืืื ืืช ืขืจื ืืจืืจืช ืืืืื ืขืืืจ ืื ืืืืืืจ.
ืื ืื ืฉืืืจื ื. ืืคืจืืืจ ืืืืืจ. ืืื ืงืืืื ื? ืื ื ืืืจ ืกืืืืื ืงืื ืื, ืื, ืืืฉื, ื ืืืจ 10 ืฉืืจืืช ืืื ืคืขื, ืื ืืฉ ืื ื ืขืืืืืช ืชืงืืจื ืืืืืืช ืืืื. ืืื, ืขืจื ืื ืฆืจืื ืืืืืช ืืืืืจ ืืืื.
ืืืืคื ืืืืืืื, ืืืืื, ืืชื ืขืืืื ืฆืจืื ืืืืื ืืื ืืืืืื ืืช ืื ืืืชืื, ืืื ืืืชืืื ืืื ืืื: ืืืืจ ืืช defaultRowFetchSize ืืืืชืจ ืืืื ืืชืืื ืืืืฉืจ.
ืืืื ื ืขืืืจ ืืืื ืกืช ื ืชืื ืื. ืืืื ืกื ืงืื ืืืชืจ, ืืฉ ืืคืฉืจืืืืช ืฉืื ืืช. ืืืืืื, INSERT, VALUES. ืืืื ืืคืฉืจืืช ืืืื. ืืชื ืืืื ืืืืจ "INSERT SELECT". ืืคืืขื ืื ืืืชื ืืืจ. ืืื ืืืื ืืืืฆืืขืื.
ืกืคืจืื ืืืืจืื ืฉืืชื ืฆืจืื ืืืฆืข ืืฉืคื Batch, ืกืคืจืื ืืืืจืื ืฉืืชื ืืืื ืืืฆืข ืคืงืืืืช ืืืจืืืืช ืืืชืจ ืขื ืืกืคืจ ืกืืืจืืื. ืื-Postgres ืืฉ ืชืืื ื ื ืคืืื - ืืชื ืืืื ืืขืฉืืช COPY, ืืืืืจ ืืขืฉืืช ืืช ืื ืืืจ ืืืชืจ.
ืื ืชืืืื ืืช ืื, ืชืืืื ืฉืื ืืืืืช ืืื ืชืืืืืช ืืขื ืืื ืืช. ืืื ืื ืื ื ืจืืฆืื ืฉืื ืืขืืื? ืื ืื ื ืจืืฆืื ืื ืื ืชื ืืื ืืืฆืข ืคืงืืืืช ืืืืชืจืืช.
ืืคืืขื, TCP ืื ืืืคืฉืจ ืื ื ืืขืฉืืช ืืืช. ืื ืืืงืื ืขืกืืง ืืฉืืืืช ืืงืฉื, ืื ืืกื ืื ืชืื ืื ืื ืงืืจื ืืช ืืืงืฉืืช ืื ืืกืืื ืืช ืืฉืืื ืื ื ืชืืืืืช. ืืชืืฆืื ืืกืืคืืช ืืื ืฉืืืงืื ืืืชืื ืืืกื ืื ืชืื ืื ืืื ืืงืจืื ืืช ืืืงืฉื, ืืืืกื ืืืชืื ืฉืืืงืื ืืงืจื ืืช ืืชืืืื.
ืืืื ืืืงืื ื ืืืฅ ืืฉืืื ืืขืช ืืขืช ืืืืืช ืกื ืืจืื. ืืื ืืจืืงืฆืืืช ื ืืกืคืืช ืืจืฉืช, ืืืืื ืืื ื ืืกืฃ.
ืืืื ืฉื ืืกืืฃ ืืืชื, ืื ืื ื ืขืฉื ืืจืืข ืืืชืจ. ืืืจืืืืจ ืื ืคืกืืื ืืืืกืืฃ ืืืชื ืื ืืจืื, ืืขืจื ืืืช ื-200 ืฉืืจืืช, ืชืืื ืืืืื ืืงืืืื ืืื'.
ืงืืจื ืฉืืชื ืืชืงื ืจืง ืฉืืจื ืืืช ืืืื ืืืจื ืคื 10. ืื ืงืืจื. ืืื? ืืจืืื, ืงืืืข ืืื ืืืจ ืืื ืืฉืืืืฉ ืืืคืฉืื. ืืืขืจื "128" ื ืืขื ืื ืืืฉืชืืฉ ืืืฆืืื.
ืืื ืฉืื ืื ื ืืื ืืืจืกื ืืจืฉืืืช. ืืชืืื ืืคื ื ืชืืืืช ืืฉืืจืืจ. ืื ืืืฉืืขืืืืช ืฉืื ื ื ืืชื ืืืืกืกืืช ืขื ืืจืกืืืช ืืืืจื ืืืช.
ืืืื ื ื ืกื ืืช ืื. ืื ื ืืืืืื ืืช InsertBatch ืคืฉืื. ืื ืื ื ืืืืืื ืืช InsertBatch ืืกืคืจ ืคืขืืื, ืืืืืจ ืืืชื ืืืืจ, ืืื ืืฉ ืืจืื ืขืจืืื. ืืืื ืืกืืื. ืื ืืืื ืืืืืื ืืขืฉืืช ืืช ืื, ืืื ืื ืืืื ืื ืื ืคืฉืื, ืืจืื ืืืชืจ ืงื ื-COPY.
ืืชื ืืืื ืืขืฉืืช COPY.
ืืืชื ืืืื ืืขืฉืืช ืืช ืื ืขื ืืื ืื. ืืืจืื ืขื ืกืื ืืจืืจืช ืืืืื ืฉื ืืฉืชืืฉ, ืืขืืจ ืืขืจื ื-INSERT ืืฉืืจืืช ืืืืื.
ืื ืืชื ืคืืชื ืืช ืืงืืฉืืจ: pgjdbc/ubenchmsrk/InsertBatch.java, ืื ืืงืื ืืื ื ืืฆื ื-GitHub. ืืชื ืืืื ืืจืืืช ืกืคืฆืืคืืช ืืืื ืืงืฉืืช ื ืืฆืจืืช ืฉื. ืื ืื ืืฉื ื.
ืืฉืงื ื. ืืืืืจ ืืจืืฉืื ืฉืืื ื ืืื ืฉืื ืืืฉืชืืฉ ืืืฆืืื ืื ืคืฉืื ืืืชื ืืคืฉืจื. ืื ืืคืฉืจืืืืช ืืืฆืืื ืื ืืคืก, ืืืืืจ ืืื ืืืืฆืืข ืืื ืืืขื ืืคืก ืืืฉืืืื ืืืืฆืืข ืื ืคืขืื.
ืื ื ืืื ืืกืื ื ืชืื ืื. ืื ืฉืืืื ืืืื ืคืฉืื. ืฉืืืฉื ืขืืืืื. ืืื ืื ืื ื ืจืืืื ืืื? ืื ื ืจืืืื ืฉืื ืฉืืืฉ ืืืคืฉืจืืืืช ืืืื ืืจ ืืฉืืืื ืืขืจื. ื-COPY ืืื, ืืืืื, ืืื ืืืชืจ.
ืื ืืืฉืจ ืื ื ืืื ืืกืื ืืืงืื. ืืฉืืืจื ื ืฉืขืจื VALUES ืืื, ืฉื ื ืขืจืืื ืฉื VALUES, ืฉืืืฉื ืขืจืืื ืฉื VALUES, ืื ืฉืฆืืื ื 10 ืืื ืืืคืจืืื ืืคืกืืง. ืื ืจืง ืืืคืงื ืขืืฉืื. 1, 2, 4, 128. ื ืืชื ืืจืืืช ืฉื-Batch Insert, ืฉืืฆืืืจ ืืืืื, ืืืจื ืื ืืืจืืืฉ ืืจืื ืืืชืจ ืืื. ืืืืืจ, ืืฉืืื ืืกืื ืืื ืืื ืคืขื ืื ืืคืืื ืืฉืืื ืืกืื ืืจืืขื ืืื ืคืขื, ืื ืืืคื ืืืืืช ืืื ืคื ืฉื ืืื, ืคืฉืื ืื ืืืกื ื ืขืื ืงืฆืช ื-VALUES. ืคืืืช ืคืขืืืืช EXECUTE.
ืืฉืืืืฉ ื-COPY ืื ืคืืื ืงืื ืื ืืื ืืืื ืื ืืืืื. ืืคืืื ืื ืฆืืืจืชื ืืช ืืฉื ืืื ืืจืืฉืื ืื. ืื ืืืืืื ืืื ืขืื, ืืืืืจ, ืืืกืคืจืื ืืืจืืงืื ืืืื ืขืืืจ COPY.
ืืฉ ืืืฉืชืืฉ ื-COPY ืืืฉืจ ืืฉ ืื ืืคืืืช ืืื ืฉืืจืืช ืฉื ื ืชืื ืื. ืืชืงืืจื ืฉื ืคืชืืืช ืืืืืจ ืื ืืื ืืืืื. ืืืืขื ืืืืช, ืื ืืคืจืชื ืืืืืื ืืื. ืขืฉืืชื ืืืคืืืืืืฆืื ืฉื Batch, ืืื ืื COPY.
ืื ื ืขืฉื ืขืืฉืื? ื ืืกืื ื ืืช ืื. ืื ื ืืืื ืื ืฉืขืืื ื ืืืฉืชืืฉ ืืืื ืื ืื ืืืงื ืืื ืืืฉืื ืืกืคืจ ืืฉืืขืืืืช.
ืื ืืืื ืืงืืช ืืืืื ืฉื ืืืื?
- PreparedStatement ืืื ืืื ืฉืื ื. ืื ื ืืชื ืืจืื ืขืืืจ ืคืจืืืืงืืืืืืช. ืื ืืืืฆืจ ืคืืืค ืืืื ืืืฉืื.
- ืืืชื ืฆืจืื ืืขืฉืืช ืืกืืจ ื ืืชืื 6 ืคืขืืื.
- ืืื ืื ื ืฆืจืืืื ืืืื OFFSET 0, ืืืจืืงืื ืืื +0 ืืื ืืชืงื ืืช ืืืืื ืื ืืชืจ ืฉื ืืฉืืืืชืืช ืืืขืืืชืืืช ืฉืื ื.
ืืงืืจ: www.habr.com