PostgreSQL ื•ื”ื’ื“ืจื•ืช ืขืงื‘ื™ื•ืช ื›ืชื™ื‘ื” ืกืคืฆื™ืคื™ื•ืช ืœื—ื™ื‘ื•ืจ

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

PostgreSQL ื•ื”ื’ื“ืจื•ืช ืขืงื‘ื™ื•ืช ื›ืชื™ื‘ื” ืกืคืฆื™ืคื™ื•ืช ืœื—ื™ื‘ื•ืจ

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

ืœืžื” ืื ื™ ืฆืจื™ืš ืืช ื–ื”?

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

ืชืคื’ืฉื• ืคืฉืจื”

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

ืคืฉืจื” 1: ื‘ื™ืฆื•ืขื™ื

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

ืคื™ื–ื•ืจ 2: ืขืงื‘ื™ื•ืช

ื’ื ื”ืชื•ืฆืื” ื‘ืžืงืจื” ืฉืœ ื›ื™ืฉืœื•ืŸ ืžื ื”ื™ื’ ื‘ืฉืชื™ ื”ื’ื™ืฉื•ืช ื”ืœืœื• ืชื”ื™ื” ืฉื•ื ื”. ืื ื”ืขื‘ื•ื“ื” ืžื‘ื•ืฆืขืช ื‘ืื•ืคืŸ ืืกื™ื ื›ืจื•ื ื™, ืื– ืื ืžืชืจื—ืฉืช ืฉื’ื™ืื” ื›ื–ื•, ืœื ื›ืœ ื”ืจืฉื•ืžื•ืช ื™ืชื‘ืฆืขื• ืขืœ ื™ื“ื™ ื”ื”ืขืชืงื™ื. ื›ืžื” ื™ืœืš ืœืื™ื‘ื•ื“? ืชืœื•ื™ ื‘ื™ื™ืฉื•ื ืขืฆืžื• ื•ื‘ื™ืขื™ืœื•ืช ื”ืฉื›ืคื•ืœ. ืฉื›ืคื•ืœ Compose ืชืžื ืข ืžืขืชืง ืœื”ืคื•ืš ืœืžื•ื‘ื™ืœ ืื ื›ืžื•ืช ื”ืžื™ื“ืข ื‘ื• ืงื˜ื ื” ื‘-1MB ืžืืฉืจ ื‘-Leader, ื›ืœื•ืžืจ, ืขื“ 1MB ืฉืœ ืจืฉื•ืžื•ืช ืขืœื•ืœื•ืช ืœืœื›ืช ืœืื™ื‘ื•ื“ ื‘ืžื”ืœืš ืคืขื•ืœื” ืืกื™ื ื›ืจื•ื ื™ืช.

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

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

ื—ื™ืœื•ืฅ 3: ืงืจื™ืกื•ืช

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

ื—ื™ื‘ื•ืจ ืื—ื“ ืœื›ืœ ืขืกืงื”?

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

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

ื”ื‘ื˜ื—ืช ืฉืœื™ื˜ื” ื‘ืคื•ืขืœ

ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, PostgreSQL ืžืกืคืง ืขืงื‘ื™ื•ืช. ื–ื” ื ืฉืœื˜ ืขืœ ื™ื“ื™ ืคืจืžื˜ืจ ื”ืฉืจืช synchronous_commit. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื–ื” ื‘ืžืฆื‘ on, ืื‘ืœ ื™ืฉ ืœื• ืฉืœื•ืฉ ืืคืฉืจื•ื™ื•ืช ืื—ืจื•ืช: local, remote_write ืื• off.

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

ืขืœ ื™ื“ื™ ื”ืชื—ืฉื‘ื•ืช ื‘ืžื’ื•ื•ืŸ ื”ืืคืฉืจื•ื™ื•ืช ื”ื–ืžื™ืŸ, ืื ื• ื‘ื•ื—ืจื™ื ื”ืชื ื”ื’ื•ืช, ื•ืœื•ืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ ืืช ื–ื” on โ€“ ืืœื• ื”ืงืœื˜ื•ืช ืกื™ื ื›ืจื•ื ื™ื•ืช, ืื ื—ื ื• ื ื‘ื—ืจ local ืขื‘ื•ืจ commits ืืกื™ื ื›ืจื•ื ื™ ืขืœ ื’ื‘ื™ ื”ืจืฉืช, ืชื•ืš ื”ืฉืืจืช commits ืžืงื•ืžื™ ืกื™ื ื›ืจื•ื ื™.

ืขื›ืฉื™ื•, ืื’ื™ื“ ืœืš ืื™ืš ืœื”ื’ื“ื™ืจ ืืช ื–ื” ื‘ืขื•ื“ ืจื’ืข, ืื‘ืœ ืชืืจ ืœืขืฆืžืš ืฉื”ื’ื“ืจื ื• synchronous_commit ะฒ local ืขื‘ื•ืจ ื”ืฉืจืช. ืชื”ื™ื ื• ืื ืืคืฉืจ ืœืฉื ื•ืช ืืช ื”ืคืจืžื˜ืจ synchronous_commit ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”, ื•ื”ืชื‘ืจืจ ืฉื–ื” ืœื ืจืง ืืคืฉืจื™, ื™ืฉ ืืคื™ืœื• ืฉืชื™ ื“ืจื›ื™ื ืœืขืฉื•ืช ื–ืืช. ื”ืจืืฉื•ืŸ ื”ื•ื ืœื”ื’ื“ื™ืจ ืืช ื”ื”ืคืขืœื” ืฉืœ ื”ื—ื™ื‘ื•ืจ ืฉืœืš ื‘ืื•ืคืŸ ื”ื‘ื:

SET SESSION synchronous_commit TO ON;  
// Your writes go here

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

ื”ืฉื™ื˜ื” ื”ืฉื ื™ื™ื” ื˜ื•ื‘ื” ื›ืืฉืจ ืืชื” ืจืง ืจื•ืฆื” ืœื•ื•ื“ื ืฉืืชื” ืžืงื‘ืœ ืฉื›ืคื•ืœ ืกื™ื ื›ืจื•ื ื™ ืœืขืกืงื” ื‘ื•ื“ื“ืช. ื‘ื”ืจื‘ื” ืžืกื“ื™ ื ืชื•ื ื™ื ืฉืœ ื“ื•ืจ NoSQL ื”ืžื•ืฉื’ ื˜ืจื ื–ืงืฆื™ื•ืช ืœื ืงื™ื™ื, ืื‘ืœ ื›ืŸ ื‘-PostgreSQL. ื‘ืžืงืจื” ื–ื” ืืชื” ืžืชื—ื™ืœ ืขืกืงื” ื•ืื– ืžื’ื“ื™ืจ synchronous_commit ะฒ on ืœืคื ื™ ื‘ื™ืฆื•ืข ื”ืจื™ืฉื•ื ืœืขืกืงื”. COMMIT ื™ื‘ืฆืข ืืช ื”ืขืกืงื” ื‘ืืžืฆืขื•ืช ื›ืœ ืขืจืš ืคืจืžื˜ืจ synchronous_commit, ืฉื”ื•ื’ื“ืจ ื‘ื–ืžื ื•, ืื ื›ื™ ืขื“ื™ืฃ ืœื”ื’ื“ื™ืจ ืืช ื”ืžืฉืชื ื” ืžืจืืฉ ื›ื“ื™ ืœื•ื•ื“ื ืฉืžืคืชื—ื™ื ืื—ืจื™ื ืžื‘ื™ื ื™ื ืฉื”ื›ืชื™ื‘ื” ืื™ื ื” ืืกื™ื ื›ืจื•ื ื™ืช.

BEGIN;  
SET LOCAL synchronous_commit TO ON;  
// Your writes go here
COMMIT;  

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

ื”ื’ื“ืจืช PostgreSQL

ืœืคื ื™ ื–ื”, ื“ืžื™ื™ื ื• ืžืขืจื›ืช PostgreSQL ืขื synchronous_commit, ืžื•ืชืงืŸ ื‘ local. ื›ื“ื™ ืœื”ืคื•ืš ืืช ื–ื” ืœืžืฆื™ืื•ืชื™ ื‘ืฆื“ ื”ืฉืจืช, ืชืฆื˜ืจืš ืœื”ื’ื“ื™ืจ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ืชืฆื•ืจืช ืฉืจืช. ืขื•ื“ ืคืจืžื˜ืจ ืื—ื“ synchronous_standby_names ื™ื‘ื•ื ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ืžืชื™ synchronous_commit ื™ื”ื™ื” ื‘ on. ื”ื•ื ืงื•ื‘ืข ืื™ืœื• ื”ืขืชืงื™ื ื–ื›ืื™ื ืœื”ืชื—ื™ื™ื‘ื•ื™ื•ืช ืกื™ื ื›ืจื•ื ื™ื•ืช, ื•ืื ื—ื ื• ื ื’ื“ื™ืจ ื–ืืช *, ืžื” ืฉืื•ืžืจ ืฉื›ืœ ื”ื”ืขืชืงื™ื ืžืขื•ืจื‘ื™ื. ืขืจื›ื™ื ืืœื” ืžื•ื’ื“ืจื™ื ื‘ื“ืจืš ื›ืœืœ ื‘ ืงื•ื‘ืฅ ืชืฆื•ืจื” ืขืœ ื™ื“ื™ ื”ื•ืกืคื”:

synchronous_commit = local  
synchronous_standby_names='*'

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

ืื ืขืงื‘ืช ืื—ืจ ื”ืคื™ืชื•ื— ืคืจื•ื™ืงื˜ ื”ื ื’ื™ื“, ืื•ืœื™ ืฉืžืช ืœื‘ ืœื›ืžื” ืฉื™ื ื•ื™ื™ื ืื—ืจื•ื ื™ื (1, 2), ืžื” ืฉืืคืฉืจ ืœืžืฉืชืžืฉื™ ื”ื ื’ื™ื“ ืœื‘ื“ื•ืง ืืช ื”ืคืจืžื˜ืจื™ื ื”ืœืœื• ื•ืœื ื˜ืจ ืืช ืขืงื‘ื™ื•ืชื.

ืขื•ื“ ื›ืžื” ืžื™ืœื™ื...

ืจืง ืœืคื ื™ ืฉื‘ื•ืข, ื”ื™ื™ืชื™ ืื•ืžืจ ืœืš ืฉืื™ ืืคืฉืจ ืœื›ื•ื•ื ืŸ ืืช PostgreSQL ืขื“ ื›ื“ื™ ื›ืš. ืื• ืื– ืงื•ืจื˜, ื—ื‘ืจ ื‘ืฆื•ื•ืช ืคืœื˜ืคื•ืจืžืช Compose, ื”ืชืขืงืฉ ืฉืงื™ื™ืžืช ื”ื–ื“ืžื ื•ืช ื›ื–ื•. ื”ื•ื ื”ืจื’ื™ืข ืืช ื”ื”ืชื ื’ื“ื•ื™ื•ืช ืฉืœื™ ื•ืžืฆื ื‘ืชื™ืขื•ื“ ืฉืœ PostgreSQL ืœื”ืœืŸ:

PostgreSQL ื•ื”ื’ื“ืจื•ืช ืขืงื‘ื™ื•ืช ื›ืชื™ื‘ื” ืกืคืฆื™ืคื™ื•ืช ืœื—ื™ื‘ื•ืจ

ื”ื’ื“ืจื” ื–ื• ื ื™ืชื ืช ืœืฉื™ื ื•ื™ ื‘ื›ืœ ืขืช. ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ื›ืœ ืขืกืงื” ื ืงื‘ืขืช ืขืœ ืคื™ ื”ื”ื’ื“ืจื” ื‘ืชื•ืงืฃ ื‘ื–ืžืŸ ื”ื”ืชื—ื™ื™ื‘ื•ืช. ืœื›ืŸ, ื ื™ืชืŸ ื•ืฉื™ืžื•ืฉื™ ืขื‘ื•ืจ ืขืกืงืื•ืช ืžืกื•ื™ืžื•ืช ืœื‘ืฆืข ื”ืชื—ื™ื™ื‘ื•ืช ืกื™ื ื›ืจื•ื ื™ืช ื•ืœืื—ืจื•ืช ื‘ืื•ืคืŸ ืืกื™ื ื›ืจื•ื ื™. ืœืžืฉืœ, ืœื”ื›ืจื™ื— ืื—ื“ multistatement ื˜ืจื ื–ืงืฆื™ื” ืœื‘ื™ืฆื•ืข ืžืชื—ื™ื™ื‘ื™ื ื‘ืื•ืคืŸ ืืกื™ื ื›ืจื•ื ื™ ื›ืืฉืจ ืขืจืš ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ื”ืคืจืžื˜ืจ ื”ื•ื ื”ืคื•ืš, ืžื•ื’ื“ืจ SET LOCAL synchronous_commit TO OFF ื‘ืขืกืงื”.

ืขื ื”ืฉื™ื ื•ื™ ื”ืงื˜ืŸ ื”ื–ื” ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื”, ื ืชื ื• ืœืžืฉืชืžืฉื™ื ืฉืœื™ื˜ื” ืขืœ ื”ืขืงื‘ื™ื•ืช ื•ื”ื‘ื™ืฆื•ืขื™ื ืฉืœื”ื.

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

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