á 2016 ááááŞáŤ áá á¨áááľáá á˛áľááŽáá ááᣠ"PostgreSQL áĽá JDBC áááá ááá áĽá¨á¨áá áá" á¨áááá áááŁá áĽáá˛áŤáᥠááłáĽ á áááŁááá˘
áĽáá°áá á á¨ááľá áľá áááľáá á˛áľááŽá ááᢠá NetCracker á 10 áááłáľ áĽá¨á áŤá áá. áĽá á á áĽááá áááłáááľ áá ááᢠá¨á፠áá á¨ááááą ááá áááŽá˝, ᨠSQL áá á¨á°áŤáŤá ááá áááŽá˝ áĽá á¨ááá°á áá.
áĽá áᏠPostgreSQL áĽáá° á¨ááἠááł á áááá áá áá áľáááá á áŠáŁááŤá ááľáĽ áľááá áá ááá áĽáááŤáá. áĽá á á áĽááá á¨ááá°áŤá á¨á፠áá ááᢠáᏠáá á¨ááááá áľá á፠áĽáť á áá°ááᢠáĽáá° ááááľ áĽáá°ááŤáłá¨á, áá á ááá˝ ááááá˝á áá¨á°áłá.
áĽáááááŤáááĄ-
- áľá á¨ááἠááá.
- ááἠáľáááľáááĽá˘
- áĽá áľá á ááááá áĽáá˛áá˘
- áĽá áĽá፠áľáá°áá አá¨áá ááľáĽ áá°áá ááŤáá˝á˘
á ááá áĽáŤá áĽááááᢠá ááá ááá áá°á¨áľ á ááľ á¨áľá á¨á á¨á´áá ááľáĽ áĽááááŁáá.
á¨áá¨á ááą á á°ááłáłá á áľá°ááá áá ááááᢠáĽá áá áá áĽááť 20 ááá°á¨ááśá˝ áááľáłá.
áĽááá 20 ááá°á¨ááśá˝ áĽá áá¸áᢠ100 áĽáá°áá áŤá áĽáŤááá˝ áŤáááľáŁ áĽááá á áĽáŤááá˝ á áá¸áĽáá á á°á¨ááľ áá áŤáłáááᣠáááľá áá áĽáŤáŁá¨áá ááá˘
áá áá ááľá¨á á áááľá áĽá áá°á¨áą ááá áá áĽáá°áá°á á áááá¨áąá˘ áłáłá¤á áĽáŤááá˝á áááľáá¸á áááľ á ááŤáŽá˝á áá°á ááá˘
á¨ááááŞáŤá á ááŤá ááá áĽáŤá áá. áá áĽáŠ ááá á áá? áĽá ááľá°á áĽáááŤáá, áĽá ááá á°á¨á᪠ááá á¨áá.
á¨áá¨á ááą á¨áá áá áá á ááᣠáĽáąá á¨á áá á°ááŽááᣠáá á¨á áá á¨áá°áŤá˘ á¨áá°áá°áᣠá¨ááľáá¸ááŤáŁ á°áááá áá°áŞáŤ ááá° áĽáŤáá á á°ááĽá ááá áá˝ááá˘
áĽá á á¨á°áŤáá áá áá á áá áŁáá ááᣠáá á¨ááá¸ááá ááłá ááᢠáĽá, ááááŁáľ, á¨áá¨á ááą ááľáĽ á¨áá ááá áĽáááááá áĽá á á°áá°á ááአá¨á°áá ᨠá¨áááľ áááá á á, áááľá áá áĽá á¨áááááá áá, áá á áá áĽá á áááĽáá áááľ á¨áááťá áá. áľááá áá áĽáá ááłáá áĽá áááášá á°áá˝ áĽáŤááá áᥠáĽáááŤááá˘
áĽá áĽá ááľá¨á á¨ááá˝áá ááá áá áá áĽá á¨á°áŤáá áá áá ááá˘
á áĽáŤááłááą á ááŤá¨áĽ ááľáĽ áá áአááá á á?
ááá áá áá áá ááľ áá ááľáá¸á፠áĽáŠ ááᢠá áá´ á¨á°á°áŤ áĽá á¨á°á¨áł. áĽá á˝áአá¨áááľáŽá˝ ááἠá áá¸áľá á áá°ááá, áááľá áá ááłááľ á¨áá°á á áááá áľáááśá˝ á°áľáá á áá°áá.
á¨á°áŤáá áá áá - á áá°áá°á áá áĽáá˛ááĽáĄ áŤáľá˝áááłá. áĽá áŤá°á¨ááá áĽá áá áá á¨ááááá áá áá ááᢠáá á áĽáááľ á¨áľáśááᢠá áá°áá°á áá áá áŁáá˝ áĽáť á áá°áá. á ááἠááľá°ááá áá áá áŁáá˝ á áᢠáááĽá á áááľáŽá˝ á áá¸áľ ááľá°ááá á¨á áá áááŁá ááá˘
áá° ááááľ áĽáááľá˘ á¨á°ááá°á áá°áá áŞáŤ áá á áááľááᢠá፠ááá° ááá áá˝ááá˘
ááá፠áá ááᢠáľáááá áááᢠá áἠá°áá á¨á˘ áĽáá áľá á°áą á¨áľ á á? á˝áአáááľá áá? á˝áá á¨áá. á ááá áá˝áááľ ááľáĽ á¨á°ááá¨á áá ááᢠáĽáá˛á áá ááá áŤáá áľá˘ á¨áá°á á ááťá¸á á¨ááá, áĽáá°áá ááťá.
ááá áá ááááľ áĽáá°ááŤáłá¨á áá á áá°áŤá. ááá? ááááŤáąá "á¨á°á á" áá´ á áá. áĽá áá á áľáá°áá á¨áá¨á ááą áĽááł á ááťá á˛á፠á¨áá¨á ááľ áá áĽáá°áá ፠áá ááłáŤáᢠ"PARSE EXECUTE DEALLOCATE" á ááá˘
ááá áá áá á°á¨á᪠ááááŤáá˝á ááá á áĽá ááá¨áľ? ááá á áŤáľáááá¸ááᢠáá áĽááá áá á PreparedStatements ááľáĽ á¨áá¨á°á°á áĽá á ááááá¸á áá áááá ááá á áá¨á ááą ááľáĽ ááááᢠáĽá á¨áááááá áá á áá°ááá˘
áá áĽáá° á¤áá á°áá˝, á¨áá á¨áą áá áááľáŤáľ áĽáááááá. ááááŤá˝áá á ááľ áá ááľá°á á ááá á°áá, á¨ááŤá áĽá áá áĽááľáá˝ááá. á áĽáááą, áĽá áá - áá á á á ááá á¨áá°áá áŞáŤáá˝ á áááľ ááľáĽ á ááľ áá áá - áĽááą á°á°áá°á. áĽá á á°ááŤáŠ RESTs áá á°ááłáłá á¨ááá፠ááłáá፠áĽáá ááááᢠááŁá˝á áá ááá˘
áá áá áĽáá´áľ ááłáŤáľ áĽáá˝ááá?
á áŁá ááá áá - ááááŤáá˝á ááááľ á áŤáľáááá. áĽá áĽáá°áá¨á°áá áĽáá˝ááá: "á ááá " "á áľáá˝á".
áĽáá°áá á áááľ ááá á¨áááá, á¨áá ááá á¨áá áŚáł áĽáá°áááľ ááá˝ áá. ááá˝ áŤááá, ááááŠáľ áá˝áá. áá á ááá áá´ á¨áá áá á¤áá˝ááá áĽáááᢠááá፠ááá áŠá˘ á á ááłááľ á¨ážáአáĽáŞáľ áá áĽááľááá¨ááá áĽá áĽáą áŤááá áá á°á¨ áľááľáł á áá á ááŁáľ á ááĽááľ áá ááťáá˘
áĽáá°ááá áŤá áľá á°áśá˝ á ááá áĽáá°ááľá°áŤá¨á ááá˝ áá. áľáááą á áááŤáᢠáĽá áá áĽááá á á˛áą áľáŞáľ á áŁá á ááĽááľ áá°áŤá. áá´á ááááľ áá, áá á ááá.
á áľááá áĽáá´áľ ááĽáŤáľ áĽáá°ááťá? ááá áá ááľá¨á á ááĽá?
áĽáá° áĽáááą á¨áá, áááá¨áťáá˝ áááá ááááŤáá˝á áááá. á ááá áá˝ááá˝ ááľáĽ ááááľ ááá, á áá áá፠áľááľáłá áááľáłá.
áĽá PostgreSQL áĽáá´áľ áá ááá˝á áá¸áἠáĽááłáá áľ á áŤáá áᢠáĽáŤááłááą ááá áá áá áá áá¸á፠ááŤáą áĽáá˛ááĽá á áľááá áá.
áĽá á áá°áá°á áá ááŁá¨á á áááááá˘
áĽá áĽáá°á°ááá°á áááľ á ááŤáŽá˝ á áá.
á¨ááááŞáŤá á ááŤá áĽáááľáłáá áĽá áááá ááá á PgSQL áĽáá á ááá áĽááááᢠáĽá፠áá¸á፠á á. áááá ááá ááááᢠá áŁá áĽáŠ áááá. áá áá á áá°ááᢠ100500 áĽáŤááá˝ á ááᢠá áá°áŤá. áĽáŤááá˝á á áĽá áá° áá°áľ áááá¨á á áá°áľááááᢠá áá°áá á áá°áá.
ááá°á á ááŤá á áá - ááá°áąáľ áĽá áĽáŤáłá˝áá ááá¨áĄ. áááŽášá áĽáá¨áá°ááá áĽá ááá¨áĽ áĽááááŤáá. á áá°áá á áá°ááᢠáá á áááľá¨á áŤá áŤá á á áľá¸á᪠áĽááłááá áłááá˘
áá á ááá´ 2015 áłá¨á˘ á áá á¨á áá áááá áľáŞáľ á á. áĽá ááá ááá á áŁá áĽáŠ áá. á áá°áá áŞáŤá ááľáĽ ááá ááá áľáááááἠá áŁá áĽáŠ áá°áŤáᢠáĽá á PgSQL á á áŁáŤ áá°áĽ á ááááᣠáááľáᣠáááá ááŞáá˝ áá° áᎠáááľá¨áľ áá á á áá áá˘
á áá áá á¨áľ á áĽáŤááłááą á¨á ááľ áá áĽáŤá á áłáłá¤á ááľáĽ áá á°á¨ áľááľáłá ááááŁá¨á á á áááá á¨á°ááá ááááŤáá˝ á 5 áá á áááá áá ááááłááłá.
áá áá áá˝áá - ááĽáŽáš á¨áľ áá¸á? áá áĽáŤááá áá? áĽá áĽáá ááĽáŽá˝á á áá°áĽá, ááááŤáąá áĽáŤááłááą áĽáŤá á¨áŤáą á áá.
áĽáŤáááťá˝á á OLTP áá ááá˝ áá ááá°áá°á 20 ááá°á¨ááľ áŤá á á᪠á áľááááᢠáá áááá 0,5 ááá°á¨ááśá˝áŁ ááá°áá°á 20 áá á°á¨ááľ áá áᢠáĽáŤá - 10 áŞá˘ á˝áá, 170 á¨áĽá áľ ááľááŽá˝. áá á¨OLTP áĽáŤá ááᢠ1, 5, 10 ááľááŽá˝á áá ááá, á ááłáá´á á°á¨ááŞ.
áá 20 ááá°á¨ááśá˝á á ááŤá˝ ááŁá¨á á ááááááᢠáá° 0 áá á áľáááááᢠááá ááá áĽáŠ ááá˘
á¨áá áá ááá°áľ áá˝áá? á፠áŤáááľ á¨á á˝á¨ááŤáŞáá áááá áľáŞáľ ááľá°á á°áľ áá áá á˘
á¨á°áᨠááá á¨áááአá¨áá áŤáľáĄ - ááááŁáľ áĽááľáá áŤáľáááááłá? ááááŤáąá á¨áá¨á¨áťá ááá á ááťá áááłáᥠPL 8 ááá LibPQ áŤáá ᥠáá ááťá¸á áłááá ááá°áá°á áá áĽáá°ááłá á áá áá° ááá˝ á áá°ááᥠáá á°áá ááá°á˝ á°áᢠááᢠáĽáá´áľ? ááá ááá áá ááá˘
áľá á°áśá˝ áĽá á ááłááľ ááŠááśá˝ á¨áááŤá¸á á áľá°ááᢠáĽá á áá áľááĽááą áĽáááááŤáá. á áĽááá áľá á˘áá°áľáľáŞ á ááŞáŚááᣠáľáááááᣠáľááá áá ááá ááááá˘
áĽáŤáá á á°ááááááľ á¨á°áá á¨á˘ áŤááĽáá. á ááľ á°á áááąá á ááľ áá á ááŁá á ᨠSQL áĽáŤáá áŤáľá¨áľááá˘
áĽáą ááĽá á¨ááá ááááľá áá? ááĽá áá ááááŤáąá á áĽáŤááłááą áá á á°áᨠááĽá¨ááá áľáááá¨ááľá˘
áĽá á¨áá á¨á°áᨠááĽá¨ááá áá˝áŽáľ áĽáá°áá ááá ἠá áá áľá˘ áá á áĽáááą á¨á˛áአá°ááŁá áá - á¨á á á¨áĽáŤá á˝áá á áá áŁáá áá˝ ááľáĽ ááááľ ááá á áá°ááᢠáľááá , áá°áá°ááŤá ááá áá - áĽáŤááá˝á á áŤáááŠ. á á ááľ á°áááá ááľáĽ áŤáľááá§á¸á. á°áľ áá áá˝áá˘
ááŁá á˝áá. á¨ááἠááááśá˝ á áľááá áá¸á. ááá á áááľ NULL ááá ááἠá áŤááŁá á¨áá ORMs á áᣠá ááłááľ á áááľ áááᢠá˘ááľ á¨ááᣠá¨ááŤá setInt áĽááááᢠáĽá NULL á¨ááᣠááá VARCHAR áááᢠáĽá áá¨á¨áť áá NULL áá ááἠáŤááŁá? á¨ááἠááłá áŤáą áááá ááá áá¨áłá. áĽá áá áľáá á áá°áŤá.
á á°ááŁáᣠá¨áá¨á ááą ááá ááľ á áá°á ááᢠáá ááĽá áá áĽáá áááááŞáŤ áá á¨á°ááአáĽá áááá°á áá VARCHAR áĽáá°áá á¨á°ááአá á áááá á¨á°ááá ááááŤáá˝á áĽáá°áá áá áá á ááťááᢠáĽáá á áá áááł, á¨áĽáá ááá፠áĽáá°áá ááá á á ááĽá.
á°ááłáłáŠá áá áá áĽá¨ááá á¨áá á á ááľá ááľáĽ áŤááľ á¨ááἠá áááśá˝ á፠áááŁáłá¸áá áŤá¨áááĄá˘ á NULL áá ááá á ááĽá ᢠReadyStatements áá áá á¨áááá á áá áá á¨á°ááá° áľá á°áľ ááá˘
áĽáş á ááˇá ááááŁáľ ášááŠá ááľá°á áááá. áĽá áááłáááľ áááˇáᢠáááŽá˝ ááĽá ááááá˘
áá áĽáá´áľ áááá? áá áľá á°áľ áá áááľ áŁá áŞ? áĽáá° á áááłá°á áá áá áľá á°áľ ááá áŁá ᪠áááá ááá¨áłáľ á áá°áťááᢠáá áá áá á˝áá áĽáá°áá áááŤáŁáľ á áŁá ááá á¨áá áááł á á. áĽáˇ áá á áá áŁáá°á á á áááł á áľááŁáá˝á˘ áĽá áĽáą á ááĽáł á¨á ááľ á á¨á´á áá ááááá˝á áŤáŤáľáłá. áĽá á áĽááἠáĽá áĽáá°áá áŤá áĽáŤááá˝ áá áŠáᢠáĽáá° á ááľ á°áἠáááľ ááá áśáľáľ á°áá á¨áŚá˝á á áŤá°áá, ááá áá áĽáá°áá á áááľ á¨áááś ááŤááľ áááł á á. áááááá áľáŞáľ á¨ááἠááłá ááá°áą áĽá áŤáŤááąáľá˘
ááĽáĄ áááľ áááśá˝ á áá, áĽáŤááłááłá¸á á áááá˝ áá¸á. á á ááľ NULL á ááľ ááľáĽ á ááľ áááŽá á¨áľáá˝ á áᢠáĽá ááá°áá á ááľ 20 ááľááŽá˝á áĽáť ááá. áŤááá°áĽ á°ááááŽá˝ áľááá˝á ááá ááá á á°áἠáá°áŤáá˘
á á°á á¨á á°ááááŽá˝ áááá á¨áááá áááľá "?" ááá "$1" ááĽáŤááŤá˝áᣠáá áĽáŤááá áá?
á¨ááááŞáŤá á áááá áĽáá°á°á á áá áá. ááá°áá áľáá˝ ááŁá áá. á¨áá ááá á°á°áĽá áá áᢠáŚáľá°á ᣠá áŤá°á ᣠá ááľá°áᢠá¨á፠áŁáá - áĽá áĽáá°áá áŤá áááᢠáĽá á áŁá ááĽáá ááá áá á áľáľáľá°áá ááľáŤ áá áá. áľááááá á¨á áááá áĽá áľ áá áĽáá°áá ááá¨áłáľ á áľááá áľáľáľáľ ááľáŤáá˝á ááľá¨á á áľááá áááá áá áŤááá?
áĽáá°á áá áá? áá áá? á¨áá¨á ááą áááťá¸áľá áááᢠáĽá áá á ááá ááłá á¨á°ááťá¸ áááľááᢠáĽá á áá áá°á¨áľáŁ á¨á°áá°á áá áááŽáŁ áá° á á ááá áĽá áľ áľáááŤáá˝áŁ áá á á ááŤáłáá áááłáŁ á¨á°áᨠááá áá˝ááᢠáá° á°ááłáłáááľ áááἠáá˝áá, ááá á¨á°áᨠááá áá˝áá. áĽá áá°áá áŁá ᪠á¨áá፠á ááľ ááááľ á¨áááť áĽá´áľ á áá˘
áľááą áá ááľá¨á áá˝áá? áĽáá ᣠá áĽááἠᣠáááááá ááá ááááľ á¨á áá á¨áŁáľ ááᢠá¨ááá ááá ááá áááľá á á. áá +0 áá, OFFSET 0. á áĽááá áááľ áĽáá°áá á áááľ áááľááá˝á áŤááá. áĽá áĽáť áĽáááľáłáá áĽá áá° áĽáŤáá "+0" áĽáá¨ááŤáá áĽá ááá ááá á°á á áá. á áá á áłááááá˘
áĽá áá á ááŤá á á - áĽá áśášá á áĽááá áááá¨áą. ááá˘á áĽáŤáá ááťá áĽáť áłááá "áľáá°á ááĽáŤáŤáľ" 6 áá áááá á áá áľ. 5 á¨áá á áá°áŤáá˘
áĽá áśáľá°á á ááŤá á á - á pgsql-hackers á°áĽáłá¤ ááťá. á˝á áá áᣠáááᣠáá áľá á°áľ ááá áŁá ᪠áĽáá°áá áĽáľáŤáá ááá˝ á áá°ááá˘
áá áľá á°áľ ááá áŁá ᪠áááá áĽáŤá°áĽá áłáᣠáĽááľá°áŤáááᢠáĽáŤááŤá˝áá áĽááá°áľ áĽá "+0" áĽáá¨ááᢠáá ááá áĽáŠ áá. áááľ ááááśá˝ áĽá áĽáá´áľ áĽáá°áá ááá áá áĽáá°áá áĽááłá áá°áĽ á áŤáľáááááľá. á áŁá áááᢠá¨áá¨á ááą á ááá á áá á ááľ áá á˘áá´ááľ áĽááłáá áá á¨áááááᢠá "+0" á ááľ áá á˘áá´ááľ á¨ááá áĽá ፠áá, á¨ááἠááł áá¨á á áááá á áá ááá, ááá ááá áĽáŠ áá.
áá á°áἠáá 6 áŤáĽáŤáŠ. á áá á á áá áľáŞáśá˝ ááľáĽ á¨áłá°áŠ á°áááááá˝ áŤá 6 áá ááľá¨á á ááĽááľ. á¨áłá°áŠ á°ááááŽá˝ á¨ááááľ áĽá á¨ááá°ááá áá ááᢠáĽá á áá¨á¨áťá áá áĽáŤá á áľááá á áá°áłáŤá. á°ááŽáá ááá á áá°ááá˘
á¨áááľáá áá áŤá á ááťáá? áĽáá á ááľ áłááŤáŁ áĽááŤá áľá á°áľá˘ á áĽááṠᣠáľá á°áą á ááá áŚáł á áá˘
áĽáľá˛ á áá áĽáá áĽáááááᢠáááłá, áááľ áĽá áśá˝ á áá. áĽá áľ A á¨á áá á¨áĽ S áĽá á˛áŤááŤá B á¨á áá á¨áĽ S ááᢠáá áá - á¨á á¨á´á áá ááἠááá¨áĄ. á áá ááłá áá áá ááá¨áá? áľá á°áľ ááá¨ááᢠá¨áá áŤááľ áá áááŠáá. á°áᥠ- áľá á°áľ á ááá áŚáł á á, á¨áá áŤááľ áá áááŠáá.
á áá áĽáŤáá "ááá?" ááľá áŤáá á°áá á¨áĄá á¨áľ áĽáá°ááááá á¨áááá¨á "á¨ááá_áąáŤ" á°áááá áĽááłá á¨ááŤáłá á°ááľ áŤá áááľááᢠá°áááá áŤá áááľááá˘
á˝áአáááľá áá? á˝áአá á áááá-á¨á°ááá ááááŤáá˝ á¨ááá_ááááľ á á ááľ á°á ááá¨á áĽáá°áá˝á á áá áŤá áŠáᢠáá áá áĽáá° á¨ááἠááł áá áá áááŤáᢠáĽá á ááłááľ áááá˝ á á˛áľ áľááá ááŤáá áá˝ááá˘
á áĽááἠáá áĽááľá á ááááŠá áľ áľáŞáľ áá ááá°áá. á¨áĽááľá á á¨á´ááá˝ áá áŤá á á áá ááá áĽáá°áááŤáŠ ááá°ááᢠáĽá áľáŞáľ 9.1 á ááá á¨áľáŽ áá ááá˝á áŤáľáá˝áá. á á˛áľ áľáŞáśá˝ áľá á°áąá ááá áĽá áľá á°áľ áĽááłáááľ ááááŠááľ áá˝ááá˘
áĽáá´áľ áá¨á ááťáá? ááá á¨ááἠá áááááľ áááŞáŤ á á - á áłáľáá. á áááŹá˝á áĽá¨á°áŤ áĽáŤá á¨ááá_áąáŤ ááá¨á á áŤáľááááᢠá¨áá¨áŠ, á á˛áľ áááááľ ááá á á¨á°áťá áá.
áááŤá¨áľáŁ áááľá ááááľáŁ áááŤá¨áľáŁ áá°áá áá˝ááᢠááááŁáľ á ááľ á°á áĽá´áľ á˛ááá á¨ááἠááłá áľááá ááłá áá°áá áá áááá áĽááłáá áľ á¨ááἠááł á áááášá áááłáá áĽáá˝ááááĄ- âáĽáá á¨áĽááľá áá áĽáá á°ááááᢠááááŁáľ ááááŤáášá áĽáá°áá áááá á áĽá áĽáá°áá ááá á áŤáľáááááłá? á áá á¨áá¨á ááą á áľáĽá áá áŤá áĽá ááááŤááš á ááľáŁá¸á á¨áá áŚáł áĽáá°á°áá¨áŠ á ááá ááááľ á ááááĽáá˘
áĽá áĽáá°áá á á áááľ áĽá°áŁáá - áá áá፠á¨á°ááá° áŤááá ááá áá. á PL/pgSQL á ááľ áá ááľ áĽááŤááᢠáá áĽá፠ááŤáŁá.
á ááłááľ á°á¨á᪠á¨ááἠáááŤá áĽááááᢠáĽááááŁáá áĽá áĽááááŁáá. á ááľ áááŽá á¨áľáá˝ áŤáá á á¨á´á á ááᢠáĽáŤááłááą ááľáá áŞááŁááľ ááᢠá áááľ á ááľ áááŁááľ áááĽá˘ áĽá á 128 áááŁááľ á á፠áá˝á ááľáĽ á¨áá°áŤ áá á°á¨ áľááľáł á áá.
áĽá á ááá áá˝ááá˝ áá áĽáá°á°áá¨ááá á¨áĽá¨áľ áá°áľá áĽáá ááááᢠáááľá resultSet á á¨áá°á áááĄá á áĽááą áĽáááŁááᢠáá ፠ááá? á¨ááľáłááľ áááľáá? áľáá˝ áłááŁáá ? á áłáłá¤á áĽááłááᣠá ááľáľááŹáľ áĽááłááᢠá ááááᢠá¨áá᪠á᪠áĽáááľááá? OutOfMemory áá á áá áá? á¨á፠á áá ááá ááľá°áŤá¨á á¨áťáá? á ááľ á°á ááľá°áŤá¨á á˝ááá˘
á ááľ áááŽá á¨áľáá˝ áŤáááľ ááá¨áĽ áĽá ááá¨áĽ áĽáť á áá˝ááᢠOFFSET/LIMIT áŤáľááááᢠááá á ááŤá áá áá? áĽá á á ááśáŽááľ ááŤááľ á¨áá°ááá ááá?
áĽáá ᣠáĽáá°á°ááá°á ᣠá áŁá áŤáá°á á áá á ááŤá áľááá ááááᢠáĽá á áľáááľ autoCommit á áŤá ááľ áá¨áłáᢠááááľáá? áłáááľ áľááá ááłá á áŤáá áá˘
ááá áá á ááŁáŞááľ á¨ááľáľááŹáľ áłáłá¤á áá á¨áááá ááá á°áá áá˝ áááá ááἠáŤááŁá. PgJDBC á áá á¨ááľ á¨á°áᨠá áá°áá, áááá á¨áľáá˝ ááááŁá.
á FetchSize ááĽáĽ áá ááŠááľ á áᣠáááľá á á°áᨠááá፠á°á¨á áááľ áľá˝ááá áĽáá ᣠáĽáŁáá ááἠá 10ᣠ50 áá¨áĽá˘ áá á ááśáŽáá˛áá áĽáľááłá á áľá¨áľ áá á áá°áŤáᢠAutoCommit á ááˇá - ááľáŤáľ ááááŤáá˘
áá á áŽáą ááľáĽ ááá áĽá setFetchSizeá á á¨áŚáłá áááá á¨áááá˝ ááᢠáľááá ᣠááááááą á áá ááŁáŞ áá á¨áááá˝ á ááĽá á á°á¨ááá˘
áá áŤáááᢠáááŞáŤá á°áá áŻáᢠáĽá áá á ááá? á ááľá°á áá á á¨áá¨áĽá, áááłá, á á ááľ áá 10 á¨áľáá˝á á¨áá¨áĽá, á¨ááŤá á áŁá áľáá á¨áľáá ááŞáá˝ á áá. áľááá , áá áá áá° á ááľ ááś áá°á áááἠá áá áľ.
á ááłáĽ á°á¨á ᣠá áĽááἠᣠá ááá á áŁááľ áĽáá´áľ áĽáá°áááľáĄ ááá á ááĽáᾠᣠáá á¨ááἠá áááááą áá ááᥠááŁáŞ RowFetchSize á á¨á ááľ ááś á áá áŤááá áĽá á°áľá°á áááá˘
áá° ááἠááľááŁáľ áĽáááľá˘ ááľááŁáľ ááá áá, á¨á°ááŤáŠ á ááŤáŽá˝ á á. áááłáᣠINSERTᣠVALUESᢠáá áĽáŠ á ááŤá ááᢠ"áá¨áĽ á áľááŁ" áááľ áľá˝ááá ᢠá á°ááŁá áá á°ááłáłá ááá áá. á á áááá ááľáĽ ááá ááŠááľ á¨áá.
áá˝áááľ á¨áŁá˝ ááááŤá ááľáá¸á áĽáá°ááŤáľáááá ááááŤáᥠáá˝áááśá˝ áĽá ááľáĽáľáĽ áľáááá˝á á á ááŤáł á áá áááá áĽáá°áá˝á ááááŤáᢠáĽá Postgres á áŁá áĽáŠ áŁá ᪠á áá - COPY ááľá¨á áá˝áá ᣠáááľá á ááĽááľ áŤáľáááľá˘
á¨ááŤá, áĽáá°áá á ááłááľ á áľá°áłá˝ áááśá˝á ááľá¨á áľá˝ááá . áá áĽáá´áľ áĽáá˛á ፠áĽáááááá? ááá°áá°á áĽá á ááľááá áľáááá˝á ááááá¸á áĽáááááá.
á á°ááŁáᣠTCP áá áá áĽááľáá°áá á ááá áľáááᢠá°áá áá áĽáŤá á ááá á¨á°á áá°áŁ áłáłá¤á ááĽá ááážá˝á áááá á˛ááá áĽáŤááášá á áŤááĽáᢠá¨áá¨á¨áťá áá¤áľ á°áá áá áĽáŤááá áááá ἠá¨ááἠááłáá áá áĽáá, áĽá á¨ááἠááłá á°áá áá ááášá áĽáá˛áŤáἠáá áĽáá.
áĽá áľááá á°áá áá á á¨ááá á¨áááłá°á ááŹáľ áááá ááá°áłáᢠá°á¨á᪠á¨á ááłá¨ áá¨áĽ ááľá°ááĽáᣠá°á¨á᪠áá ááŁá¨áá˘
áĽá áĽááąá á á¨ááá áá á, áĽá¨áŁá° áááłá. ášáአá áŁá á°áľá á áľááŤá áá áĽá áĽá áá áŤááá¸ááᣠá á¨200 ááľááŽá˝ á ááľ ááᣠáĽáá° á¨ááľááŽáš áá áᣠááá°.
á ááľ ááľáá áĽáť áŤá¨á áĽá ááá ááá 10 áá áŤááĽáááᢠáŤááĽáá. ááá? áĽáá°á°ááá°á, áĽáá°áá áŤá áá á¨áá áŚáł á áľááľá áĽá á áá ááá. áĽá áĽá´áą "128" áááľ áľáá á ááá áá áááľ áá.
áá á áááá áľáŞáľ ááľáĽ á áááŤá°áą áĽáŠ ááᢠáááá á¨áááአá ááľ á°áááˇáᢠáĽá á¨áá°áŁá¸á ááá áľáááá˝ á áááá áľáŞáśá˝ áá á¨á°áá°á¨áą áá¸á.
áĽáľá˛ áĽáááá¨áᢠInsertBatch á ááá áĽáááŤááᢠInsertBatchá áĽá áá áĽáááŤááᣠáááľá á°ááłáłá áááᣠáá áĽá áĽá´áśá˝ á áᢠá°ááŽáá áĽáá áľáá´á˘ ááá á°á áá á ááľá¨á á áá˝áá, ááá áá á áŁá ááá áĽáá áľáá´ áá, ᨠCOPY á áŁá ááá áá.
COPY ááľá¨á áá˝ááá˘
áĽá áá áá á ááá áŽá˝ áá ááľá¨á áá˝áá. á¨á°á áááá ááŁáŞ á áááľáŁ áľááľáá ááá áĽá á ááĽáł áá° á á¨á´áá á áľááŁá˘
áááŠá á¨á¨ááąáĄ pgjdbc/ubenchmsrk/InsertBatch.javaᥠáá áŽáľ á GitHub áá ááᢠá á°áá áĽá፠áá áĽáŤááá˝ áĽáá°ááá አáá¨áľ áá˝ááᢠááá á˝áá á¨ááá.
ááááᢠáĽá á ááááŞáŤ á¨á°ááááĽáá áŁá˝ á ááá áá á ááá á¨áááťá ááᢠááá á¨ááŁáá፠á ááŤáŽá˝ áᎠáá¸á, áááľá á¨ááľáá¸á፠áá á¨á ááľ áá á áááá áá á˛ááťá¸á á á°ááŁá áᎠáá.
ááἠá áľááŁá. á áŁá ááá á á¨á´á áá. áśáľáľ áááśá˝. áĽá áĽáá áá áĽááŤáá? áĽááá áŚáľáąá á ááŤáŽá˝ á áááľ á°ááŁáŁá áááá¸áá áĽááŤááᢠáĽá COPY á áĽááἠá¨á°áťá ááá˘
áááĽáŤáŽá˝á áľááľáᣠááᢠá ááľ VALUES áĽá´áľáŁ áááľ áŤááŠá¤áľ áĽá´áśá˝áŁ áśáľáľ áŤááŠá¤áľ áĽá´áśá˝ áľáá ááá 10 áąá á áá á á°á¨á á ááááᢠáá á áá á ááľá ááᢠ1, 2, 4, 128. á á°ááŤá ááá á¨á°ááłá áŁá˝ á˘áá°ááľ á áŁá áĽáŠ áľááľ áĽáá˛á°áá áĽáá°ááŤá°áá áá¨áľ ááťáá. áááľáᣠá ááľ á á ááľ áľáłáľáᥠááá á áŤáľ á á ááľ áľáłáľáᥠáĽááłá á áĽáĽá áá ááŁáᣠááááŤáąá áľáá˝ á°á¨á᪠áá° VALUES áľáá¨á áĽá áĽáť ááᢠáŤááą EXECUTE áľáŤáá˝á˘
COPYá á áľááá˝ áĽáŤáá˝ áá áá áĽá á á áŁá á°áľá á°áŞ ááᢠá ááááŞáŤááš áááą áá áĽááłá á ááłááŠáᢠáá° ááááĽá° á°ááŤáľ áááłáᣠáááľáᣠáĽááá á á¨ááá´ ááĽáŽá˝ á COPYá˘
á˘áŤááľ ááś á¨áľáá˝ ááἠá˛ááááľ COPY áĽá á áá ááá á áá áľá˘ áá áá áááááľ á¨ááááą á¨áááá áŤá áľáá áá. áĽá, áĽáááąá ááááá, á áá á á áŁáŤ á áááááŠá. áŁá˝ á ááťá˝áťááᣠáá áŽá á áá°ááá˘
ááĽá áá áĽáá°áááá? ááá¨áááᢠáĽá áľáááá˝á á¨ááŤáŁáá á ááááŽá˝á ááá áĽáá ááłá á˘áŤá áá áá áĽááłááĽá áĽáá¨áłááá˘
á¨áᏠááᣠáá ááá°áľ á ááŚáľ?
- á¨á°ááá ááá፠á¨ááá˝áá ááá ááᢠáá ááááłáááľ áĽá áá°áŁá. á á áŁáľ ááľáĽ áľáá ááá áááĽáŤá.
- áĽá 6 áá ááĽáŤáŤáľ áŤáľáááááłáá˘
- áĽá á¨áá¨áá á¨á˝áá áá áááťá˝áá á ááśá áááľá°áŤá¨á OFFSET 0á áĽá áĽáá° +0 áŤá áá´áá˝á áá°áĽáá á ááĽáá˘
ááá: hab.com