He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

Aloha kākou. Hoʻopili ʻo Vladislav Rodin. ʻO wau ke alakaʻi papa no ka papa hana High Workload Architect ma OTUS a ke aʻo pū nei hoʻi i nā papa hoʻolālā polokalamu.

Ma waho aʻe o ke aʻo ʻana, e like me kāu i ʻike ai, ke kākau nei au i nā mea kumu no ka blog OTUS ma Habré a makemake wau e hui pū me ka ʻatikala o kēia lā e hui pū me ka hoʻomaka ʻana o ka papa. "PostgreSQL", i wehe ʻia no ke kākau inoa ʻana i kēia manawa.

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

Hōʻike

В manawa hope loa Ua kamaʻilio mākou e pili ana i ka hana ʻana i nā ʻikepili i nā pilikia ʻelua: ka hōʻoia ʻana i ka hoʻomanawanui hewa a me ka loaʻa ʻana o ka ʻikepili i kahi ʻano hoʻokūkū. No ka hoʻokō piha ʻana i kēia mau hana, pono ke loaʻa nā waiwai ACID. I kēia lā e kamaʻilio nui mākou e pili ana i ka leka I (hoʻokaʻawale) ma keia hoopau ana.

ʻO ka hoʻonani

Hoʻopau ka hoʻokaʻawale ʻana i ka pilikia o ke komo ʻana i ka ʻikepili i loko o kahi hoʻokūkū hoʻokūkū, e hāʻawi pono ana i ka pale mai nā kūlana lāhui. ʻO ke kūpono, ʻo ka hoʻokaʻawale ʻana, ʻo ia ka serialization, kahi waiwai e hōʻoiaʻiʻo ai i ka hopena o ka hoʻokō ʻana i nā hana ma ke ʻano like me ka mea i hoʻokō ʻia ma ke kaʻina hana. ʻO ka pilikia nui me kēia waiwai he mea paʻakikī loa ka hāʻawiʻana i kaʻenehana a, no laila, he hopena koʻikoʻi i ka hana pūnaewele. ʻO ia ke kumu e nāwaliwali pinepine ai ka noho kaʻawale, e ʻae i nā pilikia o kekahi mau anomalies, e kūkākūkā ʻia ma lalo nei. ʻO ka hiki ʻana o kekahi mau anomalies e hōʻike pololei ana i ke kiʻekiʻe o ka hoʻokaʻawale kālepa.

ʻO nā anomalies kaulana loa: heluhelu haumia, heluhelu hou ʻole, heluhelu phantom, akā ʻo ka ʻoiaʻiʻo he 5 hou aku: palapala lepo, nalo ka hōʻano hou, nalowale hou, heluhelu skew, kākau skew.

palapala lepo

ʻO ke kumu o ka anomaly ʻo ia ka hiki ke hoʻololi i ka ʻikepili i hoʻopaʻa ʻole ʻia.

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

He pōʻino kēia anomaly ʻaʻole wale no ka mea hiki ke hakakā ka ʻikepili ma hope o ka hana ʻana i nā hana ʻelua (e like me ke kiʻi), akā no ka mea ua uhaki ʻia ka atomicity: no ka mea, ʻae mākou i ka ʻikepili i hoʻopaʻa ʻole ʻia e kākau ʻia, ʻaʻole maopopo i ke ʻano o ka hoʻihoʻi ʻana i hoʻokahi hana me ka ʻole o ka pili ʻana i kekahi. .

Hiki ke mālama maʻalahi ka anomaly: hoʻopili mākou i kahi laka i ka moʻolelo ma mua o ka hoʻomaka ʻana i ka hoʻopaʻa ʻana, e pāpā ana i nā hana ʻē aʻe mai ka hoʻololi ʻana i ka moʻolelo a hiki i ka wehe ʻia ʻana o ka laka.

Heluhelu lepo

ʻO ka heluhelu haumia ʻo ia ka heluhelu ʻana i ka ʻikepili paʻa ʻole.

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

Piʻi ka pilikia ke hana ʻia nā hana a i ʻole nā ​​​​hoʻoholo ma muli o ka laʻana.

No ka hoʻoponopono ʻana i ka anomaly, hiki iā ʻoe ke hoʻopili i kahi laka heluhelu, akā e hopena nui kēia i ka hana. ʻOi aku ka maʻalahi o ka ʻōlelo ʻana no kahi ʻoihana rollback, pono e mālama ʻia ke kūlana mua o ka ʻikepili (ma mua o ka hoʻomaka ʻana o ka hoʻopaʻa ʻana). No ke aha e heluhelu ʻole ai mai laila? ʻAʻole lawa ke kumukūʻai no ka wehe ʻana o ka hapa nui o nā ʻikepili i ka heluhelu lepo ma ke ʻano paʻamau.

Nalo hou

ʻO ke ʻano o ka nalowale ʻana, ʻo ia hoʻi nā mea hou i nalowale, a ua hōʻike pololei ka unuhi i ke ʻano o ka pilikia:

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

ʻO ka ʻoiaʻiʻo, ua hoʻohuli ʻia ka hopena o ke kālepa T2. Hiki ke hoʻoponopono ʻia kēia kūlana e nā laka kākau ʻike a i ʻole. ʻO ia hoʻi, hōʻano hou mākou i ka moʻolelo, a laila paʻa ka laka paʻa, a i ʻole mākou e hana koho no ka hoʻonui, e hana ana i ka laka heluhelu a kākau. E ʻoluʻolu e hoʻomaopopo he mea weliweli loa kēia hana: me kā mākou heluhelu "hala ʻole", pale mākou i nā heluhelu ʻē aʻe. Hāʻawi kekahi mau waihona i ka palekana koho no ka mahele, e ʻae ana i ka ʻikepili e heluhelu ʻia akā ʻaʻole i hoʻololi ʻia.

Nalo ka hōʻano hou

No ka mana ʻoi aku ka maikaʻi, hiki i nā kumu ke hāʻawi i nā mea hana ʻē aʻe, e like me ka cursor. ʻO ka cursor kahi hale i loaʻa i kahi pūʻulu o nā lālani a hiki iā ʻoe ke hoʻololi i luna o lākou. e haʻi i ka inoa_cursor no ka ʻōlelo_koho. Hōʻike ʻia nā mea o ka cursor e ke koho.

No ke aha ʻoe e pono ai i kahi cursor? ʻO ka ʻoiaʻiʻo, hāʻawi kekahi mau waihona i kahi laka ma nā moʻolelo a pau i koho ʻia e ke koho (heluhelu i ka stability), a i ʻole ma ka moʻolelo kahi i loaʻa ai ka cursor (cursor stability). Me ka paʻa o ka cursor, hoʻokō ʻia ka laka pōkole, kahi e hiki ai iā mākou ke hōʻemi i ka helu o nā laka inā mākou e hoʻololi i kahi laʻana o ka ʻikepili. No laila, ua hoʻokaʻawale ʻia ka anomaly i nalowale no ka cursor.

Heluhelu hou ole

ʻAʻole hiki ke heluhelu hou ʻia ʻo ia i ka wā o ka hoʻokō ʻana i kā mākou kālepa, 2 mau heluhelu ʻana o ka moʻolelo hoʻokahi e alakaʻi i nā hopena like ʻole, no ka mea, ua hoʻopili ʻia kahi hana ʻē aʻe ma waena o kēia mau heluhelu ʻelua, ua hoʻololi i kā mākou ʻikepili a ua hana ʻia.

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

No ke aha kēia pilikia? E noʻonoʻo i ka pahuhopu o ke kālepa T2 i ke kiʻi e koho i nā waiwai āpau i emi iho ke kumukūʻai ma mua o 150 USD. Ua hōʻano hou kekahi i ke kumukūʻai i $200. No laila, ʻaʻole i holo ka kānana i hoʻokomo ʻia.

Pau kēia mau anomalies i ka wā e hoʻohui ʻia ai nā ʻāpana ʻelua a i ʻole ke hoʻohana ʻia ka mīkini MVCC, aʻu e makemake e kūkākūkā kaʻawale.

Heluhelu Phantom

He heluhelu ʻia ʻo Phantom o ka ʻikepili i hoʻohui ʻia e kekahi kālepa ʻē aʻe.

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

ʻO kahi laʻana, hiki iā mākou ke nānā i ke koho hewa ʻana o ka huahana haʻahaʻa loa i ka wā e kū mai ai kēia anomaly.

Paʻakikī loa ka hoʻopau ʻana i nā heluhelu phantom. ʻAʻole lawa ka pāpā maʻamau, no ka mea, ʻaʻole hiki iā mākou ke pale i kahi mea ʻaʻole i loaʻa. Hoʻohana nā ʻōnaehana 2PL i ka laka wānana, ʻoiai ʻo nā ʻōnaehana MVCC he papa hana kālepa e hoʻohuli i nā hana i hiki ke hoʻopau ʻia e kahi mea hoʻokomo. He kaumaha loa ka mīkini mua a me ka lua.

Heluhelu skew

Loaʻa ka skew heluhelu ke hana mākou me nā papa he nui, pono e hoʻololi mau nā mea i loko.

E ʻōlelo mākou he mau papa e hōʻike ana i nā pou a me kā lākou ʻike meta:

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

Heluhelu ʻia kekahi hana mai nā papa, a hoʻololi kekahi iā lākou:

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

Ma muli o ke kālepa T1, loaʻa i ka pou ke poʻo inoa = Maikaʻi, a updated_by = T2, ʻo ia kekahi ʻano like ʻole.

ʻO ka ʻoiaʻiʻo, he heluhelu hiki ʻole kēia, akā ma ke ʻano he mau papa.

No ka hoʻoponopono ʻana i kēia, hiki iā T1 ke kau i nā laka ma nā lālani a pau e heluhelu ai, e pale ai i ke kālepa T2 mai ka hoʻololi ʻana i ka ʻike. I ka hihia o MVCC, e kāpae ʻia ke kālepa T2. Hiki ke lilo i mea koʻikoʻi ka pale ʻana i kēia anomali inā hoʻohana mākou i nā cursors.

Kākau skew

ʻOi aku ka maʻalahi o ka wehewehe ʻana i kēia anomaly me kahi laʻana: inā paha i loko o kā mākou ʻōnaehana ma ka liʻiliʻi o hoʻokahi kauka e hana, akā ua hoʻoholo nā kauka ʻelua e kāpae i kā lākou hana:

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

ʻO ke anomaly ʻo ia hoʻi, ʻaʻohe o nā kauka e hana. No ke aha i hana ai kēia? No ka mea e nānā ana ke kālepa i kahi kūlana e hiki ke uhaki ʻia e kekahi kālepa ʻē aʻe, a ma muli o ke kaʻawale ʻana ʻaʻole mākou i ʻike i kēia loli.

ʻO kēia ka heluhelu hiki ʻole ke hana hou ʻia. ʻO kahi ʻē aʻe, hiki i nā mea koho ke kau i nā laka ma kēia mau moʻolelo.

Kākau skew a heluhelu skew nā hui o nā anomalies mua. Hiki iā ʻoe ke noʻonoʻo i ke kākau skew, ʻo ia ka mea heluhelu phantom. E noʻonoʻo i kahi papa i loaʻa nā inoa o nā limahana, kā lākou uku, a me ka papahana a lākou e hana ai:

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

He aha ka hopena ma muli o ka hoʻonāwaliwali ʻana i ka pae hoʻokaʻawale kālepa i nā waihona?

ʻO ka hopena, loaʻa iā mākou ke kiʻi aʻe: ua manaʻo kēlā me kēia luna ʻaʻole e alakaʻi kā lākou hoʻololi i ka hoʻonui ʻana i ka waihona kālā, no laila ua hoʻololi lākou i nā limahana i alakaʻi ʻia i ka piʻi kālā.

Ua like loa ke kumu o ka pilikia me ka heluhelu phantom.

haʻina

ʻO ka hoʻomaha ʻana i ka pae hoʻokaʻawale kālepa i loko o ka waihona ʻikepili kahi mea kūʻai aku ma waena o ka palekana a me ka hana; pono ke koho ʻia o kēia pae e pili ana i nā pilikia i ka ʻoihana inā loaʻa kekahi mau anomalies.

E aʻo hou e pili ana i ka papa.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka