PostgreSQL ma fesoʻotaʻiga-faʻapitoa tusitusi faʻatulagaina tulaga tutusa

O le faaliliuga o le tusiga na saunia faapitoa mo tamaiti aoga o le vasega "Fa'amaumauga". E fiafia e atia'e i lea itu? Matou te valaaulia oe e Aso Tatala, lea tatou te talanoa auiliili ai e uiga i le polokalame, foliga o le tulaga i luga o le initaneti, agavaa ma avanoa faigaluega o loʻo faʻatali i le au faauu pe a maeʻa aʻoaʻoga.

PostgreSQL ma fesoʻotaʻiga-faʻapitoa tusitusi faʻatulagaina tulaga tutusa

PostgreSQL ma fesoʻotaʻiga-faʻapitoa tusitusi faʻatulagaina tulaga tutusa
I le Compose, matou te fa'atautaia le tele o fa'amaumauga, lea e maua ai le avanoa e fa'amasani atili ai i a latou galuega ma fa'aletonu. A o tatou aʻoaʻo e fiafia i foliga o faʻamaumauga fou, o nisi taimi e amata ona tatou mafaufau i le manaia pe a faʻapea e iai foliga tutusa i meafaigaluega sili atu ona matutua ua leva ona tatou galulue ai. O se tasi o foliga fou na ou manaʻo e vaʻaia i le PostgreSQL o loʻo mafai ona faʻapipiʻiina le tusitusi faʻatasi i fesoʻotaʻiga i luga o le fuifui atoa. Ma e pei ona aliali mai, ua uma ona matou maua, ma i aso nei matou te fia faʻasoa atu ia te oe faʻamatalaga pe faʻapefea ona e faʻaaogaina.

Aisea ou te manaomia ai?

O le fa'afefea ona amio le fuifui e fa'alagolago i lau talosaga. Ave, mo se faʻataʻitaʻiga, se app e totogi ai pili. E te mana'omia le 100% fa'atasi i luga o le fuifui, o lea e tatau ai ona e fa'aagaoioi faiga fa'atasi ina ia fa'atali lau fa'amaumauga mo suiga uma e fai. Ae peita'i, afai o lau tusi talosaga ose feso'ota'iga fa'aagafesootai fa'avavevave, atonu e te mana'o e tali vave i luga o le 100% tutusa. Ina ia ausia lenei mea, e mafai ona e faʻaogaina asynchronous commits i lau fuifui.

Feiloai fetuutuunai

E tatau ona e faia fefaʻatauaʻiga i le va o faʻamaumauga tumau ma faʻatinoga. O le PostgreSQL e alu ese mai le tumau ona o le faʻaogaina le faʻaogaina e mafai ona vaʻaia ma e aunoa ma se faʻalavelave faʻafuaseʻi. Se'i o tatou tilotilo la i le fetuutuuna'i.

Fefa'ataua'iga 1: Fa'atinoga

Afai e le manaʻomia e le vaega PostgreSQL le faʻatumauina, e mafai ona alu faʻatasi. O le tusi e faia i le ta'ita'i fa'aputu, ma fa'afouga o le a lafo i ana fa'atusa i ni nai milliseconds mulimuli ane. A manaʻomia e le PostgreSQL le faʻatasi, e tatau ona alu faʻatasi. O le tusi o le a faia i le taʻitaʻi faʻapipiʻi, lea o le a tuʻuina atu se faʻafouga i kopi ma faʻatali mo le faʻamaoniga ua uma ona tusia aʻo leʻi tuʻuina atu le faʻamaoniga i le kalani na amataina le tusi na manuia. O le eseesega aoga i le va o nei auala o le asynchronous auala e manaʻomia ai lua fesoʻotaʻiga hops, ae o le synchronous auala e manaʻomia ai le fa.

Fefa'ataua'iga 2: Fa'atasi

O le taunuuga pe a tupu se ta'ita'i ua toilalo i nei auala e lua o le a eseese foi. Afai e faia le galuega asynchronously, afai e tupu se mea sese, e le o faamaumauga uma o le a faia e le kopi. O le a le tele o le a leiloa? Faʻalagolago i le faʻaoga lava ia ma le lelei o le toe faia. O le faia o le kopi o le a taofia ai se kopi mai le avea ma taʻitaʻi pe afai o le aofaʻi o faʻamatalaga o loʻo i ai e 1 MB laʻititi nai lo le taʻitaʻi, o lona uiga, e oʻo atu i le 1 MB o faʻamaumauga e ono leiloa i le taimi o le faʻaogaina.

E le tupu lenei mea i le faiga fa'atasi. Afai e toilalo le taʻitaʻi, e toe faʻafouina uma kopi, talu ai o soʻo se tusitusiga e faʻamaonia i luga o le taʻitaʻi e tatau ona faʻamaonia i luga o le kopi. O le tumau lea.

Amioga fa'atasi e talafeagai ile talosaga ole totogiina ole pili lea e iai le fa'amanuiaga manino ile fefa'ataua'iga i le va ole fa'atino ma le fa'atinoga. O le mea pito sili ona taua mo sea talosaga o faʻamatalaga aoga. Mafaufau nei e uiga i se fesoʻotaʻiga faʻaagafesootai lea o le galuega autu o le tausia o le tagata faʻaoga e ala i le tali atu i talosaga i se taimi vave e mafai ai. I le tulaga lea, o le fa'atinoina o le fa'aitiitiga o feso'ota'iga ma fa'aitiitia le fa'atali mo ta'utinoga o le a avea ma fa'amuamua. Ae ui i lea, o le fefaʻatauaʻiga i le va o le faʻatinoga ma le tumau e le naʻo le mea e tatau ona e mafaufau i ai.

Fefa'ataua'iga 3: Fa'alavelave

E taua tele le malamalama i le amio a se fuifui i le taimi o le toilalo. Mafaufau i se tulaga e tasi pe sili atu kopi ua le manuia. Pe a fa'agasolo fa'agaoioiga, o le a fa'aauau pea ona galue le ta'ita'i, o lona uiga, talia ma fa'agasolo le tusitusi, e aunoa ma le fa'atali mo le misi o fa'atusa. A toe fo'i le fa'atusa i le fuifui, latou te maua atu le ta'ita'i. Faatasi ai ma le fa'asologa fa'atasi, afai e le tali mai le fa'atusa, o le a leai se filifiliga a le ta'ita'i ma o le a fa'aauau pea ona fa'atali mo le fa'amaoniga o le tu'uina atu se'ia toe fo'i le fa'atusa i le fuifui ma mafai ona talia ma tu'u le tusi.

Tasi le feso'ota'iga i fefa'atauaiga?

O talosaga uma e manaʻomia se ituaiga eseese o tuʻufaʻatasiga o le tumau ma le faʻatinoga. Vagana, o le mea moni, o la tatou polokalama e totogi ai pili, lea tatou te manatu e matua tumau, poʻo la tatou polokalama fesoʻotaʻiga fesoʻotaʻiga e toetoe a le tumau. I isi tulaga uma, o le ai ai taimi e tatau ai ona ogatasi nisi o gaioiga ae o nisi e tatau ona asynchronous. Atonu e te le manaʻo i le faiga e faʻatali seʻia oʻo i se feʻau na lafoina i le talatalanoaga e faia, ae afai o se totogi e faʻatautaia i le talosaga lava e tasi, ona e faʻatali lea.

O nei faaiuga uma, ioe, e faia e le tagata e faia le talosaga. O le faia o fa'ai'uga sa'o ile taimi e fa'aoga ai auala ta'itasi o le a fesoasoani ia te oe e maua ai le tele o mea mai lau fuifui. E taua tele le mafai e le tagata atiaʻe ona fesuiaʻi i le va o latou ile tulaga SQL mo fesoʻotaʻiga ma fefaʻatauaiga.

Faʻamautinoa le pulea i le faʻatinoga

E ala i le le mafai, PostgreSQL e tuʻuina atu le tutusa. O lenei mea e pulea e le server parameter synchronous_commit. I le faaletonu o loo i ai i le tulaga on, ae e tolu isi filifiliga: local, remote_write poʻo off.

Pe a seti le parakalafa i off ua taofia uma faiga fa'atasi, e o'o lava ile faiga fa'alotoifale. Ole fa'alotoifale e fa'amaoti ai le faiga synchronous mo le faiga fa'apitonu'u, ae tusi i fa'atusa e fa'atino asynchronously. Remote_write e sili atu foi: tusi i kopi e faia asynchronously, ae toe faafoi pe a talia e le kopi le tusi ae e leʻi tusia i le tisiki.

E ala i le iloiloina o avanoa avanoa o filifiliga, matou te filifilia se amio ma, manatua pea lena mea on – o fa'amaumauga fa'atasi nei, o le a matou filifilia local mo asynchronous commits i luga o le feso'otaiga, ae tu'u le local commits synchronous.

Ia, matou te taʻu atu ia te oe pe faʻafefea ona faʻapipiʻi lenei mea i se taimi, ae mafaufau ua matou setiina synchronous_commit в local mo le server. Na matou mafaufau pe mafai ona sui le parakalafa synchronous_commit i luga o le lele, ma e foliga mai e le gata ina mafai, e lua lava auala e faia ai lenei mea. Muamua o le setiina o le sauniga o lau fesoʻotaʻiga e faʻapea:

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

O tusitusiga uma mulimuli ane i le vasega o le a fa'aalia tusi i le fa'atusa a'o le'i toe fa'afo'i se fa'ai'uga lelei i le tagata fa'afeso'ota'i. Se'i vagana ua e suia le tulaga synchronous_commit toe. E mafai ona e aveese se vaega SESSION i le poloaiga aua o le a i le tau faaletonu.

O le auala lona lua e lelei pe afai e te manaʻo e faʻamautinoa e te maua le faʻasologa tutusa mo se fefaʻatauaiga e tasi. I le tele o NoSQL generation databases le manatu o fefaʻatauaiga e le o iai, ae o loʻo i totonu PostgreSQL. I lenei tulaga e te amataina se fefaʻatauaiga ona seti lea synchronous_commit в on a'o le'i fa'ataunu'uina le fa'ailoga mo le fefa'ataua'iga. COMMIT o le a faia le fefaʻatauaiga e faʻaaoga ai soʻo se tau faʻamaufaʻailoga synchronous_commit, lea na faʻatulagaina i le taimi, e ui lava e sili ona lelei le setiina o le fesuiaiga i luma ina ia mautinoa o loʻo malamalama isi atinaʻe o tusitusiga e le faʻatasi.

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

O fefa'ataua'iga uma o fefa'ataua'iga o le a fa'amaonia nei e pei ona tusia i kopi a'o le'i toe fa'afo'i mai e le fa'amaumauga se tali lelei i le tagata fa'afeso'ota'i.

Faʻatulagaina le PostgreSQL

Aʻo leʻi faia lenei mea, matou te mafaufauina se PostgreSQL system ma synchronous_commit, fa'apipi'i i totonu local. Ina ia faʻamaonia lenei mea i luga o le itu o le server, e te manaʻomia le setiina o filifiliga faʻapipiʻi se lua. E tasi le isi fa'ailoga synchronous_standby_names o le a oo mai i lona lava taimi synchronous_commit o le a i totonu on. E iloa ai po'o fea fa'atusa e agava'a mo tu'u fa'atasi, ma o le a matou fa'atulaga i ai *, o lona uiga e aofia uma fa'atusa. O nei tau e masani ona faʻatulagaina i totonu faila faatulagaina e ala i le fa'aopoopoina:

synchronous_commit = local  
synchronous_standby_names='*'

E ala i le setiina o le parakalafa synchronous_commit i le uiga local, matou te faia se faiga e tumau ai fa'atasi tisiki i le lotoifale, ae o feso'ota'iga fa'atusa commit e asynchronous ona o le fa'aletonu. Se'i vagana, ioe, matou te filifili e fa'aoga tutusa ia mea, e pei ona fa'aalia i luga.

Afai na e mulimuli i le atinaʻe Poloketi a le Kovana, atonu na e matauina ni suiga lata mai (1, 2), lea na mafai ai e tagata fa'aoga a le Kovana ona fa'ata'ita'i nei ta'iala ma mata'itu lo latou fa'atasi.

O nisi upu...

Na o le vaiaso talu ai, semanu ou te taʻu atu ia te oe e le mafai ona faʻalelei lelei le PostgreSQL. O le taimi lena na finau mai ai Kurt, o se sui o le vaega o le Compose platform, e iai sea avanoa. Na ia faʻafilemuina aʻu teteʻe ma maua i le PostgreSQL pepa mea nei:

PostgreSQL ma fesoʻotaʻiga-faʻapitoa tusitusi faʻatulagaina tulaga tutusa

E mafai ona sui lenei seti i soo se taimi. O le amio mo so'o se fefa'ataua'iga e fa'atatau i le fa'atulagaina e fa'amalosia i le taimi o le ta'utinoga. O le mea lea, e mafai ma aoga mo nisi fefaʻatauaiga e faia faʻatasi ma mo isi asynchronously. Mo se faataitaiga, ia faamalosia se tasi multistatement fefa'ataua'iga e fai e fai asynchronously pe a fa'afeagai le tau fa'aletonu o le parakalafa, seti SET LOCAL synchronous_commit TO OFF i se fefa'atauaiga.

Faatasi ai ma lenei suiga laʻititi i le faila faʻatulagaina, matou te tuʻuina atu i tagata faʻaoga le pulea o latou tulaga tutusa ma faʻatinoga.

puna: www.habr.com

Faaopoopo i ai se faamatalaga