ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ืขืจ ื‘ืึทืจื™ื›ื˜ ื’ื™ื˜ ืขื˜ืœืขื›ืข ืึทืคึผืจืึธื•ื˜ืฉื™ื– ื•ื•ืึธืก ืœืึธื–ืŸ ืžืึธื ื™ื˜ืึธืจ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ SQL ืงื•ื•ื™ืจื™ื– ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ืžื™ืœื™ืึทื ื– ืคื•ืŸ ื–ื™ื™ ืคึผืขืจ ื˜ืึธื’, ืื•ืŸ ืขืก ื–ืขื ืขืŸ ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ ืžืึธื ื™ื˜ืึธืจืขื“ PostgreSQL ืกืขืจื•ื•ืขืจืก.

ื•ื•ืึธืก ื˜ืขื›ื ื™ืฉ ืกืึทืœื•ืฉืึทื ื– ืœืึธื–ืŸ ืื•ื ื“ื– ืฆื• ื™ืคื™ืฉืึทื ื˜ืœื™ ืคึผืจืึธืฆืขืก ืึทื–ืึท ืึท ื‘ืึทื ื“ ืคื•ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข, ืื•ืŸ ื•ื•ื™ ืงืขืŸ ื“ืึธืก ืžืึทื›ืŸ ื“ื™ ืœืขื‘ืŸ ืคื•ืŸ ืึท ืคึผืจืึธืกื˜ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื’ืจื™ื ื’ืขืจ?


ื•ื•ืขืจ ืื™ื– ืื™ื ื˜ืขืจืขืกื™ืจื˜? ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ืคึผืจืึธื‘ืœืขืžืก ืื•ืŸ ืคืึทืจืฉื™ื“ืŸ ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ื˜ืขืงื ื™ืงืก ืกืงืœ ืงื•ื•ื™ืจื™ื– ืื•ืŸ ืกืึทืœื•ื•ื™ื ื’ ื˜ื™ืคึผื™ืฉ ื“ื‘ืึท ืคึผืจืึธื‘ืœืขืžืก ืื™ืŸ PostgreSQL - ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ืœื™ื™ืขื ืขืŸ ืึท ืกืขืจื™ืข ืคื•ืŸ โ€‹โ€‹ืึทืจื˜ื™ืงืœืขืŸ ืื•ื™ืฃ ื“ืขื ื•ื ื˜ืขืจื˜ืขื ื™ืง.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)
ืžื™ื™ืŸ ื ืึธืžืขืŸ ืื™ื– ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื•, ืื™ืš ืจืขืคึผืจืึทื–ืขื ืฅ ื˜ืขื ืกืืจ ืคื™ืจืžืข. ืกืคึผืึทืกื™ืคื™ืงืœื™, ืื™ืš ืกืคึผืขืฉืึทืœื™ื™ื– ืื™ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคื™ืจืžืข.

ื”ื™ื™ึทื ื˜ ืื™ืš ื•ื•ืขื˜ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ื™ ืžื™ืจ ืึทืคึผื˜ืึทืžื™ื™ื– ืงื•ื•ื™ืจื™ื– ื•ื•ืขืŸ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• "ืงืœื™ื™ึทื‘ืŸ ื‘ืึทื–ื•ื ื“ืขืจ" ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ ืึท ืื™ื™ืŸ ืึธื ืคึฟืจืขื’, ืึธื‘ืขืจ ืกืึธืœื•ื•ืข ื“ื™ ืคึผืจืึธื‘ืœืขื ืžืึทืกื™ื•ื•. ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ืžื™ืœื™ืึทื ื– ืคื•ืŸ ืจื™ืงื•ื•ืขืก, ืื•ืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืขื˜ืœืขื›ืข ืึทืคึผืจืึธื•ื˜ืฉื™ื– ืฆื• ืœื™ื™ื–ื•ื ื’ ื“ืขื ื’ืจื•ื™ืกืŸ ืคึผืจืึธื‘ืœืขื.

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื˜ืขื ืกืึธืจ ืคึฟืึทืจ ืึท ืžื™ืœื™ืึธืŸ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืงืœื™ื™ืึทื ืฅ ืื™ื– VLSI ืื™ื– ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ: ืคึฟื™ืจืžืข ื’ืขื–ืขืœืฉืึทืคื˜ืœืขืš ื ืขืฅ, ืกืึทืœื•ืฉืึทื ื– ืคึฟืึทืจ ื•ื•ื™ื“ืขื ืงืึธืžื•ื ื™ืงืึทืฆื™ืข, ืคึฟืึทืจ ื™ื ืขืจืœืขืš ืื•ืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื“ืึธืงื•ืžืขื ื˜ ืœื•ื™ืคืŸ, ืึทืงืึทื•ื ื˜ื™ื ื’ ืกื™ืกื˜ืขืžืขืŸ ืคึฟืึทืจ ืึทืงืึทื•ื ื˜ื™ื ื’ ืื•ืŸ ื•ื•ืขืจื›ืึทื•ื–ื™ื–, ... ื“ืึธืก ืื™ื–, ืึทื–ืึท ืึท "ืžืขื’ืึท-ืงืึทืžื‘ื™ื™ืŸ" ืคึฟืึทืจ ื™ื ืึทื’ืจื™ื™ื˜ื™ื“ ื’ืขืฉืขืคื˜ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’, ืื™ืŸ ื•ื•ืึธืก ืขืก ื–ืขื ืขืŸ ืžืขืจ ื•ื•ื™ 100 ืคืึทืจืฉื™ื“ืขื ืข ื™ื ืขืจืœืขืš ืคืจืื™ืขืงื˜ืŸ.

ืฆื• ืขื ืฉื•ืจ ืึทื– ื–ื™ื™ ืึทืœืข ืึทืจื‘ืขื˜ ืื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ื ืึธืจืžืึทืœื™, ืžื™ืจ ื”ืึธื‘ืŸ 10 ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขื ื˜ืขืจืก ืื™ื‘ืขืจ ื“ื™ ืžื“ื™ื ื”, ืžื™ื˜ ืžืขืจ ืื™ืŸ ื–ื™ื™ 1000 ื“ืขื•ื•ืขืœืึธืคึผืขืจืก.

ืžื™ืจ ื”ืึธื‘ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ PostgreSQL ื–ื™ื ื˜ 2008 ืื•ืŸ ื”ืึธื‘ืŸ ืึทืงื™ื•ืžื™ืึทืœื™ื™ื˜ื™ื“ ืึท ื’ืจื•ื™ืก ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ื•ื•ืึธืก ืžื™ืจ ืคึผืจืึธืฆืขืก - ืงืœื™ืขื ื˜ ื“ืึทื˜ืŸ, ืกื˜ืึทื˜ื™ืกื˜ื™ืฉ, ืึทื ืึทืœื™ืกื™ืก, ื“ืึทื˜ืŸ ืคึฟื•ืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืกื™ืกื˜ืขืžืขืŸ - ืžืขืจ ื•ื•ื™ 400 ื˜ื‘. ืขืก ื–ืขื ืขืŸ ื•ื•ืขื’ืŸ 250 ืกืขืจื•ื•ืขืจืก ืื™ืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข ืึทืœื™ื™ืŸ, ืื•ืŸ ืื™ืŸ ื’ืึทื ืฅ ืขืก ื–ืขื ืขืŸ ื•ื•ืขื’ืŸ 1000 ื“ืึทื˜ืึทื‘ื™ื™ืก ืกืขืจื•ื•ืขืจืก ื•ื•ืึธืก ืžื™ืจ ืžืึธื ื™ื˜ืึธืจ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

SQL ืื™ื– ืึท ื“ืขืงืœืึทืจืึทื˜ื™ื•ื•ืข ืฉืคึผืจืึทืš. ืื™ืจ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื ื™ืฉื˜ "ื•ื•ื™" ืขืคึผืขืก ื–ืึธืœ ืึทืจื‘ืขื˜ืŸ, ืึธื‘ืขืจ "ื•ื•ืึธืก" ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ. ื“ื™ DBMS ื•ื•ื™ื™ืกื˜ ื‘ืขืกืขืจ ื•ื•ื™ ืฆื• ืžืึทื›ืŸ ืึท JOIN - ื•ื•ื™ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ื™ืŸ ื˜ื™ืฉืŸ, ื•ื•ืึธืก ื˜ื ืึธื™ื ืฆื• ืึธื ื˜ืึธืŸ, ื•ื•ืึธืก ื•ื•ืขื˜ ื’ื™ื™ืŸ ื“ื•ืจืš ื“ื™ ืื™ื ื“ืขืงืก, ื•ื•ืึธืก ื•ื•ืขื˜ ื ื™ืฉื˜ ...

ืขื˜ืœืขื›ืข ื“ื‘ืžืก ืึธื ื ืขืžืขืŸ ื”ื™ื ืฅ: "ื ื™ื™ืŸ, ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืฆื•ื•ื™ื™ ื˜ื™ืฉืŸ ืื™ืŸ ืึทื–ืึท ืื•ืŸ ืึทื–ืึท ืึท ืจื™ื™," ืึธื‘ืขืจ PostgreSQL ืงืขืŸ ื ื™ืฉื˜ ื˜ืึธืŸ ื“ืึธืก. ื“ืึธืก ืื™ื– ื“ื™ ื‘ืึทื•ื•ื•ืกื˜ื–ื™ื ื™ืง ืฉื˜ืขืœืข ืคื•ืŸ โ€‹โ€‹ืœื™ื“ื™ื ื’ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก: "ืžื™ืจ ื•ื•ืขืœืŸ ืืœื ืขื ื“ื™ืงืŸ ื“ื™ ืึธื ืคึฟืจืขื’ ืึธืคึผื˜ื™ืžื™ื–ืขืจ ื•ื•ื™ ืœืึธื–ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืฆื• ื ื•ืฆืŸ ืขื˜ืœืขื›ืข ืžื™ืŸ ืคื•ืŸ ื”ื™ื ืฅ."

ืึธื‘ืขืจ, ื˜ืจืึธืฅ ื“ืขื ืคืึทืงื˜ ืึทื– PostgreSQL ื˜ื•ื˜ ื ื™ืฉื˜ ืœืึธื–ืŸ ื“ื™ "ืึทืจื•ื™ืก" ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื–ื™ืš, ืขืก ื‘ื™ืฉืœื™ื™ืžืขืก ืึทืœืึทื•ื– ื–ืขืŸ ื•ื•ืืก ืขืก ื˜ื•ื˜ ื–ื™ืš ืื™ืŸ ืื™ืื•ื•ืขืŸ ืื™ืจ ืœื•ื™ืคืŸ ื“ื™ื™ืŸ ืึธื ืคึฟืจืขื’, ืื•ืŸ ื•ื•ื• ืขืก ื”ืื˜ ืคึผืจืึธื‘ืœืขืžืก.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืžื™ื˜ ื•ื•ืึธืก ืงืœืึทืกื™ืฉ ืคึผืจืึธื‘ืœืขืžืก ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืงื•ืžืขืŸ ืžื™ื˜ ืึท ื“ืขื•ื•ืขืœืึธืคึผืขืจ [ืฆื• ืึท ื“ื‘ืึท]? โ€œื“ืึธ ื”ืึธื‘ืŸ ืžื™ืจ ื“ืขืจืคื™ืœื˜ ื“ื™ ื‘ืงืฉื”, ืื•ืŸ ืึทืœืฅ ืื™ื– ืคึผืึทืžืขืœืขืš ืžื™ื˜ ืื•ื ื“ื–, ืืœืฅ ื”ืขื ื’ื˜ , ืขืคืข ืก ืคืืกื™ืจื˜... ืขืคืขืก ื ืฆืจื”!

ื“ื™ ืกื™ื‘ื•ืช ื–ืขื ืขืŸ ื›ึผืžืขื˜ ืฉื˜ืขื ื“ื™ืง ื“ื™ ื–ืขืœื‘ืข:

  • ื‘ืึทื˜ืœืึธื ื™ืฉ ืึธื ืคึฟืจืขื’ ืึทืœื’ืขืจื™ื“ืึทื
    ื“ืขื•ื•ืขืœืึธืคึผืขืจ: "ืื™ืฆื˜ ืื™ืš ื’ืขื‘ืŸ ืื™ื 10 ื˜ื™ืฉืŸ ืื™ืŸ ืกืงืœ ื“ื•ืจืš JOIN ..." - ืื•ืŸ ื™ืงืกืคึผืขืงืฅ ืึทื– ื–ื™ื™ืŸ ื˜ื ืึธื™ื ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ืคืขืงื˜ื™ื•ื•ืœื™ "ืึทื ื˜ื™ื™ื“" ืื•ืŸ ืขืจ ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ืึทืœืฅ ื’ืขืฉื•ื•ื™ื ื“. ืื‘ืขืจ ืžื™ืจืึทืงืึทืœื– ื˜ืึธืŸ ื ื™ื˜ ืคึผืึทืกื™ืจืŸ, ืื•ืŸ ืงื™ื™ืŸ ืกื™ืกื˜ืขื ืžื™ื˜ ืึทื–ืึท ื•ื•ืขืจื™ืึทื‘ื™ืœื™ื˜ื™ (10 ื˜ื™ืฉืŸ ืื™ืŸ ืื™ื™ืŸ FROM) ืฉื˜ืขื ื“ื™ืง ื’ื™ื˜ ืึท ืžื™ืŸ ืคื•ืŸ ื˜ืขื•ืช. [ืึทืจื˜ื™ืงืœ]
  • ืึทื•ื˜ื“ื™ื™ื˜ื™ื“ ืกื˜ืึทื˜ื™ืกื˜ื™ืง
    ื“ืขืจ ืคื•ื ื˜ ืื™ื– ื–ื™ื™ืขืจ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืกืคึผืึทืกื™ืคื™ืงืœื™ ืคึฟืึทืจ PostgreSQL, ื•ื•ืขืŸ ืื™ืจ "ืื•ื™ืกื’ืขื’ืืกืŸ" ืึท ื’ืจื•ื™ืก ื“ืึทื˜ืึทืกืขื˜ ืึทื ื˜ื• ื“ื™ ืกืขืจื•ื•ืขืจ, ืžืึทื›ืŸ ืึท ื‘ืงืฉื” ืื•ืŸ ืขืก "ืกืขืงืกืงืึทื ื™ืฅ" ื“ื™ื™ืŸ ื˜ืึทื‘ืœืขื˜. ื•ื•ื™ื™ึทืœ ื ืขื›ื˜ืŸ ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ 10 ืจืขืงืึธืจื“ืก ืื™ืŸ ืขืก, ืื•ืŸ ื”ื™ื™ึทื ื˜ ืขืก ื–ืขื ืขืŸ 10 ืžื™ืœื™ืึธืŸ, ืึธื‘ืขืจ PostgreSQL ืื™ื– ื ื™ืฉื˜ ืึทื•ื•ืขืจ ืคื•ืŸ ื“ืขื, ืื•ืŸ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื–ืึธื’ืŸ ืขืก ื•ื•ืขื’ืŸ ืื™ื. [ืึทืจื˜ื™ืงืœ]
  • "ืฆืึทืคึผืŸ" ืื•ื™ืฃ ืจืขืกื•ืจืกืŸ
    ืื™ืจ ื”ืึธื˜ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืึท ื’ืจื•ื™ืก ืื•ืŸ ืฉื•ื•ืขืจ ืœืึธื•ื“ื™ื“ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื•ื™ืฃ ืึท ืฉื•ื•ืึทืš ืกืขืจื•ื•ืขืจ ื•ื•ืึธืก ื”ืื˜ ื ื™ืฉื˜ ื’ืขื ื•ื’ ื“ื™ืกืง, ื–ื›ึผืจื•ืŸ ืึธื“ืขืจ ืคึผืจืึทืกืขืกืขืจ ืคืึธืจืฉื˜ืขืœื•ื ื’. ืื•ืŸ ืึทื– ืก ืึทืœืข ... ืขืจื’ืขืฅ ืขืก ืื™ื– ืึท ืคืึธืจืฉื˜ืขืœื•ื ื’ ืกื•ืคื™ื˜ ืื•ื™ื‘ืŸ ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ื ื™ื˜ ืžืขืจ ืฉืคึผืจื™ื ื’ืขืŸ.
  • ื‘ืœืึทืงื™ื ื’
    ื“ืึธืก ืื™ื– ืึท ืฉื•ื•ืขืจ ืคื•ื ื˜, ืึธื‘ืขืจ ื–ื™ื™ ื–ืขื ืขืŸ ืžืขืจืกื˜ ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ืžืึทื“ืึทืคื™ื™ื™ื ื’ ืคึฟืจืื’ืŸ (INSERT, UPDATE, DELETE) - ื“ืึธืก ืื™ื– ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื’ืจื•ื™ืก ื˜ืขืžืข.

ื‘ืึทืงื•ืžืขืŸ ืึท ืคึผืœืึทืŸ

... ืื•ืŸ ืคึฟืึทืจ ืึทืœืฅ ืึทื ื“ืขืจืฉ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืคึผืœืึทืŸ! ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื–ืขืŸ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืขื ื™ืฉ ืื™ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื ืึธื ืคึฟืจืขื’ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคึผืœืึทืŸ ืคึฟืึทืจ PostgreSQL ืื™ื– ืึท ื‘ื•ื™ื ืคื•ืŸ ื“ื™ ืึธื ืคึฟืจืขื’ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืึทืœื’ืขืจื™ื“ืึทื ืื™ืŸ ื˜ืขืงืกื˜ ืคืึทืจื˜ืจืขื˜ื•ื ื’. ืขืก ืื™ื– ืคึผื•ื ืงื˜ ื“ืขืจ ืึทืœื’ืขืจื™ื“ืึทื ืึทื–, ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ื™ ืคึผืœืึทื ืขืจ, ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ืžืขืจืกื˜ ืขืคืขืงื˜ื™ื•ื•.

ื™ืขื“ืขืจ ื‘ื•ื™ื ื ืึธื“ืข ืื™ื– ืึทืŸ ืึธืคึผืขืจืึทืฆื™ืข: ืจื™ื˜ืจื™ื•ื•ื™ื ื’ ื“ืึทื˜ืŸ ืคื•ืŸ ืึท ื˜ื™ืฉ ืึธื“ืขืจ ืื™ื ื“ืขืงืก, ื‘ื•ื™ืขืŸ ืึท ื‘ื™ื˜ืžืึทืคึผ, ืคืึทืจื‘ื™ื ื“ืŸ ืฆื•ื•ื™ื™ ื˜ื™ืฉืŸ, ืคืึทืจื‘ื™ื ื“ืŸ, ื™ื ื˜ืขืจืกืขืงื˜ื™ื ื’ ืึธื“ืขืจ ื•ื™ืกืฉืœื™ืกืŸ ืกืขืœืขืงืฉืึทื ื–. ืขืงืกืึทืงื™ื•ื˜ื™ื ื’ ืึท ืึธื ืคึฟืจืขื’ ื™ื ื•ื•ืึทืœื•ื•ื– ื’ื™ื™ืŸ ื“ื•ืจืš ื“ื™ ื ืึธื•ื“ื– ืคื•ืŸ ื“ืขื ื‘ื•ื™ื.

ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืึธื ืคึฟืจืขื’ ืคึผืœืึทืŸ, ื“ื™ ื™ื–ื™ืึทืกื˜ ื•ื•ืขื’ ืื™ื– ืฆื• ื•ื™ืกืคื™ืจืŸ ื“ื™ ื“ืขืจืงืœืขืจื•ื ื’ EXPLAIN. ืฆื• ื‘ืึทืงื•ืžืขืŸ ืžื™ื˜ ืึทืœืข ืคืึทืงื˜ื™ืฉ ืึทื˜ืจื™ื‘ื™ื•ืฅ, ื“ืึธืก ืื™ื–, ืฆื• ืึทืงืฉืœื™ ื•ื™ืกืคื™ืจืŸ ืึท ืึธื ืคึฟืจืขื’ ืื•ื™ืฃ ื“ืขืจ ื‘ืึทื–ืข - EXPLAIN (ANALYZE, BUFFERS) SELECT ....

ื“ื™ ืฉืœืขื›ื˜ ื˜ื™ื™ืœ: ื•ื•ืขืŸ ืื™ืจ ืœื•ื™ืคืŸ ืขืก, ืขืก ื›ืึทืคึผืึทื ื– "ื“ืึธ ืื•ืŸ ืื™ืฆื˜", ืึทื–ื•ื™ ืขืก ืื™ื– ื‘ืœื•ื™ื– ืคึผืึทืกื™ืง ืคึฟืึทืจ ื”ื™ื’ืข ื“ื™ื‘ืึทื’ื™ื ื’. ืื•ื™ื‘ ืื™ืจ ื ืขืžืขืŸ ืึท ื”ืขื›ืกื˜ ืœืึธื•ื“ื™ื“ ืกืขืจื•ื•ืขืจ ื•ื•ืึธืก ืื™ื– ืื•ื ื˜ืขืจ ืึท ืฉื˜ืึทืจืง ืœื•ื™ืคืŸ ืคื•ืŸ ื“ืึทื˜ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ, ืื•ืŸ ืื™ืจ ื–ืขืŸ: "ืึธื”! ื“ืึธ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืคึผืึทืžืขืœืขืš ื“ื•ืจื›ืคื™ืจื•ื ื’ืงืกื™ืึท ื‘ืขื˜ืŸ." ืึท ื”ืึทืœื‘ ืฉืขื”, ืึท ืฉืขื” ืฆื•ืจื™ืง - ื‘ืฉืขืช ืื™ืจ ืœื•ื™ืคืŸ ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ื“ืขื ื‘ืขื˜ืŸ ืคื•ืŸ ื“ื™ ืœืึธื’ืก, ื‘ืจืขื ื’ืขืŸ ืขืก ืฆื•ืจื™ืง ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ, ื“ื™ื™ืŸ ื’ืื ืฆืข ื“ืึทื˜ืึทื‘ื™ื™ืก ืื•ืŸ ืกื˜ืึทื˜ื™ืกื˜ื™ืง ื”ืึธื‘ืŸ ื’ืขื‘ื™ื˜ืŸ. ืื™ืจ ืœื•ื™ืคืŸ ืขืก ืฆื• ื“ื™ื‘ืึทื’ - ืื•ืŸ ืขืก ืœื•ื™ืคื˜ ื’ืขืฉื•ื•ื™ื ื“! ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก, ื•ื•ืึธืก ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืคึผืึทืžืขืœืขืš.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื›ึผื“ื™ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืŸ ืคึผื•ื ืงื˜ ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ ื•ื•ืขืŸ ื“ื™ ื‘ืงืฉื” ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ, ืงืœื•ื’ ืžืขื ื˜ืฉืŸ ื’ืขืฉืจื™ื‘ืŸ auto_explain ืžืึธื“ื•ืœืข. ืขืก ืื™ื– ืคืึธืจืฉื˜ืขืœืŸ ืื™ืŸ ื›ึผืžืขื˜ ืึทืœืข ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ PostgreSQL ื“ื™ืกื˜ืจื™ื‘ื™ื•ืฉืึทื ื–, ืื•ืŸ ืงืขื ืขืŸ ืคืฉื•ื˜ ื–ื™ื™ืŸ ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“ ืื™ืŸ ื“ื™ ืงืึธื ืคื™ื’ ื˜ืขืงืข.

ืื•ื™ื‘ ืขืก ืจื™ืœื™ื™ื–ื™ื– ืึทื– ืขื˜ืœืขื›ืข ื‘ืขื˜ืŸ ืื™ื– ืคืœื™ืกื ื“ื™ืง ืžืขืจ ื•ื•ื™ ื“ื™ ืฉื™ืขื•ืจ ืื™ืจ ื”ืึธื˜ ื’ืขื–ืึธื’ื˜ ืขืก ืฆื•, ืขืก ื˜ื•ื˜ "Snapshot" ืคื•ืŸ ื“ืขื ืคึผืœืึทืŸ ืคื•ืŸ ื“ืขื ื‘ืงืฉื” ืื•ืŸ ืฉืจื™ื™ื‘ื˜ ื–ื™ื™ ืฆื•ื–ืึทืžืขืŸ ืื™ืŸ ื“ื™ ืงืœืึธืฅ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ะ’ั€ะพะดะต ะฒัะต ั‚ะตะฟะตั€ัŒ ั…ะพั€ะพัˆะพ, ะธะดะตะผ ะฒ ะปะพะณ ะธ ะฒะธะดะธะผ ั‚ะฐะผโ€ฆ [ะฟะพั€ั‚ัะฝะบะฐ ั‚ะตะบัั‚ะฐ]. ะะพ ัะบะฐะทะฐั‚ัŒ ะฝะธั‡ะตะณะพ ะฟั€ะพ ะฝะตะณะพ ะฝะต ะผะพะถะตะผ, ะบั€ะพะผะต ั‚ะพะณะพ ั„ะฐะบั‚ะฐ, ั‡ั‚ะพ ัั‚ะพ ะพั‚ะปะธั‡ะฝั‹ะน ะฟะปะฐะฝ, ะฟะพั‚ะพะผัƒ ั‡ั‚ะพ ะฒั‹ะฟะพะปะฝัะปัั 11ะผั.

ืึทืœืฅ ืžื™ื™ื ื˜ ืฆื• ื–ื™ื™ืŸ ืคื™ื™ึทืŸ - ืึธื‘ืขืจ ื’ืึธืจื ื™ืฉื˜ ืื™ื– ืงืœืึธืจ ื•ื•ืึธืก ืคืืงื˜ื™ืฉ ื’ืขื˜ืจืืคืŸ. ืึทื—ื•ืฅ ื“ื™ ืึทืœื’ืขืžื™ื™ื ืข ืฆื™ื™ื˜, ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื˜ืึทืงืข ื–ืขืŸ ืขืคึผืขืก. ื•ื•ื™ื™ึทืœ ืงื•ืงืŸ ืื™ืŸ ืึทื–ืึท ืึท "ืœืึทื" ืคื•ืŸ ืงืœืึธืจ ื˜ืขืงืกื˜ ืื™ื– ื‘ื›ืœืœ ื ื™ืฉื˜ ื•ื•ื™ื–ืฉืึทื•ื•ืึทืœ.

ืึธื‘ืขืจ ืืคื™ืœื• ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’, ืืคื™ืœื• ืื•ื™ื‘ ืขืก ืื™ื– ื•ืžื‘ืึทืงื•ื•ืขื, ืขืก ื–ืขื ืขืŸ ืžืขืจ ืคื•ื ื“ืึทืžืขื ื˜ืึทืœ ืคึผืจืึธื‘ืœืขืžืก:

  • ื“ืขืจ ื ืึธื“ืข ื™ื ื“ื™ืงื™ื™ืฅ ืกืึทื›ืึทืงืœ ืคื•ืŸ ืจืขืกื•ืจืกืŸ ืคื•ืŸ ื“ื™ ื’ืื ืฆืข ืกื•ื‘ื˜ืจื™ืข ืื•ื ื˜ืขืจ ืื™ื. ื“ืึธืก ืื™ื–, ืื™ืจ ืงืขื ื˜ ื ื™ืฉื˜ ื ืึธืจ ื’ืขืคึฟื™ื ืขืŸ ื•ื•ื™ ืคื™ืœ ืฆื™ื™ื˜ ืื™ื– ืคืืจื‘ืจืื›ื˜ ืื•ื™ืฃ ื“ืขื ื‘ืึทื–ื•ื ื“ืขืจ ื™ื ื“ืขืงืก ืกืงืึทืŸ ืื•ื™ื‘ ืขืก ืื™ื– ืึท ื ืขืกื˜ืขื“ ืฆื•ืฉื˜ืึทื ื“ ืื•ื ื˜ืขืจ ืขืก. ืžื™ืจ ืžื•ื–ืŸ ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ืงื•ืงืŸ ืฆื• ื–ืขืŸ ืื•ื™ื‘ ืขืก ื–ืขื ืขืŸ "ืงื™ื ื“ืขืจ" ืื•ืŸ ืงืึทื ื“ื™ืฉืึทื ืึทืœ ื•ื•ืขืจื™ืึทื‘ืึทืœื–, CTEs ื™ืŸ - ืื•ืŸ ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ืึทืœืข ื“ืขื "ืื™ืŸ ืื•ื ื“ื–ืขืจ ืžื—ืฉื‘ื•ืช".
  • ืฆื•ื•ื™ื™ื˜ืข ืคื•ื ื˜: ื“ื™ ืฆื™ื™ื˜ ื•ื•ืึธืก ืื™ื– ืื ื’ืขื•ื•ื™ื–ืŸ ืื•ื™ืฃ ื“ื™ ื ืึธื“ืข ืื™ื– ืื™ื™ืŸ ื ืึธื“ืข ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฆื™ื™ึทื˜. ืื•ื™ื‘ ื“ืขืจ ื ืึธื“ืข ืื™ื– ื’ืขื•ื•ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ, ืœืžืฉืœ, ืึท ืฉืœื™ื™ืฃ ื“ื•ืจืš ื˜ื™ืฉ ืจืขืงืึธืจื“ืก ืขื˜ืœืขื›ืข ืžืึธืœ, ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืœื•ืคึผืก - ืกื™ื™ืงืึทืœื– ืคื•ืŸ ื“ืขื ื ืึธื“ืข - ื™ื ืงืจื™ืกื™ื– ืื™ืŸ ื“ืขื ืคึผืœืึทืŸ. ืื‘ืขืจ ื“ื™ ืึทื˜ืึธืžื™ืฉืข ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฆื™ื™ื˜ ื–ื™ืš ื‘ืœื™ื™ื‘ื˜ ื“ื™ ื–ืขืœื‘ืข ืื™ืŸ ื˜ืขืจืžื™ื ืขืŸ ืคื•ืŸ ืคึผืœืึทืŸ. ืึทื– ืื™ื–, ืื™ืŸ ืกื“ืจ ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืœืึทื ื’ ื“ืขื ื ืึธื“ืข ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ืŸ ื’ืึทื ืฅ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืžืขืจืŸ ืื™ื™ืŸ ื–ืึทืš ื“ื•ืจืš ืื ื“ืขืจืŸ - ื•ื•ื™ื“ืขืจ, "ืื™ืŸ ื“ื™ื™ืŸ ืงืึธืคึผ."

ืื™ืŸ ืึทื–ืึท ืกื™ื˜ื•ืึทื˜ื™ืึธื ืก, ืคึฟืึทืจืฉื˜ื™ื™ืŸ "ื•ื•ืขืจ ืื™ื– ื“ื™ ื•ื•ื™ืงืึทืกื˜ ืœื™ื ืง?" ื›ึผืžืขื˜ ืื•ืžืžืขื’ืœืขืš. ื“ืขืจื™ื‘ืขืจ, ืืคื™ืœื• ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื–ื™ืš ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ื“ื™ "ืžืึทื ื•ืึทืœ" ืึทื– "ืคึฟืึทืจืฉื˜ืึทื ืขืŸ ืึท ืคึผืœืึทืŸ ืื™ื– ืึท ืงื•ื ืกื˜ ื•ื•ืึธืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืขืœืขืจื ื˜, ื“ืขืจืคืึทืจื•ื ื’ ...".

ืึธื‘ืขืจ ืžื™ืจ ื”ืึธื‘ืŸ 1000 ื“ืขื•ื•ืขืœืึธืคึผืขืจืก, ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืงืึทื ื•ื•ื™ื™ ื“ื™ ื“ืขืจืคืึทืจื•ื ื’ ืฆื• ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™. ืื™ืš, ื“ื•, ืขืจ ืฐืฒืก, ืึธื‘ืขืจ ืขืžืขืฆืขืจ ื“ืึธืจื˜ ืฐืฒืก ืฉืฑืŸ ื ื™ื˜. ืืคึฟืฉืจ ืฐืขื˜ ืขืจ ื–ื™ืš ืœืขืจื ืขืŸ, ืึธื“ืขืจ ืืคึฟืฉืจ ื ื™ืฉื˜, ื ืึธืจ ืขืจ ื“ืึทืจืฃ ืื™ืฆื˜ ืึทืจื‘ืขื˜ืŸ โ€• ืื•ืŸ ืคึฟื•ืŸ ืฐืึทื ืขืŸ ื•ื•ืึธืœื˜ ืขืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื“ืึธื–ื™ืงืข ื“ืขืจืคืึทืจื•ื ื’?

ืคึผืœืึทืŸ ื•ื•ื™ื–ืฉื•ื•ืึทืœืึทื–ื™ื™ืฉืึทืŸ

ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืฆื• ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ื“ื™ ืคืจืื‘ืœืขืžืขืŸ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ื’ื•ื˜ ื•ื•ื™ื–ืฉื•ื•ืึทืœืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ืขื ืคึผืœืึทืŸ. [ืึทืจื˜ื™ืงืœ]

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืžื™ืจ ืขืจืฉื˜ืขืจ ื’ืขื’ืื ื’ืขืŸ "ื“ื•ืจืš ื“ื™ ืžืึทืจืง" - ืœืึธืžื™ืจ ืงื•ืงืŸ ืื•ื™ืฃ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ ืฆื• ื–ืขืŸ ื•ื•ืึธืก ืืคื™ืœื• ื™ื’ื–ื™ืกืฅ.

ืึธื‘ืขืจ, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ื•ื•ื™ื™ื ื™ืง ืœืขืคื™ืขืจืขืš "ืœืขื‘ืŸ" ืกืึทืœื•ืฉืึทื ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ืžืขืจ ืึธื“ืขืจ ื•ื•ื™ื™ื ื™ืงืขืจ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ - ืžืžืฉ ื‘ืœื•ื™ื– ืื™ื™ืŸ: explain.depesz.com ื“ื•ืจืš Hubert Lubaczewski. ื•ื•ืขืŸ ืื™ืจ ืึทืจื™ื™ึทืŸ ื“ื™ "ืคื™ื˜ืขืจ" ืคืขืœื“ ืึท ื˜ืขืงืกื˜ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ ื“ืขื ืคึผืœืึทืŸ, ืขืก ื•ื•ื™ื™ื–ื˜ ืื™ืจ ืึท ื˜ื™ืฉ ืžื™ื˜ ื“ื™ ืคึผืึทืจืกืขื“ ื“ืึทื˜ืŸ:

  • ื ืึธื“ืข ืก ืื™ื™ื’ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืฆื™ื™ื˜
  • ื’ืึทื ืฅ ืฆื™ื™ื˜ ืคึฟืึทืจ ื“ื™ ื’ืื ืฆืข ืกื•ื‘ื˜ืจื™ืข
  • ื ื•ืžืขืจ ืคื•ืŸ ืจืขืงืึธืจื“ืก ื•ื•ืึธืก ื–ืขื ืขืŸ ืจื™ื˜ืจื™ื•ื•ื“ ื•ื•ืึธืก ื–ืขื ืขืŸ ืกื˜ืึทื˜ื™ืกื˜ื™ืฉ ื“ืขืจื•ื•ืึทืจื˜
  • ื“ื™ ื ืึธื“ืข ื’ื•ืฃ ื–ื™ืš

ื“ืขืจ ื“ื™ื ืกื˜ ืื•ื™ืš ื”ืื˜ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื˜ื™ื™ืœืŸ ืึทืŸ ืึทืจืงื™ื™ื•ื• ืคื•ืŸ ืœื™ื ืงืก. ืื™ืจ ื”ืึธื˜ ืึทืจื™ื™ื ื’ืขื•ื•ืึธืจืคืŸ ื“ื™ื™ืŸ ืคึผืœืึทืŸ ืื•ืŸ ื’ืขื–ืื’ื˜: "ื”ื™ื™, ื•ื•ืึทืกื™ืึท, ื“ืึธ ืก ืึท ืœื™ื ืง, ืขืก ืื™ื– ืขืคึผืขืก ืคืึทืœืฉ ื“ืึธืจื˜."

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืื‘ืขืจ ืขืก ื–ืขื ืขืŸ ืื•ื™ืš ืงืœื™ื™ืŸ ืคืจืื‘ืœืขืžืขืŸ.

ืขืจืฉื˜ืขืจ, ืึท ืจื™ื–ื™ืง ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹"ืงืึธืคึผื™-ืคึผืึทืกื˜ืข". ืื™ืจ ื ืขืžืขืŸ ืึท ืฉื˜ื™ืง ืคื•ืŸ ื“ื™ ืงืœืึธืฅ, ืฉื˜ืขืงืŸ ืขืก ื“ืึธืจื˜, ืื•ืŸ ื•ื•ื™ื“ืขืจ, ืื•ืŸ ื•ื•ื™ื“ืขืจ.

ืจื’ืข, ื“ื™ ืงื™ื™ืŸ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ื™ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ - ื“ื™ ื–ืขืœื‘ืข ื‘ืึทืคืขืจื– ืึทื– ืจืขื–ื•ืœื˜ืึทื˜ EXPLAIN (ANALYZE, BUFFERS), ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื–ืขืŸ ืขืก ื“ืึธ. ืขืจ ืคืฉื•ื˜ ื˜ื•ื˜ ื ื™ืฉื˜ ื•ื•ื™ืกืŸ ื•ื•ื™ ืฆื• ื“ื™ืกืึทืกืขืžื‘ืึทืœ ื–ื™ื™, ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื–ื™ื™ ืื•ืŸ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื–ื™ื™. ื•ื•ืขืŸ ืื™ืจ ืœื™ื™ืขื ืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื“ืึทื˜ืŸ ืื•ืŸ ืคืึทืจืฉื˜ื™ื™ืŸ ืึทื– ืื™ืจ ืงืขืŸ ื–ื™ื™ืŸ ืžื™ืกืึทืœืึธืงืึทื˜ื™ื ื’ ื“ื™ ื“ื™ืกืง ืื•ืŸ ื–ื›ึผืจื•ืŸ ืงืึทืฉ, ื“ื™ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ื– ื–ื™ื™ืขืจ ื•ื•ื™ื›ื˜ื™ืง.

ื“ื™ ื“ืจื™ื˜ ื ืขื’ืึทื˜ื™ื•ื• ืคื•ื ื˜ ืื™ื– ื“ื™ ื–ื™ื™ืขืจ ืฉื•ื•ืึทืš ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื“ืขื ืคึผืจื•ื™ืขืงื˜. ื“ื™ ืงืึทืžื™ืฅ ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ืงืœื™ื™ืŸ, ืขืก ืื™ื– ื’ื•ื˜ ืื•ื™ื‘ ืึทืžืึธืœ ื™ืขื“ืขืจ ื–ืขืงืก ื—ื“ืฉื™ื, ืื•ืŸ ื“ื™ ืงืึธื“ ืื™ื– ืื™ืŸ ืคึผืขืจืœ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืื‘ืขืจ ื“ืึธืก ืื™ื– ืึทืœืข "ืœื™ืจื™ืงืก", ืžื™ืจ ืงืขืŸ ืขืคืขืก ืœืขื‘ืŸ ืžื™ื˜ ื“ืขื, ืึธื‘ืขืจ ืขืก ืื™ื– ืื™ื™ืŸ ื–ืึทืš ื•ื•ืึธืก ื–ื™ื™ืขืจ ืงืขืจื˜ ืื•ื ื“ื– ืึทื•ื•ืขืง ืคื•ืŸ ื“ืขื ื“ื™ื ืกื˜. ื“ืึธืก ื–ืขื ืขืŸ ืขืจืจืึธืจืก ืื™ืŸ ื“ืขืจ ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ืงืึธืžืžืึธืŸ ื˜ื™ืฉ ืขืงืกืคึผืจืขืกืกื™ืึธืŸ (CTE) ืื•ืŸ ืคืึทืจืฉื™ื“ืŸ ื“ื™ื ืึทืžื™ืฉ ื ืึธื•ื“ื– ื•ื•ื™ InitPlan / SubPlan.

ืื•ื™ื‘ ืื™ืจ ื’ืœื•ื™ื‘ืŸ ื“ืขื ื‘ื™ืœื“, ื“ื™ ื’ืึทื ืฅ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฆื™ื™ื˜ ืคื•ืŸ ื™ืขื“ืขืจ ื™ื—ื™ื“ ื ืึธื“ืข ืื™ื– ื’ืจืขืกืขืจ ื•ื•ื™ ื“ื™ ื’ืึทื ืฅ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืฆื™ื™ื˜ ืคื•ืŸ ื“ื™ ื’ืื ืฆืข ื‘ืงืฉื”. ืขืก ืื™ื– ืคึผืฉื•ื˜ - ื“ื™ ื“ื•ืจ ืฆื™ื™ื˜ ืคื•ืŸ ื“ืขื CTE ืื™ื– ื ื™ืฉื˜ ืกืึทื‘ื˜ืจืึทืงื˜ื™ื“ ืคื•ืŸ ื“ื™ CTE ืกืงืึทืŸ ื ืึธื“ืข. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื ื™ื˜ ืžืขืจ ื•ื•ื™ืกืŸ ื“ื™ ืจื™ื›ื˜ื™ืง ืขื ื˜ืคืขืจ ืฆื• ื•ื•ื™ ืœืึทื ื’ ื“ื™ CTE ื™ื‘ืขืจืงื•ืงืŸ ื–ื™ืš ื’ืขื ื•ืžืขืŸ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ืขืžืึธืœื˜ ืžื™ืจ ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืขืก ืื™ื– ืฆื™ื™ึทื˜ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืŸ - ื”ื•ืจืจืึท! ื™ืขื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื–ืื’ื˜: "ืื™ืฆื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืฉืจื™ื™ึทื‘ืŸ ืื•ื ื“ื–ืขืจ ืื™ื™ื’ืขื ืข, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืกื•ืคึผืขืจ ื’ืจื™ื ื’!"

ืžื™ืจ ื’ืขื ื•ืžืขืŸ ืึท ืึธื ืœื™ื™ื’ืŸ ื˜ื™ืคึผื™ืฉ ืคึฟืึทืจ ื•ื•ืขื‘ ื‘ืึทื“ื™ื ื•ื ื’ืก: ืึท ื”ืึทืจืฅ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ Node.js + Express, ื’ืขื•ื•ื™ื™ื ื˜ Bootstrap ืื•ืŸ D3.js ืคึฟืึทืจ ืฉื™ื™ืŸ ื“ื™ื™ืึทื’ืจืึทืžื–. ืื•ืŸ ืื•ื ื“ื–ืขืจ ืขืงืกืคึผืขืงื˜ื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื’ืึธืจ ื’ืขืจืขื›ื˜ืคืืจื˜ื™ืงื˜ - ืžื™ืจ ื‘ืืงื•ืžืขืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืื™ืŸ 2 ื•ื•ืึธื›ืŸ:

  • ืžื ื”ื’ ืคึผืœืึทืŸ ืคึผืึทืจืกืขืจ
    ืึทื– ืื™ื–, ืื™ืฆื˜ ืžื™ืจ ืงืขื ืขืŸ ืคึผืึทืจืก ืงื™ื™ืŸ ืคึผืœืึทืŸ ืคื•ืŸ ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื“ื•ืจืš PostgreSQL.
  • ืจื™ื›ื˜ื™ืง ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื“ื™ื ืึทืžื™ืฉ ื ืึธื•ื“ื– - CTE ืกืงืึทืŸ, InitPlan, SubPlan
  • ืึทื ืึทืœื™ืกื™ืก ืคื•ืŸ ื‘ืึทืคืขืจ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ - ื•ื•ื• ื“ืึทื˜ืŸ ื‘ืœืขื˜ืขืจ ื–ืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ืคึฟื•ืŸ ื–ื›ึผืจื•ืŸ, ื•ื•ื• ืคึฟื•ืŸ ื“ื™ ื”ื™ื’ืข ืงืึทืฉ, ื•ื•ื• ืคึฟื•ืŸ ื“ื™ืกืง
  • ื’ืึทื˜ ืงืœืขืจื™ื˜ื™
    ื ื™ื˜ ืฆื• "ื’ืจืึธื‘ืŸ" ืึทืœืข ื“ืขื ืื™ืŸ ื“ื™ ืงืœืึธืฅ, ืึธื‘ืขืจ ืฆื• ื–ืขืŸ ื“ื™ "ื•ื•ื™ืงืึทืกื˜ ืœื™ื ืง" ืจืขื›ื˜ ืึทื•ื•ืขืง ืื™ืŸ ื“ื™ ื‘ื™ืœื“.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืžื™ืจ ื”ืึธื‘ืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก, ืžื™ื˜ ืกื™ื ื˜ืึทืงืก ื›ื™ื™ืœื™ื™ื˜ื™ื ื’ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜. ืื‘ืขืจ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืื•ื ื“ื–ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื ื™ื˜ ืžืขืจ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื’ืึทื ืฅ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ ื“ืขื ืคึผืœืึทืŸ, ืึธื‘ืขืจ ืžื™ื˜ ืึท ืงื™ืจืฆืขืจ ืื™ื™ื ืขืจ. ื ืึธืš ืึทืœืข, ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืคึผืึทืจืกืขื“ ืึทืœืข ื“ื™ ื ื•ืžืขืจืŸ ืื•ืŸ ืืจืœื ื’ืขื•ื•ืืจืคืŸ ืœื™ื ืงืก ืื•ืŸ ืจืขื›ื˜, ืื•ืŸ ืื™ืŸ ื“ื™ ืžื™ื˜ืŸ ืžื™ืจ ืœื™ื ืงืก ื‘ืœื•ื™ื– ื“ื™ ืขืจืฉื˜ืขืจ ืฉื•ืจื”, ื•ื•ืึธืก ืžื™ืŸ ืคื•ืŸ ื ืึธื“ืข ืขืก ืื™ื–: CTE Scan, CTE generation ืึธื“ืขืจ Seq Scan ืœื•ื™ื˜ ืขื˜ืœืขื›ืข ืฆื™ื™ื›ืŸ.

ื“ืึธืก ืื™ื– ื“ื™ ืึทื‘ืจื™ื•ื•ื™ื™ื™ื˜ื™ื“ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ื•ื•ืึธืก ืžื™ืจ ืจื•ืคืŸ ืคึผืœืึทืŸ ืžื•ืกื˜ืขืจ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื•ื•ืึธืก ืึทื ื“ืขืจืฉ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื‘ืึทืงื•ื•ืขื? ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื‘ืึทืงื•ื•ืขื ืฆื• ื–ืขืŸ ื•ื•ืึธืก ื˜ื™ื™ืœ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื’ืึทื ืฅ ืฆื™ื™ื˜ ืื™ื– ืึทืœืึทืงื™ื™ื˜ื™ื“ ืฆื• ื•ื•ืึธืก ื ืึธื“ืข - ืื•ืŸ ื ืึธืจ "ืฉื˜ืขืงืŸ ืขืก" ืฆื• ื“ื™ ื–ื™ื™ึทื˜ ืคึผื™ืจืึธื’ ื˜ืฉืึทืจื˜.

ืžื™ืจ ืคื•ื ื˜ ืฆื• ื“ื™ ื ืึธื“ืข ืื•ืŸ ื–ืขืŸ - ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ืกืขืง ืกืงืึทืŸ ื’ืขื ื•ืžืขืŸ ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ื™ ืึท ืคืขืจื˜ืœ ืคื•ืŸ ื“ื™ ื’ืึทื ืฅ ืฆื™ื™ื˜, ืื•ืŸ ื“ื™ ืจื•ืขืŸ 3/4 ืื™ื– ื’ืขื ื•ืžืขืŸ ื“ื•ืจืš CTE ืกืงืึทืŸ. ื’ืจื•ื™ืœ! ื“ืึธืก ืื™ื– ืึท ืงืœื™ื™ืŸ ื‘ืึทืžืขืจืงื•ื ื’ ื•ื•ืขื’ืŸ ื“ื™ "ืคื™ื™ืขืจ ืงื•ืจืก" ืคื•ืŸ CTE ืกืงืึทืŸ ืื•ื™ื‘ ืื™ืจ ืึทืงื˜ื™ื•ื•ืœื™ ื ื•ืฆืŸ ื–ื™ื™ ืื™ืŸ ื“ื™ื™ืŸ ืคึฟืจืื’ืŸ. ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืขืจ ืฉื ืขืœ - ื–ื™ื™ ื–ืขื ืขืŸ ืขืจื’ืขืจ ืืคื™ืœื• ืฆื• ืจืขื’ื•ืœืขืจ ื˜ื™ืฉ ืกืงืึทื ื™ื ื’. [ืึทืจื˜ื™ืงืœ] [ืึทืจื˜ื™ืงืœ]

ืื‘ืขืจ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืึทื–ืึท ื“ื™ื™ืึทื’ืจืึทืžื– ื–ืขื ืขืŸ ืžืขืจ ื˜ืฉื™ืงืึทื•ื•ืข, ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜, ื•ื•ืขืŸ ืžื™ืจ ืžื™ื“ ืคื•ื ื˜ ืื•ื™ืฃ ืึท ืึธืคึผืฉื ื™ื˜ ืื•ืŸ ื–ืขืŸ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึทื– ืžืขืจ ื•ื•ื™ ื”ืึทืœื‘ ืคื•ืŸ ื“ื™ ืฆื™ื™ื˜ ืขื˜ืœืขื›ืข ืกืขืง ืกืงืึทืŸ "ื’ืขื’ืขืกืŸ". ื“ืขืจืฆื•, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืžื™ืŸ ืคื•ืŸ ืคื™ืœื˜ืขืจ ื™ืŸ, ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืจืขืงืึธืจื“ืก ื–ืขื ืขืŸ ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ ืœื•ื™ื˜ ืื™ื ... ืื™ืจ ืงืขื ืขืŸ ื’ืœื™ื™ืš ื•ื•ืึทืจืคืŸ ื“ืขื ื‘ื™ืœื“ ืฆื• ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืื•ืŸ ื–ืึธื’ืŸ: "ื•ื•ืึทืกื™ืึท, ืึทืœืฅ ืื™ื– ืฉืœืขื›ื˜ ื“ืึธ ืคึฟืึทืจ ืื™ืจ! ืฉื˜ืขืœ ืขืก ืื•ื™ืก, ืงื•ืง โ€” ืขืคึผืขืก ืื™ื– ืคืึทืœืฉ!โ€œ

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš, ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืขื˜ืœืขื›ืข "ืจืึทืงืขืก".

ื“ืขืจ ืขืจืฉื˜ืขืจ ื–ืึทืš ื•ื•ืึธืก ืžื™ืจ ื’ืขืคึฟื•ื ืขืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ืจืึทื•ื ื“ื™ื ื’ ืคึผืจืึธื‘ืœืขื. ื“ื™ ืฆื™ื™ื˜ ืคื•ืŸ ื™ืขื“ืขืจ ื™ื—ื™ื“ ื ืึธื“ืข ืื™ืŸ ื“ืขื ืคึผืœืึทืŸ ืื™ื– ืื ื’ืขื•ื•ื™ื–ืŸ ืžื™ื˜ ืึท ืึทืงื™ืขืจืึทืกื™ ืคื•ืŸ 1 ฮผs. ืื•ืŸ ื•ื•ืขืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื ืึธื“ืข ืกื™ื™ืงืึทืœื– ื™ืงืกื™ื“ื–, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, 1000 - ื ืึธืš ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคึผืึธืกื˜ื’ืจืขืกืงืœ ืฆืขื˜ื™ื™ืœื˜ "ื™ืŸ ืึทืงื™ืขืจืึทืกื™", ื“ืขืžืึธืœื˜ ื•ื•ืขืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ืฆื•ืจื™ืง, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื’ืึทื ืฅ ืฆื™ื™ื˜ "ืขืจื’ืขืฅ ืฆื•ื•ื™ืฉืŸ 0.95ms ืื•ืŸ 1.05ms". ื•ื•ืขืŸ ื“ื™ ืฆื™ื™ืœืŸ ื’ื™ื™ื˜ ืฆื• ืžื™ืงืจืึธืกืขืงืึธื ื“ืก, ื“ืึธืก ืื™ื– ืึธื•ืงื™ื™, ืึธื‘ืขืจ ื•ื•ืขืŸ ืขืก ืื™ื– ืฉื•ื™ืŸ [ืžื™ืœื™] ืกืขืงื•ื ื“ืขืก, ืื™ืจ ืžื•ื–ืŸ ื ืขืžืขืŸ ื“ืขื ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื™ืŸ ื—ืฉื‘ื•ืŸ ื•ื•ืขืŸ "ืึทื ื˜ื™ื™ื™ื ื’" ืจืขืกื•ืจืกืŸ ืฆื• ื“ื™ ื ืึธื•ื“ื– ืคื•ืŸ ื“ื™ "ื•ื•ืขืจ ืงืึทื ืกื•ืžื“ ื•ื•ื™ ืคื™ืœ" ืคึผืœืึทืŸ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ืคื•ื ื˜, ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜, ืื™ื– ื“ื™ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืคื•ืŸ ืจืขืกื•ืจืกืŸ (ื™ืขื ืข ื‘ืึทืคืขืจื–) ืฆื•ื•ื™ืฉืŸ ื“ื™ื ืึทืžื™ืฉ ื ืึธื•ื“ื–. ื“ืึธืก ืงืึธืก ืื•ื ื“ื– ื“ื™ ืขืจืฉื˜ืขืจ 2 ื•ื•ืึธื›ืŸ ืคื•ืŸ ื“ื™ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืคึผืœื•ืก ื ืึธืš 4 ื•ื•ืึธื›ืŸ.

ืขืก ืื™ื– ื’ืึทื ืฅ ื’ืจื™ื ื’ ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ืขื ืžื™ืŸ ืคื•ืŸ ืคึผืจืึธื‘ืœืขื - ืžื™ืจ ื˜ืึธืŸ ืึท CTE ืื•ืŸ ืกืึทืคึผืึธื•ื–ืึทื“ืœื™ ืœื™ื™ืขื ืขืŸ ืขืคึผืขืก ืื™ืŸ ืขืก. ืื™ืŸ ืคืึทืงื˜, PostgreSQL ืื™ื– "ืงืœื•ื’" ืื•ืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ืœื™ื™ืขื ืขืŸ ืขืคึผืขืก ื’ืœื™ื™ึทืš ื“ืึธืจื˜. ื“ืขืจื ืึธืš ืžื™ืจ ื ืขืžืขืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืจืขืงืึธืจื“ ืคื•ืŸ ืขืก, ืื•ืŸ ืฆื• ืื™ื ื“ืขืจ ื”ื•ื ื“ืขืจื˜ ืื•ืŸ ืขืจืฉื˜ืขืจ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื–ืขืœื‘ืข CTE.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ืขื ืคึผืœืึทืŸ ืื•ืŸ ืคึฟืึทืจืฉื˜ื™ื™ืŸ - ืขืก ืื™ื– ืžืึธื“ื ืข, ืžื™ืจ ื”ืึธื‘ืŸ 3 ื‘ืึทืคืขืจื– (ื“ืึทื˜ืŸ ื‘ืœืขื˜ืขืจ) "ืงืึทื ืกื•ืžื“" ืื™ืŸ Seq Scan, 1 ืžืขืจ ืื™ืŸ CTE ืกืงืึทืŸ, ืื•ืŸ 2 ืžืขืจ ืื™ืŸ ื“ื™ ืจื’ืข CTE ืกืงืึทืŸ. ืึทื– ืื™ื–, ืื•ื™ื‘ ืžื™ืจ ืคืฉื•ื˜ ืกืึทื›ืึทืงืœ ืึทืœืฅ, ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทืงื•ืžืขืŸ 6, ืึธื‘ืขืจ ืคึฟื•ืŸ ื“ื™ ื˜ืึทื‘ืœืขื˜ ืžื™ืจ ืœื™ื™ืขื ืขืŸ ื‘ืœื•ื™ื– 3! CTE ืกืงืึทืŸ ืงืขืŸ ื ื™ืฉื˜ ืœื™ื™ืขื ืขืŸ ืขืคึผืขืก ืคึฟื•ืŸ ืขืจื’ืขืฅ, ืึธื‘ืขืจ ืึทืจื‘ืขื˜ ื’ืœื™ื™ืš ืžื™ื˜ ื“ืขื ืคึผืจืึธืฆืขืก ื–ื›ึผืจื•ืŸ. ื“ืึธืก ื”ืฒืกื˜, ื“ืึธ ืื™ื– ื“ืึธืš ืขืคึผืขืก ืึท ื˜ืขื•ืช!

ืœืžืขืฉื” ืงื•ืžื˜ ืื•ื™ืก ืื– ื“ื ื–ืขื ืขืŸ ืืœืข ื“ื™ 3 ื–ื™ื™ื˜ืŸ ื“ืื˜ื ื•ื•ืืก ืžืขืŸ ื”ืื˜ ื’ืขื‘ืขื˜ืŸ ืคื•ืŸ ืกืขืง ืกืงืืŸ, ืงื•ื“ื 1 ื’ืขื‘ืขื˜ืŸ ื“ืขื 1ื˜ืŸ CTE ืกืงืืŸ ืื•ืŸ ื“ืขืจื ืืš ื”ืื˜ ืžืขืŸ ืื™ื ื’ืขืœื™ื™ืขื ื˜ ื“ื™ 2 ืื•ืŸ ื ืืš 2 ื“ืืก ื”ื™ื™ืกื˜ ืกืš ื”ื›ืœ. 3 ื‘ืœืขื˜ืขืจ ื–ืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ, ื ื™ืฉื˜ 6.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืื•ืŸ ื“ืึธืก ื‘ื™ืœื“ ื”ืึธื˜ ืื•ื ื“ื– ื’ืขื‘ืจืึทื›ื˜ ืฆื• ื“ืขืจ ืฉื›ืœ, ืึทื– ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ืึท ืคึผืœืึทืŸ ืื™ื– ื ื™ื˜ ืžืขืจ ืึท ื‘ื•ื™ื, ื ืึธืจ ืึท ืžื™ืŸ ืคื•ืŸ ืึทืกื™ืงืœื™ืง ื’ืจืึทืคื™ืง. ืื•ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืึทื–ืึท ืึท ื“ื™ืึทื’ืจืึทืžืข, ืึทื–ื•ื™ ืึทื– ืžื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ "ื•ื•ืึธืก ืื™ื– ื’ืขืงื•ืžืขืŸ ืคึฟื•ืŸ ื•ื•ื• ืื™ืŸ ืขืจืฉื˜ืขืจ ืึธืจื˜." ื“ืึธืก ื”ื™ื™ืกื˜, ื“ืึธ ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืืฉืืคืŸ ืึท CTE ืคื•ืŸ pg_class, ืื•ืŸ ื’ืขื‘ืขื˜ืŸ ืคึฟืึทืจ ืขืก ืฆื•ื•ื™ื™ ืžืึธืœ, ืื•ืŸ ื›ึผืžืขื˜ ืึทืœืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืื•ื ื“ื–ืขืจ ืฆื™ื™ื˜ ืื™ื– ืคืืจื‘ืจืื›ื˜ ืื•ื™ืฃ ื“ื™ ืฆื•ื•ื™ื™ึทื’ ื•ื•ืขืŸ ืžื™ืจ ื’ืขื‘ืขื˜ืŸ ืคึฟืึทืจ ืขืก ื“ื™ 2 ืžืึธืœ. ืขืก ืื™ื– ืงืœืึธืจ ืึทื– ืœื™ื™ืขื ืขืŸ ื“ื™ 101 ืคึผืึธื–ื™ืฆื™ืข ืื™ื– ืคื™ืœ ืžืขืจ ื˜ื™ื™ึทืขืจ ื•ื•ื™ ื ืึธืจ ืœื™ื™ืขื ืขืŸ ื“ื™ 1 ืคึผืึธื–ื™ืฆื™ืข ืคึฟื•ืŸ ื“ื™ ื˜ืึทื‘ืœืขื˜.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืžื™ ืจ ื”ืื‘ ืŸ ื–ื™ ืš ื ืฐืฒืœ ืข ืืจื•ื™ืกื’ืขื›ืืคื˜ . ื–ื™ื™ ื’ืขื–ืื’ื˜: "ืื™ืฆื˜, ื ืขืึธ, ืื™ืจ ื•ื•ื™ืกืŸ ืงืึทื ื’ ืคื•! ืื™ืฆื˜ ืื•ื ื“ื–ืขืจ ื“ืขืจืคืึทืจื•ื ื’ ืื™ื– ืจืขื›ื˜ ืื•ื™ืฃ ื“ื™ื™ืŸ ืคืึทืจืฉื˜ืขืœืŸ. ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืขืก." [ืึทืจื˜ื™ืงืœ]

ืงืœืึธืฅ ืงืึทื ืกืึทืœืึทื“ื™ื™ืฉืึทืŸ

ืื•ื ื“ื–ืขืจ 1000 ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืึธื˜ืขืžืขืŸ ืึท ื–ื™ืคืฅ ืคื•ืŸ ืจืขืœื™ืขืฃ. ืึธื‘ืขืจ ืžื™ืจ ื”ืึธื‘ืŸ ืคืืจืฉื˜ืื ืขืŸ ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืœื•ื™ื– ื”ื•ื ื“ืขืจื˜ืขืจ ืคื•ืŸ "ืงืึทืžื‘ืึทื˜" ืกืขืจื•ื•ืขืจืก, ืื•ืŸ ืึทืœืข ื“ืขื "ืงืึธืคึผื™-ืคึผืึทืกื˜ืข" ืคื•ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืื™ื– ื ื™ืฉื˜ ื‘ืึทืงื•ื•ืขื. ืžื™ ืจ ื”ืื‘ ืŸ ื–ื™ ืš ืคืืจืฉื˜ืื ืขืŸ , ื ื– ืžื™ ืจ ื“ืืจืค ืŸ ื–ื™ ืš ืืœืฒืŸ ื–ืืžืœืขืŸ .

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืขืก ืื™ื– ืึท ื ืึธืจืžืึทืœ ืžืึธื“ื•ืœืข ื•ื•ืึธืก ืงืขื ืขืŸ ืงืœื™ื™ึทื‘ืŸ ืกื˜ืึทื˜ื™ืกื˜ื™ืง, ืึธื‘ืขืจ ืขืก ืื•ื™ืš ื“ืึทืจืฃ ื–ื™ื™ืŸ ืึทืงื˜ื™ื•ื•ื™ื™ื˜ื™ื“ ืื™ืŸ ื“ื™ ืงืึธื ืคื™ื’ - ื“ืึธืก pg_stat_statements module. ะะพ ะพะฝ ะฝะฐั ะฝะต ัƒัั‚ั€ะพะธะป.

ืคื™ืจืกื˜ืœื™, ืขืก ืึทืกื™ื™ื ื– ืฆื• ื“ื™ ื–ืขืœื‘ืข ืงื•ื•ื™ืจื™ื– ืžื™ื˜ ืคืึทืจืฉื™ื“ืขื ืข ืกืงื™ืžื– ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ืคืึทืจืฉื™ื“ืขื ืข QueryIds. ืึทื– ืื™ื–, ืื•ื™ื‘ ืื™ืจ ืขืจืฉื˜ืขืจ ื˜ืึธืŸ SET search_path = '01'; SELECT * FROM user LIMIT 1;ืื•ืŸ ื“ืขืจื™ื‘ืขืจ SET search_path = '02'; ืื•ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื‘ืขื˜ืŸ, ื“ื™ ืกื˜ืึทื˜ื™ืกื˜ื™ืง ืคื•ืŸ ื“ืขื ืžืึธื“ื•ืœืข ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืจืขืงืึธืจื“ืก, ืื•ืŸ ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ื–ืึทืžืœืขืŸ ืึทืœื’ืขืžื™ื™ื ืข ืกื˜ืึทื˜ื™ืกื˜ื™ืง ืกืคึผืึทืกื™ืคื™ืงืœื™ ืื™ืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืคื•ืŸ ื“ืขื ื‘ืขื˜ืŸ ืคึผืจืึธืคื™ืœ, ืึธืŸ ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ื“ื™ ืกืงื™ืžื–.

ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ืคื•ื ื˜ ื•ื•ืึธืก ืคึผืจื™ื•ื•ืขื ื˜ื™ื“ ืื•ื ื“ื– ืคื•ืŸ ื ื™ืฆืŸ ืขืก ืื™ื– ืžืึทื ื’ืœ ืคื•ืŸ ืคึผืœืึทื ื–. ื“ืึธืก ื”ื™ื™ืกื˜, ืขืก ืื™ื– ืงื™ื™ืŸ ืคึผืœืึทืŸ, ืขืก ืื™ื– ื‘ืœื•ื™ื– ื“ื™ ื‘ืงืฉื” ื–ื™ืš. ืžื™ืจ ื–ืขืŸ ื•ื•ืึธืก ืกืœืึธื•ื“ ืึทืจืึธืคึผ, ืึธื‘ืขืจ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก. ืื•ืŸ ื“ืึธ ืžื™ืจ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืฆื• ื“ื™ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ืึท ืจืึทืคึผืึทื“ืœื™ ื˜ืฉืึทื ื’ื™ื ื’ ื“ืึทื˜ืึทืกืขื˜.

ืื•ืŸ ื“ื™ ืœืขืฆื˜ืข ืžืึธืžืขื ื˜ - ืคืขืœืŸ ืคื•ืŸ "ืคืืงื˜ืŸ". ืึทื– ืื™ื–, ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ืึทื“ืจืขืก ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ืึธื ืคึฟืจืขื’ ื“ื•ืจื›ืคื™ืจื•ื ื’ - ืขืก ืื™ื– ื’ืึธืจื ื™ื˜, ืขืก ืื™ื– ื‘ืœื•ื™ื– ืึทื’ื’ืจืขื’ืึทื˜ืขื“ ืกื˜ืึทื˜ื™ืกื˜ื™ืง. ื›ืึธื˜ืฉ ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืขื, ืขืก ืื™ื– ื ืึธืจ ื–ื™ื™ืขืจ ืฉื•ื•ืขืจ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ืขืจื™ื‘ืข ืจ ื”ืื‘ ืŸ ืžื™ ืจ ื‘ืืฉืœืืก ืŸ ืฆ ื• ื‘ืืงืขืžืค ืŸ ืงืืคื™ึพืคืืกื˜ , ืื• ืŸ ืื ื’ืขื”ื•ื™ื‘ ืŸ ืฉืจืฒื‘ืŸ ื–ืึทืžืœืขืจ.

ื“ืขืจ ื–ืึทืžืœืขืจ ืงืึทื ืขืงืฅ ื“ื•ืจืš SSH, ื™ืกื˜ืึทื‘ืœื™ืฉื™ื– ืึท ื–ื™ื›ืขืจ ืงืฉืจ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืžื™ื˜ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื ื™ืฆืŸ ืึท ื‘ืึทื•ื•ื™ื™ึทื–ืŸ, ืื•ืŸ tail -F "ืงืœื™ื ื’ื–" ืฆื• ืขืก ืื™ืŸ ื“ื™ ืงืœืึธืฅ ื˜ืขืงืข. ืึทื–ื•ื™ ืื™ืŸ ื“ืขื ืกืขืกื™ืข ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ื’ืึทื ืฅ "ืฉืคึผื™ื’ืœ" ืคื•ืŸ ื“ื™ ื’ืื ืฆืข ืงืœืึธืฅ ื˜ืขืงืข, ื•ื•ืึธืก ื“ื™ ืกืขืจื•ื•ืขืจ ื“ื–ืฉืขื ืขืจื™ื™ืฅ. ื“ื™ ืžืึทืกืข ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ื–ื™ืš ืื™ื– ืžื™ื ื™ืžืึทืœ, ื•ื•ื™ื™ึทืœ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคึผืึทืจืก ืขืคึผืขืก ื“ืึธืจื˜, ืžื™ืจ ื ืึธืจ ืฉืคึผื™ื’ืœ ื“ื™ ืคืึทืจืงืขืจ.

ื–ื™ื ื˜ ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืกื˜ืึทืจื˜ืขื“ ืฉืจื™ื™ื‘ืŸ ื“ื™ ืฆื•ื‘ื™ื ื“ ืื™ืŸ Node.js, ืžื™ืจ ืคืึธืจื–ืขืฆืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืงืึทืœืขืงื˜ืขืจ ืื™ืŸ ืขืก. ืื•ืŸ ื“ืขื ื˜ืขื›ื ืึธืœืึธื’ื™ืข ื”ืื˜ ื’ืขืจืขื›ื˜ืคืืจื˜ื™ืงื˜ ื–ื™ืš, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื ืฆื• ื ื•ืฆืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืฉื•ื•ืึทืš ืคืึธืจืžืึทื˜ื˜ืขื“ ื˜ืขืงืกื˜ ื“ืึทื˜ืŸ, ื•ื•ืึธืก ืื™ื– ื“ื™ ืงืœืึธืฅ. ืื•ืŸ ื“ื™ Node.js ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ ื–ื™ืš ื•ื•ื™ ืึท ื‘ืึทืงืขื ื“ ืคึผืœืึทื˜ืคืึธืจืžืข ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื™ื™ื›ื˜ ืื•ืŸ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื ืขืฅ ืงืึทื ืขืงืฉืึทื ื–, ืื•ืŸ ื˜ืึทืงืข ืžื™ื˜ ืงื™ื™ืŸ ื“ืึทื˜ืŸ ืกื˜ืจื™ืžื–.

ืึทืงืงืึธืจื“ื™ื ื’ืœื™, ืžื™ืจ "ืื•ื™ืกืฉื˜ืจืขืงืŸ" ืฆื•ื•ื™ื™ ืงืึทื ืขืงืฉืึทื ื–: ื“ืขืจ ืขืจืฉื˜ืขืจ ืฆื• "ื”ืขืจืŸ" ืฆื• ื“ื™ ืงืœืึธืฅ ื–ื™ืš ืื•ืŸ ื ืขืžืขืŸ ืขืก ืฆื• ื–ื™ืš, ืื•ืŸ ื“ื™ ืจื’ืข ืฆื• ืคึผื™ืจื™ืึทื“ื™ืงืœื™ ืคืจืขื’ืŸ ื“ื™ ื‘ืึทื–ืข. "ืึธื‘ืขืจ ื“ืขืจ ืงืœืึธืฅ ื•ื•ื™ื™ื–ื˜ ืึทื– ื“ืขืจ ืฆื™ื™ื›ืŸ ืžื™ื˜ ืึธื™ื“ 123 ืื™ื– ืืคื’ืขืฉื˜ืขืœื˜," ืึธื‘ืขืจ ื“ืึธืก ื˜ื•ื˜ ื ื™ืฉื˜ ืžื™ื™ื ืขืŸ ืขืคึผืขืก ืคึฟืึทืจ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ, ืื•ืŸ ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืคื™ื™ึทืŸ ืฆื• ืคืจืขื’ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, "ื•ื•ืึธืก ืื™ื– ืึธื™ื“ = 123 ืกื™ื™ึท ื•ื•ื™ ืกื™ื™ึท?" ืื•ืŸ ืึทื–ื•ื™ ืžื™ืจ ืคึผื™ืจื™ืึทื“ื™ืงืœื™ ืคืจืขื’ืŸ ื“ื™ ื‘ืึทื–ืข ื•ื•ืึธืก ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื ืึธืš ื•ื•ื™ืกืŸ ื•ื•ืขื’ืŸ ื–ื™ืš.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

"ืขืก ืื™ื– ื‘ืœื•ื™ื– ืื™ื™ืŸ ื–ืึทืš ื•ื•ืึธืก ืื™ืจ ื”ืึธื˜ ื ื™ืฉื˜ ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ, ืขืก ืื™ื– ืึท ืžื™ื ื™ื ืคื•ืŸ ื”ืขืœืคืึทื ื“-ื•ื•ื™ ื‘ื™ื–! .." ืžื™ืจ ืกื˜ืึทืจื˜ืขื“ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ื“ืขื ืกื™ืกื˜ืขื ื•ื•ืขืŸ ืžื™ืจ ื’ืขื•ื•ืืœื˜ ืฆื• ืžืึธื ื™ื˜ืึธืจ 10 ืกืขืจื•ื•ืขืจืก. ื“ ื™ ืงืจื™ื˜ื™ืงืื˜ ืข ืื™ ืŸ ืื•ื ื“ื–ืข ืจ ืคืืจืฉื˜ืื ื“ , ืฐื ื ื–ืฒื ืข ืŸ ืื•ื™ืคื’ืขืฉื˜ืื ืข ืŸ ืขื˜ืœืขื› ืข ืคืจืื‘ืœืขืžืข ืŸ ืฐื ื ืื™ ื– ื’ืขืฐืข ืŸ ืฉืฐืข ืจ ืฆ ื• ื”ืื ื“ืœืขืŸ . ืึธื‘ืขืจ ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืคืขืจื˜ืœ, ืžื™ืจ ื‘ืืงื•ืžืขืŸ ืึท ื”ื•ื ื“ืขืจื˜ ืคึฟืึทืจ ืžืึธื ื™ื˜ืึธืจื™ื ื’ - ื•ื•ื™ื™ึทืœ ื“ื™ ืกื™ืกื˜ืขื ื’ืขืืจื‘ืขื˜, ืึทืœืขืžืขืŸ ื’ืขื•ื•ืืœื˜ ืขืก, ืึทืœืขืžืขืŸ ืื™ื– ื‘ืึทืงื•ื•ืขื.

ืึทืœืข ื“ืขื ื“ืึทืจืฃ ืฆื• ื–ื™ื™ืŸ ืฆื•ื’ืขื’ืขื‘ืŸ, ื“ื™ ื“ืึทื˜ืŸ ืœื•ื™ืคืŸ ืื™ื– ื’ืจื•ื™ืก ืื•ืŸ ืึทืงื˜ื™ื•ื•. ืื™ืŸ ืคืึทืงื˜, ื•ื•ืึธืก ืžื™ืจ ืžืึธื ื™ื˜ืึธืจ, ื•ื•ืึธืก ืžื™ืจ ืงืขื ืขืŸ ื”ืึทื ื“ืœืขืŸ ืžื™ื˜, ืื™ื– ื•ื•ืึธืก ืžื™ืจ ื ื•ืฆืŸ. ืžื™ืจ ืื•ื™ืš ื ื•ืฆืŸ PostgreSQL ื•ื•ื™ ืึท ื“ืึทื˜ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ. ืื•ืŸ ื’ืึธืจื ื™ืฉื˜ ืื™ื– ืคืึทืกื˜ืขืจ ืฆื• "ื’ื™ืกืŸ" ื“ืึทื˜ืŸ ืื™ืŸ ืขืก ื•ื•ื™ ื“ืขืจ ืึธืคึผืขืจืึทื˜ืึธืจ COPY ื ืืš ื ื™ืฉื˜.

ืึธื‘ืขืจ ืคืฉื•ื˜ "ื’ื™ืกืŸ" ื“ืึทื˜ืŸ ืื™ื– ื ื™ื˜ ื˜ืึทืงืข ืื•ื ื“ื–ืขืจ ื˜ืขื›ื ืึธืœืึธื’ื™ืข. ื•ื•ื™ื™ึทืœ ืื•ื™ื‘ ืื™ืจ ื”ืึธื‘ืŸ ื‘ืขืขืจืขืš 50 ืง ืจื™ืงื•ื•ืขืก ืคึผืขืจ ืกืขืงื•ื ื“ืข ืื•ื™ืฃ ืึท ื”ื•ื ื“ืขืจื˜ ืกืขืจื•ื•ืขืจืก, ื“ืึธืก ื•ื•ืขื˜ ื“ื–ืฉืขื ืขืจื™ื™ื˜ 100-150 ื’ื‘ ืคื•ืŸ ืœืึธื’ืก ืคึผืขืจ ื˜ืึธื’. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ืงืขืจืคืึทืœื™ "ืฉื ื™ื™ึทื“ืŸ" ื“ื™ ื‘ืึทื–ืข.

ืขืจืฉื˜ืขืจ, ืžื™ืจ ื”ืื‘ืŸ ืฆืขื˜ื™ื™ืœื•ื ื’ ื‘ื™ื™ ื˜ืึธื’, ื•ื•ื™ื™ืœ , ื‘ื’ื“ื•ืœ , ืงืฒื ืข ืจ ืื™ ื– ื ื™ืฉ ื˜ ืคืืจืื™ื ื˜ืขืจืขืกื™ืจ ื˜ ืื™ ืŸ ื“ืข ืจ ืคืืจืืฒื ื™ืงื•ื  ื’ ืฆืฐื™ืฉ ืŸ ื˜ืขื’ . ื•ื•ืึธืก ื—ื™ืœื•ืง ื˜ื•ื˜ ืขืก ืžืึทื›ืŸ ื•ื•ืึธืก ืื™ืจ ื”ืึธื˜ ื ืขื›ื˜ืŸ, ืื•ื™ื‘ ื”ื™ื™ึทื ื˜ ื‘ื™ื™ึท ื ืึทื›ื˜ ืื™ืจ ืจืึธื•ืœื“ ืื•ื™ืก ืึท ื ื™ื™ึทืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ - ืื•ืŸ ืฉื•ื™ืŸ ืขื˜ืœืขื›ืข ื ื™ื™ึทืข ืกื˜ืึทื˜ื™ืกื˜ื™ืง.

ืฆื•ื•ื™ื™ื˜ื ืก, ืžื™ืจ ื’ืขืœืขืจื ื˜ (ื–ืขื ืขืŸ ื’ืขืฆื•ื•ื•ื ื’ืขืŸ) ื–ื™ื™ืขืจ, ื–ื™ื™ืขืจ ืฉื ืขืœ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื ื™ืฆืŸ COPY. ื“ืึธืก ื”ืฒืกื˜, ื ื™ื˜ ื ืึธืจ COPYื•ื•ื™ื™ืœ ืขืจ ืื™ื– ืฉื ืขืœืขืจ ื•ื•ื™ INSERT, ืื•ืŸ ืืคื™ืœื• ืคืึทืกื˜ืขืจ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ื™ ื“ืจื™ื˜ ืคื•ื ื˜ - ืื™ืš ื’ืขื”ืื˜ ืฆื• ืคืึทืจืœืึธื–ืŸ ื˜ืจื™ื’ืขืจื–, ืจื™ืกืคึผืขืงื˜ื™ื•ื•ืœื™, ืื•ืŸ ืคืจืขืžื“ ืฉืœื™ืกืœืขืŸ. ื“ืึธืก ืื™ื–, ืžื™ืจ ื”ืึธื‘ืŸ ืงื™ื™ืŸ ืจืขืคืขืจืขื ื˜ืฉืึทืœ ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ืื™ืŸ ืึทืœืข. ื•ื•ื™ื™ึทืœ ืื•ื™ื‘ ืื™ืจ ื”ืึธื‘ืŸ ืึท ื˜ื™ืฉ ืžื™ื˜ ืึท ืคึผืึธืจ ืคื•ืŸ ืคืงืก, ืื•ืŸ ืื™ืจ ื–ืึธื’ืŸ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืกื˜ืจื•ืงื˜ื•ืจ ืึทื– "ื“ืึธ ืื™ื– ืึท ืงืœืึธืฅ ืจืขืงืึธืจื“ ื•ื•ืึธืก ืื™ื– ืจืขืคืขืจืจืขื“ ื“ื•ืจืš FK, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฆื• ืึท ื’ืจื•ืคึผืข ืคื•ืŸ โ€‹โ€‹ืจืขืงืึธืจื“ืก," ื“ืขืžืึธืœื˜ ื•ื•ืขืŸ ืื™ืจ ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืขืก, PostgreSQL ื”ืื˜ ื’ืึธืจื ื™ืฉื˜ ืœื™ื ืงืก ืึธื‘ืขืจ ื•ื•ื™ ืฆื• ื ืขืžืขืŸ ืขืก ืื•ืŸ ื˜ืึธืŸ ืขืก ืขืจืœืขืš SELECT 1 FROM master_fk1_table WHERE ... ืžื™ื˜ ื“ื™ ืื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจืŸ ื•ื•ืึธืก ืื™ืจ ืคึผืจื•ึผื•ื•ื˜ ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ - ื ืึธืจ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืจืขืงืึธืจื“ ืื™ื– ืคืึธืจืฉื˜ืขืœืŸ ื“ืึธืจื˜, ืึทื– ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ "ื‘ืจืขื›ืŸ ืึทื•ื•ืขืง" ื“ืขื ืคืจืขืžื“ ืฉืœื™ืกืœ ืžื™ื˜ ื“ื™ื™ืŸ ื™ื ืกืขืจืฉืึทืŸ.

ืึทื ืฉื˜ืึธื˜ ืื™ื™ืŸ ืจืขืงืึธืจื“ ืฆื• ื“ื™ ืฆื™ืœ ื˜ื™ืฉ ืื•ืŸ ื–ื™ื™ึทืŸ ื™ื ื“ืขืงืกื™ื–, ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืฆื•ื’ืขืœื™ื™ื’ื˜ ื ื•ืฅ ืคื•ืŸ ืœื™ื™ืขื ืขืŸ ืคื•ืŸ ืึทืœืข ื“ื™ ื˜ื™ืฉืŸ ืขืก ืจืขืคืขืจืก ืฆื•. ืึธื‘ืขืจ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ื“ืึธืก ื‘ื™ื™ึท ืึทืœืข - ืื•ื ื“ื–ืขืจ ืึทืจื‘ืขื˜ ืื™ื– ืฆื• ืจืขืงืึธืจื“ื™ืจืŸ ื•ื•ื™ ืคื™ืœ ื•ื•ื™ ืžืขื’ืœืขืš ืื•ืŸ ื•ื•ื™ ื’ืขืฉื•ื•ื™ื ื“ ื•ื•ื™ ืžืขื’ืœืขืš ืžื™ื˜ ื“ืขืจ ืžื™ื ื“ืกื˜ืขืจ ืžืึทืกืข. ืึทื–ื•ื™ FK - ืึทืจืึธืคึผ!

ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืคื•ื ื˜ ืื™ื– ืึทื’ื’ืจืขื’ืึทื˜ื™ืึธืŸ ืื•ืŸ ื›ืึทืฉื™ื ื’. ื˜ื›ื™ืœืขืก, ืžื™ืจ ื™ืžืคึผืœืึทืžืขื ืึทื“ ื–ื™ื™ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก - ื ืึธืš ืึทืœืข, ืขืก ืื™ื– ื‘ืึทืงื•ื•ืขื ืฆื• ื’ืœื™ื™ืš, ื•ื•ืขืŸ ืึท ืจืขืงืึธืจื“ ืงื•ืžื˜, ื˜ืึธืŸ ื“ืึธืก ืื™ืŸ ืึท ื˜ื™ืคึผ ืคื•ืŸ ื˜ืึทื‘ืœืขื˜ "ืคึผืœื•ืก ืื™ื™ื ืขืจ" ืจืขื›ื˜ ืื™ืŸ ื“ื™ ืฆื™ื ื’ืœ. ื ื•, ืขืก ืื™ื– ื‘ืึทืงื•ื•ืขื, ืึธื‘ืขืจ ื“ื™ ื–ืขืœื‘ืข ืฉืœืขื›ื˜ ื–ืึทืš - ืื™ืจ ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืื™ื™ืŸ ืจืขืงืึธืจื“, ืึธื‘ืขืจ ืื™ืจ ื–ืขื ื˜ ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืขืคึผืขืก ืึทื ื“ืขืจืฉ ืคื•ืŸ ืืŸ ืื ื“ืขืจ ื˜ื™ืฉ. ื“ืขืจืฆื•, ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื‘ืœื•ื™ื– ืœื™ื™ืขื ืขืŸ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ, ืื™ืจ ื˜ืึธืŸ ื“ืึธืก ืื•ื™ืš ื™ืขื“ืขืจ ืžืึธืœ.

ืื™ืฆื˜ ื™ืžืึทื“ื–ืฉืึทืŸ ืึทื– ืื™ืจ ื”ืึธื‘ืŸ ืึท ื˜ื™ืฉ ืื™ืŸ ื•ื•ืึธืก ืื™ืจ ื ืึธืจ ืฆื™ื™ืœืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืจื™ืงื•ื•ืขืก ื•ื•ืึธืก ื”ืึธื‘ืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ื“ื•ืจืš ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื‘ืึทืœืขื‘ืึธืก: +1, +1, +1, ..., +1. ืื•ืŸ ืื™ืจ, ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ื“ืึธืก - ื“ืึธืก ืื™ื– ืึทืœืข ืžืขื’ืœืขืš ืกืึทื›ืึทืงืœ ืื™ืŸ ื–ื›ึผืจื•ืŸ ืื•ื™ืฃ ื“ื™ ืงืึทืœืขืงื˜ืขืจ ืื•ืŸ ืฉื™ืงืŸ ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ืื™ื™ืŸ ื’ื™ื™ืŸ +10.

ื™ืึธ, ืื™ืŸ ืคืึทืœ ืคื•ืŸ ืขื˜ืœืขื›ืข ืคืจืื‘ืœืขืžืขืŸ, ื“ื™ื™ืŸ ืœืึทื“ื–ืฉื™ืงืึทืœ ืึธืจื ื˜ืœืขื›ืงื™ื™ึทื˜ ืงืขืŸ "ืคืึทืœืŸ ื‘ืึทื–ื•ื ื“ืขืจ", ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ืึท ื›ึผืžืขื˜ ืึทื ืจื™ืœื™ืกื˜ื™ืง ืคืึทืœ - ื•ื•ื™ื™ึทืœ ืื™ืจ ื”ืึธื‘ืŸ ืึท ื ืึธืจืžืึทืœ ืกืขืจื•ื•ืขืจ, ืขืก ื”ืื˜ ืึท ื‘ืึทื˜ืึทืจื™ื™ืข ืื™ืŸ ื“ื™ ืงืึธื ื˜ืจืึธืœืœืขืจ, ืื™ืจ ื”ืึธื‘ืŸ ืึท ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ืงืœืึธืฅ, ืึท ืงืœืึธืฅ ืื•ื™ืฃ ื“ื™ ืงืึทื ื˜ืจืึธื•ืœืขืจ. ื˜ืขืงืข ืกื™ืกื˜ืขื ... ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืขืก ืื™ื– ื ื™ืฉื˜ ื•ื•ืขืจื˜ ืขืก. ื“ื™ ืึธื ื•ื•ืขืจ ืคื•ืŸ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™ ืื™ืจ ื‘ืึทืงื•ืžืขืŸ ืคื•ืŸ ืคืœื™ืกื ื“ื™ืง ื˜ืจื™ื’ืขืจื– / FK ืื™ื– ื ื™ืฉื˜ ื•ื•ืขืจื˜ ื“ื™ ืงืึธืกื˜ ืื™ืจ ื™ื ืงืขืจ.

ืขืก ืื™ื– ื“ื™ ื–ืขืœื‘ืข ืžื™ื˜ ื›ืึทืฉื™ื ื’. ื ื’ืขื•ื•ื™ืกืข ื‘ืงืฉื” ืคืœื™ื˜ ืฆื• ื“ื™ืจ, ืžืขืŸ ืจืขื›ืขื ื˜ ื“ืขืจืคื•ืŸ ื ื’ืขื•ื•ื™ืกืข ืื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืฉืจื™ื™ื‘ื˜ ืขืก ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื•ืŸ ื“ืขืจืฆื™ื™ืœื˜ ืขืก ื“ืืŸ ืคืืจ ื™ืขื“ืŸ. ืึทืœืฅ ืื™ื– ื’ื•ื˜ ื‘ื™ื– ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ืจืขืงืึธืจื“ื™ื ื’ ืงื•ืžื˜ ืฆื• ืื™ืจ ืึท ืฆื•ื•ื™ื™ื˜ืขืจ ืžืขื ื˜ืฉ ื•ื•ืึธืก ื•ื•ื™ืœ ืจืขืงืึธืจื“ื™ืจืŸ ื“ื™ ื–ืขืœื‘ืข ื–ืึทืš - ืื•ืŸ ืื™ืจ ื•ื•ืขืจื˜ ื‘ืœืึทืงื˜, ืื•ืŸ ื“ืึธืก ืื™ื– ืฉื•ื™ืŸ ืฉืœืขื›ื˜. ื“ืขืจื™ื‘ืขืจ, ืื•ื™ื‘ ืื™ืจ ืงืขื ืขืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื“ื™ ื“ื•ืจ ืคื•ืŸ ืขื˜ืœืขื›ืข ื™ื“ืก ืฆื• ื“ืขื ืงืœื™ืขื ื˜ (ืงืึธืจืขื•ื• ืฆื• ื“ื™ ื“ืึทื˜ืึทื‘ืึทืกืข), ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ื˜ืึธืŸ ื“ืึธืก.

ืขืก ืื™ื– ืคึผื•ื ืงื˜ ื’ืื ืฅ ืคึฟืึทืจ ืื•ื ื“ื– ืฆื• ื ื•ืฆืŸ MD5 ืคื•ืŸ ื“ื™ ื˜ืขืงืกื˜ - ื‘ืขื˜ืŸ, ืคึผืœืึทืŸ, ืžื•ืกื˜ืขืจ, ... ืžื™ืจ ืจืขื›ืขื ืขืŸ ืขืก ืื•ื™ืฃ ื“ื™ ืงืึทืœืขืงื˜ืขืจ ื–ื™ื™ึทื˜, ืื•ืŸ "ื’ื™ืกืŸ" ื“ื™ ืคืึทืจื˜ื™ืง ID ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก. ื“ื™ ืœืขื ื’ ืคื•ืŸ MD5 ืื•ืŸ ื˜ืขื’ืœืขืš ืคึผืึทืจื˜ื™ืฉืึทื ื™ื ื’ ืœืึธื–ืŸ ืื•ื ื“ื– ื ื™ืฉื˜ ื–ืึธืจื’ ื•ื•ืขื’ืŸ ืžืขื’ืœืขืš ืงืึทืœื™ื–ืฉืึทื ื–.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืื‘ืขืจ ืื™ืŸ ืกื“ืจ ืฆื• ืจืขืงืึธืจื“ื™ืจืŸ ืึทืœืข ื“ืขื ื’ืขืฉื•ื•ื™ื ื“, ืžื™ืจ ื“ืืจืฃ ืฆื• ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ื“ื™ ืจืขืงืึธืจื“ื™ื ื’ ืคึผืจืึธืฆืขื“ื•ืจ ื–ื™ืš.

ื•ื•ื™ ื˜ืึธืŸ ืื™ืจ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืฉืจื™ื™ึทื‘ืŸ ื“ืึทื˜ืŸ? ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืžื™ืŸ ืคื•ืŸ ื“ืึทื˜ืึทื˜ืึทืก, ืžื™ืจ ืฉืคึผืึทืœื˜ืŸ ืขืก ืื™ืŸ ืขื˜ืœืขื›ืข ื˜ื™ืฉืŸ, ืื•ืŸ ื“ืขืžืึธืœื˜ ืงืึธืคึผื™ ืขืก - ืขืจืฉื˜ืขืจ ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ, ื“ืขืžืึธืœื˜ ืื™ืŸ ื“ื™ ืจื’ืข, ืื™ืŸ ื“ื™ ื“ืจื™ื˜ ... ืขืก ืื™ื– ื•ืžื‘ืึทืงื•ื•ืขื, ื•ื•ื™ื™ึทืœ ืžื™ืจ ื•ื™ืกืงื•ืžืขืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืื™ื™ืŸ ื“ืึทื˜ืŸ ื˜ื™ื™ึทืš ืื™ืŸ ื“ืจื™ื™ ืกื˜ืขืคึผืก ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™. ืื•ืžื‘ืืงื•ื•ืขื. ืงืขื ืขืŸ ืขืก ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืคืึทืกื˜ืขืจ? ืงืขื ืขืŸ!

ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืขืก ืื™ื– ื’ืขื ื•ื’ ื ืึธืจ ืฆื• ืฆืขืœื™ื™ื’ื  ื“ื™ ืคืœืึธื•ื– ืื™ืŸ ืคึผืึทืจืึทืœืขืœ ืžื™ื˜ ื™ืขื“ืขืจ ืื ื“ืขืจืขืจ. ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ืขืจืจืึธืจืก, ืจื™ืงื•ื•ืขืก, ื˜ืขืžืคึผืœืึทื˜ืขืก, ื‘ืœืึทืงื™ื ื’, ... ืคืœื™ืขื ื“ื™ืง ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ ืคึฟืขื“ืขื - ืื•ืŸ ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืึทืœืข ืื™ืŸ ืคึผืึทืจืึทืœืขืœ. ื’ืขื ื•ื’ ืคึฟืึทืจ ื“ืขื ื”ืึทืœื˜ืŸ ืึท ืงืึธืคึผื™ ืงืึทื ืึทืœ ืงืขืกื™ื™ื“ืขืจ ืึธืคืŸ ืคึฟืึทืจ ื™ืขื“ืขืจ ื™ื—ื™ื“ ืฆื™ืœ ื˜ื™ืฉ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ืึธืก ื”ืฒืกื˜, ื‘ืฒึทื ื–ืึทืžืœืขืจ ืขืก ืื™ื– ืฉื˜ืขื ื“ื™ืง ืึท ื˜ื™ื™ึทืš, ืื™ืŸ ื•ื•ืึธืก ืื™ืš ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ื“ืึทื˜ืŸ ืื™ืš ื“ืึทืจืคึฟืŸ. ืึธื‘ืขืจ ืึทื–ื•ื™ ืึทื– ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื–ืขื˜ ื“ื™ ื“ืึทื˜ืŸ, ืื•ืŸ ืขืžืขืฆืขืจ ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืกื˜ืึทืง ืื™ืŸ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ื“ื™ ื“ืึทื˜ืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขืฉืจื™ื‘ืŸ, COPY ืžื•ื–ืŸ ื–ื™ื™ืŸ ื™ื ื˜ืขืจืึทืคึผื˜ื™ื“ ืื™ืŸ ื–ื™ื›ืขืจ ื™ื ื˜ืขืจื•ื•ืึทืœื–. ืคึฟืึทืจ ืื•ื ื“ื–, ื“ื™ ืžืขืจืกื˜ ืขืคืขืงื˜ื™ื•ื• ืฆื™ื™ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื•ื•ืขื’ืŸ 100ms - ืžื™ืจ ืคืึทืจืžืึทื›ืŸ ืขืก ืื•ืŸ ืžื™ื“ ืขืคึฟืขื ืขืŸ ืขืก ื•ื•ื™ื“ืขืจ ืฆื• ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ื™ืฉ. ืื•ืŸ ืื•ื™ื‘ ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ื’ืขื ื•ื’ ืคื•ืŸ ืื™ื™ืŸ ืœื•ื™ืคืŸ ื‘ืขืฉืึทืก ืขื˜ืœืขื›ืข ืคึผื™ืงืก, ืžื™ืจ ื˜ืึธืŸ ืคึผืึธืึธืœื™ื ื’ ืึทืจื•ื™ืฃ ืฆื• ืึท ื–ื™ื›ืขืจ ืฉื™ืขื•ืจ.

ืื™ืŸ ื“ืขืจืฆื•, ืžื™ืจ ื’ืขืคื•ื ืขืŸ ืึทื– ืคึฟืึทืจ ืึทื–ืึท ืึท ืžืึทืกืข ืคึผืจืึธืคื™ืœ, ืงื™ื™ืŸ ืึทื’ื’ืจืขื’ืึทื˜ื™ืึธืŸ, ื•ื•ืขืŸ ืจืขืงืึธืจื“ืก ื–ืขื ืขืŸ ื’ืขื–ืืžืœื˜ ืื™ืŸ ื‘ืึทื˜ืฉืึทื–, ืื™ื– ื‘ื™ื™ื–. ืงืœืึทืกื™ืฉ ื‘ื™ื™ื– ืื™ื– INSERT ... VALUES ืื•ืŸ ื ืึธืš 1000 ืจืขืงืึธืจื“ืก. ื•ื•ื™ื™ึทืœ ืื™ืŸ ื“ืขื ืคื•ื ื˜ ืื™ืจ ื”ืึธื‘ืŸ ืึท ืฉืจื™ื™ึทื‘ืŸ ืฉืคึผื™ืฅ ืื•ื™ืฃ ื“ื™ ืžื™ื“ื™ืึท, ืื•ืŸ ืึทืœืขืžืขืŸ ืึทื ื“ืขืจืฉ ื˜ืจื™ื™ื ื’ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืขืคึผืขืก ืฆื• ื“ื™ ื“ื™ืกืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ื•ื•ืืจื˜ืŸ.

ืฆื• ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคืจื™ื™ึทืขืŸ ืคื•ืŸ ืึทื–ืึท ืึทื ืึทืžืึทืœื™ื–, ืคืฉื•ื˜ ื˜ืึธืŸ ื ื™ื˜ ืึทื’ื’ืจืขื’ื™ืจืŸ ืขืคึผืขืก, ื‘ืึทืคืขืจ ื’ืึธืจ ื ื™ื˜. ืื•ืŸ ืื•ื™ื‘ ื‘ืึทืคืขืจื™ื ื’ ืฆื• ื“ื™ืกืง ืื™ื– ื’ืขืฉืขืŸ (ืฆื•ื ื’ืœื™ืง, ื“ื™ Stream API ืื™ืŸ Node.js ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืขืก) - ืึธืคึผืœื™ื™ื’ืŸ ื“ืขื ืงืฉืจ. ื•ื•ืขืŸ ืื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ื’ืขืฉืขืขื ื™ืฉ ืึทื– ืขืก ืื™ื– ืคืจื™ื™ ื•ื•ื™ื“ืขืจ, ืฉืจื™ื™ึทื‘ืŸ ืฆื• ืื™ื ืคึฟื•ืŸ ื“ื™ ืึทืงื™ื•ืžื™ืึทืœื™ื™ื˜ื™ื“ ืจื™ื™. ืื•ืŸ ื‘ืฉืขืช ืขืก ืื™ื– ืคืึทืจื ื•ืžืขืŸ, ื ืขืžืขืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ืคืจื™ื™ ืคื•ืŸ ื“ื™ ื‘ืขืงืŸ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืฆื• ืื™ื.

ืื™ื™ื“ืขืจ ื™ื ื˜ืจืึธื•ื“ื•ืกื™ื ื’ ื“ืขื ืฆื•ื’ืึทื ื’ ืฆื• ื“ืึทื˜ืŸ ืจืขืงืึธืจื“ื™ื ื’, ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืขืขืจืขืš 4K ืฉืจื™ื™ึทื‘ืŸ ืึธืคึผืก, ืื•ืŸ ืื™ืŸ ื“ืขื ื•ื•ืขื’ ืžื™ืจ ืจื™ื“ื•ืกื˜ ื“ื™ ืžืึทืกืข ืžื™ื˜ 4 ืžืืœ. ืื™ืฆื˜ ื–ื™ื™ ื”ืึธื‘ืŸ ื’ืขื•ื•ืืงืกืŸ ื ืึธืš 6 ืžืืœ ืจืขื›ื˜ ืฆื• ื ื™ื™ึทืข ืžืึธื ื™ื˜ืึธืจืขื“ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– - ืึทืจื•ื™ืฃ ืฆื• 100 ืžื‘ / s. ืื•ืŸ ืื™ืฆื˜ ืžื™ืจ ืงืจืึธื ืœืึธื’ืก ืคึฟืึทืจ ื“ื™ ืœืขืฆื˜ืข 3 ื—ื“ืฉื™ื ืื™ืŸ ืึท ื‘ืึทื ื“ ืคื•ืŸ ื•ื•ืขื’ืŸ 10-15 ื˜ื‘, ื›ืึธื•ืคึผื™ื ื’ ืึทื– ืื™ืŸ ื‘ืœื•ื™ื– ื“ืจื™ื™ ื—ื“ืฉื™ื ื™ืขื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื•ื•ืขื˜ ืงืขื ืขืŸ ืฆื• ืกืึธืœื•ื•ืข ืงื™ื™ืŸ ืคึผืจืึธื‘ืœืขื.

ืžื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืคืจืื‘ืœืขืžืขืŸ

ืื‘ืขืจ ืคืฉื•ื˜ ืงืึทืœืขืงื˜ื™ื ื’ ืึทืœืข ื“ื™ ื“ืึทื˜ืŸ ืื™ื– ื’ื•ื˜, ื ื•ืฆื™ืง, ื‘ืึทื˜ื™ื™ึทื˜ื™ืง, ืึธื‘ืขืจ ื ื™ืฉื˜ ื’ืขื ื•ื’ - ืขืก ื“ืึทืจืฃ ืฆื• ื–ื™ื™ืŸ ืคืืจืฉื˜ืื ืขืŸ. ื•ื•ื™ื™ึทืœ ื“ืึธืก ื–ืขื ืขืŸ ืžื™ืœื™ืึทื ื– ืคื•ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืคึผืœืึทื ื– ืคึผืขืจ ื˜ืึธื’.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ืื‘ืขืจ ืžื™ืœื™ืึทื ื– ื–ืขื ืขืŸ ืึทื ืžืึทื ื™ื“ื–ืฉืึทื‘ืึทืœ, ืžื™ืจ ืžื•ื–ืŸ ืขืจืฉื˜ืขืจ ื˜ืึธืŸ "ืงืœืขื ืขืจืŸ". ืื•ืŸ, ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืฉืœื™ืกืŸ ื•ื•ื™ ืื™ืจ ื•ื•ืขื˜ ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ื“ืขื "ืงืœืขื ืขืจืข" ื–ืึทืš.

ืžื™ืจ ื”ืึธื‘ืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“ ื“ืจื™ื™ึท ื”ื•ื™ืคึผื˜ ืคื•ื ืงื˜ืŸ:

  • ื•ื•ืขืจ ื’ืขืฉื™ืงื˜ ื“ืขื ื‘ืงืฉื”
    ื“ืึธืก ืื™ื–, ืคึฟื•ืŸ ื•ื•ืึธืก ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– "ืึธื ืงื•ืžืขืŸ": ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“, ื‘ืึทืงืขื ื“, ืฆืึธืœื•ื ื’ ืกื™ืกื˜ืขื ืึธื“ืขืจ ืขืคึผืขืก ืึทื ื“ืขืจืฉ.
  • ื•ื•ื• ืขืก ืื™ื– ื’ืขืฉืขืŸ
    ืื•ื™ืฃ ื•ื•ืึธืก ืกืคึผืขืฆื™ืคื™ืฉ ืกืขืจื•ื•ืขืจ? ื•ื•ื™ื™ึทืœ ืื•ื™ื‘ ืื™ืจ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืกืขืจื•ื•ืขืจืก ืื•ื ื˜ืขืจ ืื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืื•ืŸ ืคึผืœื•ืฆืœื™ื ื’ ืื™ื™ื ืขืจ "ื’ื™ื™ื˜ ื ืึทืจื™ืฉ" (ื•ื•ื™ื™ึทืœ ื“ืขืจ "ื“ื™ืกืง ืื™ื– ืคึผืึทืกืงื•ื“ื ืข", "ื–ื™ืงืึธืจืŸ ืœื™ืงื˜", ืขื˜ืœืขื›ืข ืื ื“ืขืจืข ืคึผืจืึธื‘ืœืขื), ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทื“ืจืขืก ื“ืขื ืกืขืจื•ื•ืขืจ ืกืคึผืึทืกื™ืคื™ืงืœื™.
  • ื•ื•ื™ ื“ื™ ืคึผืจืึธื‘ืœืขื ืื ื˜ืคืœืขืงื˜ ื–ื™ืš ืื™ืŸ ืื™ื™ืŸ ื•ื•ืขื’ ืึธื“ืขืจ ืื ื“ืขืจืŸ

ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ "ื•ื•ืขืจ" ื”ืึธื˜ ืื•ื ื“ื– ื’ืขืฉื™ืงื˜ ืึท ื‘ืงืฉื”, ืžื™ืจ ื ื•ืฆืŸ ืึท ื ืึธืจืžืึทืœ ื’ืขืฆื™ื™ึทื’ - ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึท ืกืขืกื™ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง: SET application_name = '{bl-host}:{bl-method}'; - ืžื™ืจ ืฉื™ืงืŸ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื’ืขืฉืขืคื˜ ืœืึธื’ื™ืง ื‘ืึทืœืขื‘ืึธืก ืคื•ืŸ ื•ื•ืึธืก ื“ื™ ื‘ืงืฉื” ืงื•ืžื˜, ืื•ืŸ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ืขื ืื•ืคึฟืŸ ืึธื“ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทื– ื™ื ื™ืฉื™ื™ื™ื˜ื™ื“ ืขืก.

ื ืึธืš ืžื™ืจ ื”ืึธื‘ืŸ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ื“ื™ "ื‘ืึทื–ื™ืฆืขืจ" ืคื•ืŸ ื“ื™ ื‘ืขื˜ืŸ, ืขืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ืจืขื–ื•ืœื˜ืึทื˜ ืฆื• ื“ื™ ืงืœืึธืฅ - ืคึฟืึทืจ ื“ืขื ืžื™ืจ ืงืึทื ืคื™ื’ื™ืขืจ ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง log_line_prefix = ' %m [%p:%v] [%d] %r %a'. ืคึฟืึทืจ ื“ื™ ืื™ื ื˜ืขืจืขืกื™ืจื˜, ืืคึฟืฉืจ ืงื•ืง ืื™ืŸ ื“ื™ ืžืึทื ื•ืึทืœื•ื•ืึธืก ื˜ื•ื˜ ื“ืึธืก ืึทืœืข ืžื™ื™ื ืขืŸ. ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ืžื™ืจ ื–ืขืŸ ืื™ืŸ ื“ื™ ืงืœืึธืฅ:

  • ืฆื™ื™ึทื˜
  • ืคึผืจืึธืฆืขืก ืื•ืŸ ื˜ืจืึทื ืกืึทืงื˜ื™ืึธืŸ ื™ื“ืขื ื˜ื™ืคื™ืขืจืก
  • ื“ื™ื™ื˜ืึทื‘ื™ื™ืก ื ืึธืžืขืŸ
  • IP ืคื•ืŸ ื“ืขืจ ืžืขื ื˜ืฉ ื•ื•ืืก ื’ืขืฉื™ืงื˜ ื“ืขื ื‘ืงืฉื”
  • ืื•ืŸ ืื•ืคึฟืŸ ื ืึธืžืขืŸ

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ืขืจื ืึธืš ืžื™ืจ ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืขืก ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ืฆื• ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืงืึธืจืึทืœื™ื™ืฉืึทืŸ ืคึฟืึทืจ ืื™ื™ืŸ ื‘ืงืฉื” ืฆื•ื•ื™ืฉืŸ ืคืึทืจืฉื™ื“ืขื ืข ืกืขืจื•ื•ืขืจืก. ืขืก ืื™ื– ื ื™ืฉื˜ ืึธืคื˜ ืึทื– ืื™ืจ ื”ืึธื‘ืŸ ืึท ืกื™ื˜ื•ืึทืฆื™ืข ื•ื•ื• ืื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืกืงืจื•ื– ืึทืจื•ื™ืฃ ื’ืœื™ื™ึทืš ื“ืึธ ืื•ืŸ ื“ืึธืจื˜. ืึธื‘ืขืจ ืืคื™ืœื• ืื•ื™ื‘ ื“ืึธืก ืื™ื– ื“ื™ ื–ืขืœื‘ืข, ืงื•ืง ืื™ืŸ ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจืก.

ืึทื–ื•ื™ ื“ืึธ ืก ื“ื™ ืฉื ื™ื™ึทื“ืŸ "ืื™ื™ืŸ ืกืขืจื•ื•ืขืจ - ืื™ื™ืŸ ื˜ืึธื’" ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขื ื•ื’ ืคึฟืึทืจ ืื•ื ื“ื– ืคึฟืึทืจ ืงื™ื™ืŸ ืึทื ืึทืœื™ืกื™ืก.

ื“ืขืจ ืขืจืฉื˜ืขืจ ืึทื ืึทืœื™ืกื™ืก ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืื™ื– ื“ื™ ื–ืขืœื‘ืข "ืžื•ืกื˜ืขืจ" - ืึท ืึทื‘ืจื™ื•ื•ื™ื™ื™ื˜ื™ื“ ืคืึธืจืขื ืคื•ืŸ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืคื•ืŸ ื“ืขื ืคึผืœืึทืŸ, ืงืœื™ืจื“ ืคื•ืŸ ืึทืœืข ื ื•ืžืขืจื™ืงืึทืœ ื™ื ื“ืึทืงื™ื™ื˜ืขืจื–. ื“ื™ ืจื’ืข ื“ื•ืจื›ืฉื ื™ื˜ ืื™ื– ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึธื“ืขืจ ืื•ืคึฟืŸ, ืื•ืŸ ื“ื™ ื“ืจื™ื˜ ืฉื ื™ื™ึทื“ืŸ ืื™ื– ื“ื™ ืกืคึผืขืฆื™ืคื™ืฉ ืคึผืœืึทืŸ ื ืึธื“ืข ื•ื•ืึธืก ื’ืขืคึฟื™ืจื˜ ืื•ื ื“ื– ืคึผืจืึธื‘ืœืขืžืก.

ื•ื•ืขืŸ ืžื™ืจ ืืจื™ื‘ืขืจื’ืขืคืืจืŸ ืคื•ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ื™ื ืกื˜ืึทื ืกื™ื– ืฆื• ื˜ืขืžืคึผืœืึทื˜ืขืก, ืžื™ืจ ื”ืึธื‘ืŸ ืฆื•ื•ื™ื™ ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืื™ืŸ ืึทืžืึธืœ:

  • ืงื™ื™ืคืœ ืจืขื“ื•ืงืฆื™ืข ืื™ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ืคึฟืึทืจ ืึทื ืึทืœื™ืกื™ืก
    ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ืึทื ืึทืœื™ื™ื– ื“ื™ ืคึผืจืึธื‘ืœืขื ื ื™ื˜ ืžืขืจ ื“ื•ืจืš ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ืคึฟืจืื’ืŸ ืึธื“ืขืจ ืคึผืœืึทื ื–, ืึธื‘ืขืจ ื“ื•ืจืš ื“ืึทื–ืึทื ื– ืคื•ืŸ ื˜ืขืžืคึผืœืึทื˜ืขืก.
  • ื˜ื™ื™ืžืœื™ื™ืŸ
    ืึทื– ืื™ื–, ื“ื•ืจืš ืกืึทืžืขืจื™ื™ื–ื™ื ื’ ื“ื™ "ืคืืงื˜ืŸ" ืื™ืŸ ืึท ื–ื™ื›ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’, ืื™ืจ ืงืขื ืขืŸ ื•ื•ื™ื™ึทื–ืŸ ื–ื™ื™ืขืจ ืื•ื™ืกื–ืขืŸ ื‘ืขืฉืึทืก ื“ืขื ื˜ืึธื’. ืื•ืŸ ื“ื ืงืขืŸ ืžืขืŸ ืคืืจืฉื˜ื™ื™ืŸ ืื– ืื•ื™ื‘ ื”ืืกื˜ื• ืขืคืขืก ื ืžื•ืกื˜ืขืจ ื•ื•ืืก ืคืืกื™ืจื˜, ืœืžืฉืœ ืื™ื™ืŸ ืžืืœ ื ืฉืขื”, ืื‘ืขืจ ืขืก ื–ืืœ ืคืืกื™ืจืŸ ืื™ื™ื ืžืืœ ื ื˜ืื’, ื–ืืœื˜ โ€‹โ€‹ืื™ืจ ื˜ืจืื›ื˜ืŸ ื•ื•ืืก ืื™ื– ื’ืขื•ื•ืขืŸ ืื•ืžืจืขื›ื˜ - ื•ื•ืขืจ ื”ืื˜ ื“ืืก ื’ื•ืจื ื’ืขื•ื•ืขืŸ ืื•ืŸ ืคืืจื•ื•ืืก, ืืคืฉืจ ื–ืืœ ืขืก ื–ื™ื™ืŸ ื“ื ื–ืึธืœ ื ื™ืฉื˜. ื“ืึธืก ืื™ื– ืืŸ ืื ื“ืขืจ ื ื™ื˜-ื ื•ืžืขืจื™ืงืึทืœ, ืจื™ื™ืŸ ื•ื•ื™ื–ืฉืึทื•ื•ืึทืœ, ืึทื ืึทืœื™ืกื™ืก ืื•ืคึฟืŸ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื“ื™ ืจื•ืขืŸ ืžืขื˜ื”ืึธื“ืก ื–ืขื ืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื™ื ื“ื™ืงืึทื˜ืึธืจืก ื•ื•ืึธืก ืžื™ืจ ืขืงืกื˜ืจืึทืงื˜ ืคื•ืŸ ื“ืขื ืคึผืœืึทืŸ: ื•ื•ื™ ืคื™ืœืข ืžืึธืœ ืึทื–ืึท ืึท ืžื•ืกื˜ืขืจ ืื™ื– ืคืืจื’ืขืงื•ืžืขืŸ, ื“ื™ ื’ืึทื ืฅ ืื•ืŸ ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืฆื™ื™ื˜, ื•ื•ื™ ืคื™ืœ ื“ืึทื˜ืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ืœื™ื™ืขื ืขืŸ ืคื•ืŸ ื“ื™ ื“ื™ืกืง ืื•ืŸ ื•ื•ื™ ืคื™ืœ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ...

ื•ื•ื™ื™ึทืœ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืจ ืงื•ืžืขืŸ ืฆื• ื“ื™ ืึทื ืึทืœื™ื˜ื™ืงืก ื‘ืœืึทื˜ ืคึฟืึทืจ ื“ืขืจ ื‘ืึทืœืขื‘ืึธืก, ืงื•ืง - ืขืคึผืขืก ืื™ื– ืกื˜ืึทืจื˜ื™ื ื’ ืฆื• ืœื™ื™ืขื ืขืŸ ืฆื• ืคื™ืœ ืื•ื™ืฃ ื“ื™ ื“ื™ืกืง. ื“ืขืจ ื“ื™ืกืง ืื•ื™ืฃ ื“ื™ ืกืขืจื•ื•ืขืจ ืงืขืŸ ื ื™ืฉื˜ ืฉืขืคึผืŸ ืขืก - ื•ื•ืขืจ ืœื™ื™ืขื ื˜ ืคื•ืŸ ืื™ื?

ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ืกืึธืจื˜ ื“ื•ืจืš ืงื™ื™ืŸ ื–ื™ื™ึทืœ ืื•ืŸ ื‘ืึทืฉืœื™ืกืŸ ื•ื•ืึธืก ืื™ืจ ื•ื•ืขื˜ ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ืจืขื›ื˜ ืื™ืฆื˜ - ื“ื™ ืžืึทืกืข ืื•ื™ืฃ ื“ื™ ืคึผืจืึทืกืขืกืขืจ ืึธื“ืขืจ ื“ื™ ื“ื™ืกืง, ืึธื“ืขืจ ื“ื™ ื’ืึทื ืฅ ื ื•ืžืขืจ ืคื•ืŸ ืจื™ืงื•ื•ืขืก ... ืžื™ืจ ืกืึธืจื˜ื™ื“ ืขืก, ื’ืขืงื•ืงื˜ ืื•ื™ืฃ ื“ื™ "ืฉืคึผื™ืฅ" ืึธื ืขืก, ืคืึทืจืคืขืกื˜ื™ืงื˜ ืขืก ืื•ืŸ ืจืึธื•ืœื“ ืึท ื ื™ื™ึทืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.
[ื•ื•ื™ื“ืขื ืœืขืงืฆื™ืข]

ืื•ืŸ ื’ืœื™ื™ืš ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืคืึทืจืฉื™ื“ืขื ืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื•ื•ืึธืก ืงื•ืžืขืŸ ืžื™ื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืžื•ืกื˜ืขืจ ืคึฟื•ืŸ ืึท ื‘ืงืฉื” ื•ื•ื™ SELECT * FROM users WHERE login = 'Vasya'. ืคืจืึธื ื˜ืขื ื“, ื‘ืึทืงืขื ื“, ืคึผืจืึทืกืขืกื™ื ื’... ืื•ืŸ ืื™ืจ ื•ื•ื•ื ื“ืขืจ ื•ื•ืึธืก ืคึผืจืึทืกืขืกื™ื ื’ ื•ื•ืึธืœื˜ ืœื™ื™ืขื ืขืŸ ื“ืขื ื‘ืึทื ื™ืฆืขืจ ืื•ื™ื‘ ืขืจ ื˜ื•ื˜ ื ื™ืฉื˜ ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ืื™ื.

ื“ืขืจ ืคืึทืจืงืขืจื˜ ื•ื•ืขื’ ืื™ื– ืฆื• ืžื™ื“ ื–ืขืŸ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืึธืก ืขืก ื˜ื•ื˜. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ืคืจืึธื ื˜ืขื ื“ ืื™ื– ื“ืึธืก, ื“ืึธืก, ื“ืึธืก, ืื•ืŸ ื“ืึธืก ืึทืžืึธืœ ืึท ืฉืขื” (ื“ื™ ื˜ื™ื™ืžืœื™ื™ืŸ ื”ืขืœืคึผืก). ืื•ืŸ ื“ื™ ืงืฉื™ื ื’ืœื™ื™ืš ืขืจื™ื™ื–ืึทื–: ืขืก ืžื™ื™ื ื˜ ื•ื•ื™ ืขืก ืื™ื– ื ื™ืฉื˜ ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ ื“ื™ ืคืจืึธื ื˜ืขื ื“ ืฆื• ื˜ืึธืŸ ืขืคึผืขืก ืึทืžืึธืœ ืึท ืฉืขื” ...

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื ืึธืš ืขื˜ืœืขื›ืข ืžืึธืœ, ืžื™ืจ ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืžื™ืจ ืคืขืœืŸ ืึทื’ื’ืจืขื’ืึทื˜ืขื“ ืกื˜ืึทื˜ื™ืกื˜ื™ืง ื“ื•ืจืš ืคึผืœืึทืŸ ื ืึธื•ื“ื–. ืžื™ืจ ืืคื’ืขื–ื•ื ื“ืขืจื˜ ืคื•ืŸ ื“ื™ ืคึผืœืึทื ื– ื‘ืœื•ื™ื– ื“ื™ ื ืึธื•ื“ื– ื•ื•ืึธืก ื˜ืึธืŸ ืขืคึผืขืก ืžื™ื˜ ื“ื™ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ื˜ื™ืฉืŸ ื–ื™ืš (ืœื™ื™ืขื ืขืŸ / ืฉืจื™ื™ึทื‘ืŸ ื–ื™ื™ ื“ื•ืจืš ืื™ื ื“ืขืงืก ืึธื“ืขืจ ื ื™ืฉื˜). ืื™ืŸ ืคืึทืงื˜, ื‘ืœื•ื™ื– ืื™ื™ืŸ ืึทืกืคึผืขืงื˜ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ ืงืึธืจืขื•ื• ืฆื• ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ืœื“ - ื•ื•ื™ ืคื™ืœืข ืจืขืงืึธืจื“ืก ื”ืื˜ ื“ืขื ื ืึธื“ืข ืื•ื ื“ื– ื’ืขื‘ืจืื›ื˜?, ืื•ืŸ ื•ื•ื™ ืคื™ืœืข ื–ืขื ืขืŸ ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ (ืจืึธื•ื• ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ ื“ื•ืจืš ืคื™ืœื˜ืขืจ).

ืื™ืจ ื”ืึธื˜ ื ื™ืฉื˜ ืึท ืคึผืึทืกื™ืง ืื™ื ื“ืขืงืก ืื•ื™ืฃ ื“ื™ ื˜ืขืœืขืจ, ืื™ืจ ืžืึทื›ืŸ ืึท ื‘ืงืฉื” ืฆื• ืื™ื, ืขืก ืคืœื™ืขืก ืคึฟืึทืจ ื“ื™ ืื™ื ื“ืขืงืก, ืคืืœื˜ ืื™ืŸ Seq Scan ... ืื™ืจ ื”ืึธื˜ ืคื™ืœื˜ืขืจื“ ืึทืœืข ืจืขืงืึธืจื“ืก ืึทื—ื•ืฅ ืื™ื™ืŸ. ืคืืจื•ื•ืืก ื˜ืึธืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ 100 ื ืคื™ืœื˜ืขืจื“ ืจืขืงืึธืจื“ืก ืคึผืขืจ ื˜ืึธื’? ืื™ื– ืขืก ื ื™ืฉื˜ ื‘ืขืกืขืจ ืฆื• ืจืึธื•ืœื“ ืึทืจื•ื™ืฃ ื“ื™ ืื™ื ื“ืขืงืก?

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

ื ืึธืš ืึทื ืึทืœื™ื™ื–ื“ ืึทืœืข ื“ื™ ืคึผืœืึทื ื– ื ืึธื“ืข ื“ื•ืจืš ื ืึธื“ืข, ืžื™ืจ ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื˜ื™ืคึผื™ืฉ ืกื˜ืจืึทืงื˜ืฉืขืจื– ืื™ืŸ ื“ื™ ืคึผืœืึทื ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ืžืกืชึผืžื ืฆื• ืงื•ืงืŸ ืกืึทืกืคึผื™ืฉืึทืก. ืื•ืŸ ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืคื™ื™ึทืŸ ืฆื• ื–ืึธื’ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ: "ืคืจื™ื™ึทื ื“, ื“ืึธ ืื™ืจ ืขืจืฉื˜ืขืจ ืœื™ื™ืขื ืขืŸ ื“ื•ืจืš ืื™ื ื“ืขืงืก, ื“ืขืžืึธืœื˜ ืกืึธืจื˜, ืื•ืŸ ื“ืขืžืึธืœื˜ ืฉื ื™ื™ึทื“ืŸ ืึทื•ื•ืขืง" - ื•ื•ื™ ืึท ื”ืขืจืฉืŸ, ืขืก ืื™ื– ืื™ื™ืŸ ืจืขืงืึธืจื“.

ื™ืขื“ืขืจ ื•ื•ืืก ื”ืื˜ ื’ืขืฉืจื™ื‘ืŸ ืคืจืื’ืขืก ื”ืื˜ ืžืกืชืžื ื’ืขื˜ืจืืคืขืŸ ื“ืขื ืžื•ืกื˜ืขืจ: "ื’ื™ื‘ ืžื™ืจ ื“ื™ ืœืขืฆื˜ืข ื‘ืืคืขืœ ืคืืจ ื•ื•ืืกื™ื, ื–ื™ื™ืŸ ื“ืื˜ื•ื." ืื•ืŸ ืื•ื™ื‘ ืื™ืจ ื”ืื˜ ื ื™ืฉื˜ ืงื™ื™ืŸ ืื™ื ื“ืขืงืก ืœื•ื™ื˜ ื“ืื˜ื•ื, ืื“ืขืจ ืขืก ืื™ื– ื ื™ืฉื˜ ื“ื ืงื™ื™ืŸ ื“ืื˜ื•ื ืื™ืŸ ื“ืขื ืื™ื ื“ืขืงืก ื•ื•ืืก ืื™ืจ ื”ืื˜ ื’ืขื ื•ืฆื˜, ื˜ืจืขื˜ืŸ ืื•ื™ืฃ ืคึผื•ื ืงื˜ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ "ื’ืจืึทื‘ืœื™ืข".

ืึธื‘ืขืจ ืžื™ืจ ื•ื•ื™ืกืŸ ืึทื– ื“ืึธืก ืื™ื– ืึท "ื’ืจืึทื‘ืœื™ืข" - ืึทื–ื•ื™ ื•ื•ืึธืก ื ื™ื˜ ื’ืœื™ื™ืš ื–ืึธื’ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื•ื•ืึธืก ืขืจ ื–ืึธืœ ื˜ืึธืŸ. ื“ืขืจื™ื‘ืขืจ, ื•ื•ืขืŸ ืขืคืŸ ืึท ืคึผืœืึทืŸ ืื™ืฆื˜, ืื•ื ื“ื–ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื’ืœื™ื™ืš ื–ืขื˜ ืึท ืฉื™ื™ืŸ ื‘ื™ืœื“ ืžื™ื˜ ืขืฆื•ืช, ื•ื•ื• ื–ื™ื™ ืžื™ื“ ื–ืึธื’ืŸ ืื™ื: "ืื™ืจ ื”ืึธื‘ืŸ ืคึผืจืึธื‘ืœืขืžืก ื“ืึธ ืื•ืŸ ื“ืึธืจื˜, ืึธื‘ืขืจ ื–ื™ื™ ื–ืขื ืขืŸ ืกืึทืœื•ื•ื“ ืึทื–ื•ื™ ืื•ืŸ ืึทื– ื•ื•ืขื’."

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ื™ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ื“ืขืจืคืึทืจื•ื ื’ ื•ื•ืึธืก ืื™ื– ื“ืืจืฃ ืฆื• ืกืึธืœื•ื•ืข ืคึผืจืึธื‘ืœืขืžืก ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืื•ืŸ ืื™ืฆื˜ ืื™ื– ื‘ืื˜ื™ื™ื˜ื™ืง ื“ืจืึทืคึผื˜. ื“ืึธืก ืื™ื– ื“ืขืจ ืžื™ืŸ ืคื•ืŸ ืžื›ืฉื™ืจื™ื ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ.

ืคืึทืจื ืขื ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ PostgreSQL ืคึฟืจืื’ืŸ. ืงื™ืจื™ืœ ื‘ืึธืจืึธื•ื•ื™ืงืึธื•ื• (ื˜ืขื ืกื•ืจ)

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’