Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Wani lokaci a nan gaba mai nisa, kawar da bayanan da ba dole ba ta atomatik zai zama ɗayan mahimman ayyuka na DBMS [1]. A halin yanzu, mu kanmu muna buƙatar kulawa da gogewa ko motsa bayanan da ba dole ba zuwa tsarin ajiya mai ƙarancin tsada. Bari mu ce kun yanke shawarar share layuka miliyan kaɗan. Aiki mai sauƙi mai sauƙi, musamman idan an san yanayin kuma akwai ma'anar da ta dace. "SHARE DAGA tebur1 INA col1 =: darajar" - menene zai iya zama mafi sauƙi, daidai?

Video:

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

  • Na kasance cikin kwamitin shirin Highload tun shekara ta farko, watau tun 2007.

  • Kuma na kasance tare da Postgres tun 2005. An yi amfani da shi a cikin ayyuka da yawa.

  • Rukuni tare da RuPostges kuma tun 2007.

  • Mun girma zuwa 2100+ mahalarta a Meetup. Shi ne na biyu a duniya bayan New York, wanda San Francisco ya mamaye shi na dogon lokaci.

  • Na zauna a California shekaru da yawa. Ina ƙara hulɗa da kamfanonin Amurka, ciki har da manya. Suna aiki masu amfani da Postgres. Kuma akwai abubuwa masu ban sha'awa iri-iri.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

https://postgres.ai/ kamfanina ne. Muna cikin kasuwancin sarrafa ayyuka masu sarrafa kansa wanda ke kawar da raguwar ci gaba.

Idan kuna yin wani abu, to, wani lokacin akwai wasu nau'ikan matosai a kusa da Postgres. A ce kana bukatar ka jira admin ya kafa maka gwajin gwaji, ko kuma ka jira DBA ta amsa maka. Kuma muna samun irin waɗannan matsalolin a cikin ci gaba, gwaji da tsarin gudanarwa da kuma ƙoƙarin kawar da su tare da taimakon atomatik da sababbin hanyoyi.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

https://www.seagate.com/files/www-content/our-story/trends/files/idc-seagate-dataage-whitepaper.pdf

Na kasance kwanan nan a VLDB a Los Angeles. Wannan shine taro mafi girma akan ma'ajin bayanai. Kuma akwai rahoton cewa a nan gaba DBMS ba zai adana kawai ba, amma kuma ta atomatik share bayanai. Wannan sabon batu ne.

Akwai ƙarin bayanai a duniyar zettabytes - wato petabytes 1 kenan. Kuma yanzu an riga an kiyasta cewa muna da fiye da 000 zettabytes na bayanai da aka adana a duniya. Kuma akwai da yawa daga cikinsu.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

https://vldb2019.github.io/files/VLDB19-keynote-2-slides.pdf

Kuma me za ayi dashi? Babu shakka yana buƙatar cire shi. Ga hanyar haɗi zuwa wannan rahoto mai ban sha'awa. Amma har yanzu ba a aiwatar da wannan a cikin DBMS ba.

Masu iya kirga kudi suna son abu biyu. Suna son mu goge, don haka a zahiri ya kamata mu iya yin shi.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Abin da zan fada a gaba shi ne wasu yanayi na zahiri wanda ya hada da tarin yanayi na hakika, watau nau'in tattara abubuwan da a zahiri suka faru da ni da bayanan da ke kewaye da su sau da yawa, shekaru masu yawa. Rake suna ko'ina kuma kowa yana taka su koyaushe.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Bari mu ce muna da tushe ko tushe da yawa waɗanda suke girma. Kuma a fili wasu bayanan datti ne. Misali, mai amfani ya fara yin wani abu a can, amma bai gama ba. Kuma bayan wani lokaci mun san cewa ba za a iya adana wannan ba a gama ba. Wato, muna son tsaftace wasu abubuwan datti don adana sarari, inganta aiki, da sauransu.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Gabaɗaya, aikin shine sarrafa sarrafa ƙayyadaddun abubuwa, takamaiman layi a cikin wasu tebur.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Kuma muna da irin wannan bukata, wadda za mu yi magana a kai a yau, wato game da kawar da datti.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Mun nemi ƙwararren mai haɓakawa ya yi. Ya ɗauki wannan buƙatar, ya bincika kansa - duk abin yana aiki. An gwada a kan tsarawa - komai yana da kyau. Mirgine fitar - duk abin yana aiki. Sau ɗaya a rana muna gudanar da shi - komai yana da kyau.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Database girma da girma. DELETE yau da kullun yana fara aiki kaɗan a hankali.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Sa'an nan kuma mun fahimci cewa yanzu muna da kamfanin tallace-tallace kuma zirga-zirgar zirga-zirga za ta ninka sau da yawa, don haka mun yanke shawarar dakatar da abubuwan da ba dole ba na dan lokaci. Kuma manta da komawa.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Bayan 'yan watanni suka tuna. Kuma wannan maginin ya daina ko ya shagaltu da wani abu dabam, ya umurci wani ya mayar da shi.

Ya duba dev, a kan staging - komai yana da kyau. A zahiri, har yanzu kuna buƙatar tsaftace abin da ya tara. Ya duba komai yana aiki.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Me zai faru a gaba? Sannan komai ya watse mana. Yana faduwa ta yadda a wani lokaci komai ya fadi. Kowa ya gigice, babu wanda ya fahimci abin da ke faruwa. Kuma sai ya zama cewa al'amarin yana cikin wannan DELETE.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Wani abu ya faru? Ga jerin abubuwan da ka iya faruwa ba daidai ba. A cikin waɗannan wanne ne ya fi muhimmanci?

  • Misali, babu wani bita, watau masanin DBA bai dube shi ba. Nan da nan zai sami matsalar tare da gogaggen ido, kuma baya ga haka, yana da damar yin amfani da kayan masarufi, inda layukan miliyan da yawa suka taru.

  • Wataƙila sun bincika wani abu ba daidai ba.

  • Wataƙila kayan aikin sun tsufa kuma kuna buƙatar haɓaka wannan tushe.

  • Ko wani abu ba daidai ba ne tare da bayanan kanta, kuma muna buƙatar matsawa daga Postgres zuwa MySQL.

  • Ko watakila akwai wani abu da ba daidai ba a cikin aikin.

  • Wataƙila akwai wasu kurakurai a cikin ƙungiyar aiki kuma kuna buƙatar korar wani kuma ku ɗauki mafi kyawun mutane?

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Babu rajistan DBA. Idan akwai DBA, zai ga waɗannan layukan miliyan da yawa kuma ko da ba tare da wani gwaji ba zai ce: "Ba sa yin haka." A ce idan wannan lambar ta kasance a cikin GitLab, GitHub kuma za a yi tsarin sake duba lambar kuma ba haka ba ne idan ba tare da amincewar DBA ba wannan aikin zai faru akan prod, to a fili DBA zai ce: "Ba za a iya yin wannan ba. ”

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Kuma zai ce za ku sami matsala tare da diski IO kuma duk hanyoyin za su yi hauka, za a iya samun makullai, haka nan za ku toshe autovacuum na mintuna kaɗan, don haka wannan ba shi da kyau.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

http://bit.ly/nancy-hl2018-2

Kuskure na biyu - sun bincika a wuri mara kyau. Mun ga bayan bayanan da suka taru a kan abubuwan da suka dace, amma masu haɓakawa ba su da tarin bayanai a cikin wannan ma'auni, kuma babu wanda ya ƙirƙiri wannan takarce a lokacin shiryawa. Saboda haka, akwai layukan 1 waɗanda suka yi aiki da sauri.

Mun fahimci cewa gwaje-gwajenmu suna da rauni, wato, tsarin da aka gina ba ya kama matsaloli. Ba a yi cikakken gwajin DB ba.

An fi dacewa da gwajin da ya dace akan kayan aiki iri ɗaya. Ba koyaushe yana yiwuwa a yi wannan akan kayan aiki iri ɗaya ba, amma yana da matukar mahimmanci ya zama cikakken kwafin bayanan. Wannan shi ne abin da na yi wa’azi shekaru da yawa yanzu. Kuma shekara guda da ta gabata na yi magana game da wannan, zaku iya kallon shi duka akan YouTube.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Wataƙila kayan aikin mu ba su da kyau? Idan ka duba, sai latency yayi tsalle. Mun ga cewa yin amfani da shi ne 100%. Tabbas, idan waɗannan kayan aikin NVMe na zamani ne, to tabbas zai fi sauƙi a gare mu. Kuma watakila ba za mu kwanta daga gare ta ba.

Idan kuna da gajimare, to ana yin haɓakawa cikin sauƙi a can. An ɗaga sabbin kwafi akan sabon kayan aikin. sauyawa. Kuma komai yana lafiya. Da sauki.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Shin zai yiwu a taɓa ƙananan faifai ko ta yaya? Kuma a nan, kawai tare da taimakon DBA, mun nutse cikin wani batu mai suna tuning point. Sai ya zama ba mu da gyaran wuraren bincike.

Menene wurin bincike? Yana cikin kowane DBMS. Lokacin da kake da bayanai a cikin ƙwaƙwalwar ajiyar da ke canzawa, ba a rubuta shi nan da nan zuwa faifai ba. Bayanan da bayanan suka canza an fara rubuta su zuwa ga rubuta-gaba. Kuma a wani lokaci, DBMS ya yanke shawarar cewa lokaci ya yi da za a zubar da ainihin shafuka zuwa faifai, ta yadda idan muka gaza, za mu iya rage REDO. Kamar abin wasa ne. Idan an kashe mu, za mu fara wasan daga wurin bincike na ƙarshe. Kuma duk DBMS suna aiwatar da shi.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Saituna a cikin Postgres suna baya a baya. An tsara su don 10-15 shekaru kundin bayanai da ma'amaloli. Kuma wurin bincike ba banda.

Ga bayanin daga rahoton binciken mu na Postgres, watau duba lafiyar atomatik. Kuma ga wasu bayanai na terabytes da yawa. Kuma ana iya gani da kyau cewa tilasta wuraren bincike a kusan kashi 90% na lokuta.

Me ake nufi? Akwai saituna guda biyu a wurin. Wurin bincike na iya zuwa ta hanyar ƙarewar lokaci, misali, cikin mintuna 10. Ko yana iya zuwa lokacin da aka cika bayanai da yawa.

Kuma ta tsohuwa an saita max_wal_saze zuwa gigabyte 1. A zahiri, wannan yana faruwa da gaske a Postgres bayan megabytes 300-400. Kun canza bayanai da yawa kuma wurin bincikenku ya faru.

Idan kuma ba wanda ya saurara, kuma sabis ɗin ya girma, kuma kamfani yana samun kuɗi mai yawa, yana da ciniki mai yawa, to, shingen binciken yana zuwa sau ɗaya a minti daya, wani lokacin kowane daƙiƙa 30, wani lokacin ma yakan zo. Wannan ba daidai ba ne.

Kuma muna buƙatar tabbatar da cewa yana zuwa ƙasa akai-akai. Wato, zamu iya haɓaka girman max_wal_size. Kuma zai zo kadan akai-akai.

Amma mun ɓullo da wata hanya ta yadda za a yi shi daidai, wato, yadda za a yanke shawara game da zabar saituna, a fili bisa takamaiman bayanai.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Saboda haka, muna yin gwaje-gwaje guda biyu a kan ma'ajin bayanai.

Silsilar farko - muna canza max_wal_size. Kuma muna yin gagarumin aiki. Da farko, muna yin shi akan saitunan tsoho na 1 gigabyte. Kuma muna yin babban Goge na miliyoyin layuka.

Kuna iya ganin yadda yake da wahala a gare mu. Mun ga cewa faifan IO yana da muni sosai. Muna duban adadin WAL da muka samar, saboda wannan yana da mahimmanci. Bari mu ga sau nawa wurin binciken ya faru. Kuma mun ga cewa ba shi da kyau.

Na gaba muna ƙara girman max_wal_size. Muna maimaitawa. Muna karuwa, muna maimaitawa. Kuma sau da yawa. A ka'ida, maki 10 yana da kyau, inda 1, 2, 4, 8 gigabytes. Kuma muna duban halayen wani tsari na musamman. A bayyane yake cewa a nan kayan aiki ya kamata su kasance kamar akan samfur. Dole ne ku sami diski iri ɗaya, adadin ƙwaƙwalwar ajiya iri ɗaya, da saitunan Postgres iri ɗaya.

Kuma ta wannan hanya za mu musanya tsarin mu, kuma mun san yadda DBMS za su yi hali idan wani mummunan taro DELETE, yadda za ta duba.

Dubawa a cikin Rashanci wuraren bincike ne.

Misali: SHAFE layuka miliyan da yawa ta fihirisa, layuka suna "watse" a cikin shafuka.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Ga misali. Wannan wani tushe ne. Kuma tare da saitunan tsoho na 1 gigabyte don max_wal_size, a bayyane yake cewa diski ɗinmu yana zuwa shelf don yin rikodin. Wannan hoton wata alama ce ta majiyyaci maras lafiya, wato, ya ji daɗi sosai. Kuma akwai aiki guda ɗaya, akwai kawai DELETE na layukan miliyan da yawa.

Idan aka bar irin wannan aiki a cikin kayan aiki, to kawai za mu kwanta, saboda a bayyane yake cewa DELETE ɗaya ya kashe mu a cikin rukunin.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Bugu da ari, inda 16 gigabytes, ya bayyana a fili cewa hakora sun riga sun tafi. Hakora sun riga sun fi kyau, wato, muna yin kullun a kan rufi, amma ba muni ba. Akwai 'yanci a wurin. A hannun dama akwai rikodin. Kuma adadin ayyuka - jadawali na biyu. Kuma a bayyane yake cewa mun riga mun numfashi kadan sauƙi lokacin da 16 gigabytes.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Kuma inda za a iya ganin gigabytes 64 cewa ya zama mafi kyau. An riga an furta hakora, akwai ƙarin damar da za a tsira da sauran ayyuka da yin wani abu tare da faifai.

Me yasa haka?

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Zan nutse cikin cikakkun bayanai kaɗan, amma wannan batu, yadda ake gudanar da gyaran wuraren bincike, na iya haifar da cikakken rahoto, don haka ba zan ɗauka da yawa ba, amma zan ɗan fayyace matsalolin da ke akwai.

Idan wurin bincike ya faru sau da yawa, kuma mun sabunta layinmu ba a jere ba, amma sami ta hanyar index, wanda yake da kyau, saboda ba mu share teburin duka ba, to yana iya faruwa cewa da farko mun taɓa shafin farko, sannan na dubu. sannan ya koma na farko . Kuma idan a tsakanin wadannan ziyarce-ziyarcen shafi na farko, checkpoint ya riga ya ajiye shi zuwa faifai, to zai sake ajiye shi, saboda mun samu kazanta a karo na biyu.

Kuma za mu tilasta wurin bincike don ajiye shi sau da yawa. Ta yaya za a yi masa wasu ayyuka da ba su da yawa.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Amma ba haka kawai ba. Shafukan sune kilobytes 8 a cikin Postgres da 4 kilobytes a cikin Linux. Kuma akwai saitin cikakken_shafi_rubutu. Ana kunna shi ta tsohuwa. Kuma wannan daidai ne, domin idan muka kashe shi, to akwai hatsarin cewa rabin shafin za a ajiye idan ya fadi.

Halin rubutawa zuwa WAL na log ɗin gaba shine idan muna da wurin bincike kuma muka canza shafin a karon farko, duk shafin, watau duk kilobytes 8, yana shiga cikin log ɗin gaba, kodayake mun canza kawai. layi, wanda yayi nauyin bytes 100. Kuma dole ne mu rubuta dukkan shafin.

A cikin canje-canje masu zuwa za a sami takamaiman tuple kawai, amma a karon farko mun rubuta komai.

Kuma, bisa ga haka, idan wurin binciken ya sake faruwa, to dole ne mu fara komai daga karce kuma mu tura dukkan shafin. Tare da wuraren bincike akai-akai, idan muka bi ta cikin shafuka guda, full_page_writes = kunnawa zai kasance fiye da yadda ake iya kasancewa, watau muna samar da ƙarin WAL. Ana aika ƙarin zuwa kwafi, zuwa rumbun adana bayanai, zuwa faifai.

Kuma, bisa ga haka, muna da redundancies guda biyu.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Idan muka ƙara girman max_wal_size, ya zama cewa mun sauƙaƙa duka biyun checkpoint da wal writer. Kuma hakan yayi kyau.

Mu saka terabyte mu zauna dashi. Me ke damun shi? Wannan ba daidai ba ne, domin idan aka gaza, za mu hau na tsawon sa'o'i, saboda wurin binciken ya daɗe kuma da yawa sun canza. Kuma muna buƙatar yin duk wannan REDO. Don haka muna yin jerin gwaje-gwaje na biyu.

Muna yin aiki kuma mu ga lokacin da wurin binciken ya kusa ƙarewa, muna kashe -9 Postgres da gangan.

Kuma bayan haka za mu sake farawa, mu ga tsawon lokacin da zai tashi akan wannan kayan aiki, watau nawa zai REDO a cikin wannan mummunan yanayi.

Sau biyu zan lura cewa yanayin ba shi da kyau. Da farko, mun yi karo da wuri tun kafin a ƙare shingen binciken, don haka muna da asarar da yawa. Na biyu kuma, an yi mana gagarumin aiki. Kuma idan wuraren binciken sun kasance a kan lokaci, to, mai yuwuwa, ƙarancin WAL ba zai haifar da shi ba tun daga wurin bincike na ƙarshe. Wato hasara biyu ce.

Muna auna irin wannan yanayin akan girman max_wal_size daban-daban kuma mu fahimci cewa idan max_wal_size ya kasance gigabytes 64, to a cikin mafi munin yanayi biyu zamu hau tsawon mintuna 10. Kuma muna tunanin ko ya dace da mu ko bai dace ba. Wannan tambaya ce ta kasuwanci. Muna bukatar mu nuna wannan hoton ga waɗanda ke da alhakin yanke shawarar kasuwanci kuma mu tambayi, “Har yaushe za mu iya kwanciya a mafi yawan lokuta idan akwai matsala? Za mu iya kwanta a cikin mafi munin yanayi na 3-5 minti? Kuma ku yanke shawara.

Kuma ga wani batu mai ban sha'awa. Muna da rahotanni guda biyu game da Patroni a taron. Kuma watakila kana amfani da shi. Wannan shine autofailover don Postgres. GitLab da Data Egret sunyi magana game da wannan.

Kuma idan kuna da autofailover wanda ya zo a cikin dakika 30, to watakila zamu iya kwanta na mintuna 10? Domin za mu canza zuwa kwafin ta wannan batu, kuma komai zai yi kyau. Wannan batu ne mara tushe. Ban san cikakkiyar amsa ba. Ina jin cewa wannan batu ba kawai a kusa da dawo da hatsari ba.

Idan muna da dogon murmurewa bayan gazawar, to ba za mu ji daɗi a wasu yanayi da yawa ba. Misali, a cikin gwaje-gwaje iri ɗaya, lokacin da muke yin wani abu kuma wani lokacin muna jira na mintuna 10.

Har yanzu ba zan yi nisa ba, ko da muna da autofailover. A matsayinka na mai mulki, dabi'u kamar 64, 100 gigabytes sune kyawawan dabi'u. Wani lokaci ma yana da daraja zabar ƙasa. Gabaɗaya, wannan kimiyya ce ta dabara.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Don yin maimaitawa, misali, max_wal_size = 1, 8, kuna buƙatar maimaita yawan aiki sau da yawa. Kun yi shi. Kuma akan tushe guda kuna son sake yin hakan, amma kun riga kun share komai. Me za a yi?

Zan yi magana daga baya game da mafitarmu, abin da muke yi don maimaitawa a cikin irin wannan yanayi. Kuma wannan ita ce hanya mafi dacewa.

Amma a wannan yanayin, mun yi sa'a. Idan, kamar yadda yake cewa a nan "BEGIN, DELETE, ROLLBACK", to zamu iya maimaita DELETE. Wato idan muka soke shi da kanmu, to za mu iya maimaita shi. Kuma a zahiri a gare ku bayanan za su kwanta a wuri guda. Ba ku ma samun kumburin ciki. Kuna iya maimaitawa akan irin waɗannan DELETEs.

Wannan DELETE tare da ROLLBACK yana da kyau don daidaita wuraren bincike, koda kuwa ba ku da ɗakunan binciken bayanai da aka tura da kyau.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Mun yi faranti mai shafi ɗaya "i". Postgres yana da ginshiƙan amfani. Ba su ganuwa sai dai in an nemi na musamman. Waɗannan su ne: ctid, xmid, xmax.

Ctid adireshin jiki ne. Shafin sifili, farkon tuple a cikin shafin.

Ana iya ganin cewa bayan ROOLBACK tuple ya kasance a wuri ɗaya. Wato, za mu iya sake gwadawa, zai kasance kamar haka. Wannan shi ne babban abu.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Xmax shine lokacin mutuwar tuple. An buga tambari, amma Postgres ya san cewa cinikin ya koma baya, don haka ba kome ba idan 0 ne ko ciniki ne mai birgima. Wannan yana nuna cewa yana yiwuwa a sake maimaitawa akan DELETE da duba yawancin ayyukan tsarin tsarin. Kuna iya yin labs na bayanai ga matalauta.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Wannan game da masu shirye-shirye ne. Game da DBA, kuma, koyaushe suna tsawata wa masu shirye-shirye saboda wannan: "Me yasa kuke yin irin waɗannan ayyuka masu tsawo da wahala?". Wannan batu ne mabanbanta gaba ɗaya. A da ana mulki, yanzu za a samu ci gaba.

Babu shakka, ba mu wargaje ba. Yana da zahiri. Ba shi yiwuwa a karya irin wannan DELETE don tarin miliyoyin layuka zuwa sassa. Za a yi shi na minti 20, kuma komai zai kwanta. Amma, da rashin alheri, har ma da ƙwararrun masu haɓakawa suna yin kuskure, har ma a cikin manyan kamfanoni.

Me yasa yake da mahimmanci a karya?

  • Idan muka ga diski yana da wuya, to bari mu rage shi. Kuma idan mun karye, to zamu iya ƙara tsayawa, za mu iya rage ƙumburi.

  • Kuma ba za mu daɗe da toshe wasu ba. A wasu lokuta ba komai, idan kuna share datti na gaske wanda babu wanda ke aiki akai, to tabbas ba za ku toshe kowa ba sai aikin autovacuum, saboda zai jira cinikin ya cika. Amma idan ka cire wani abu da wani zai iya nema, to za a toshe su, za a sami wani nau'in amsawar sarkar. Ya kamata a kauce wa doguwar ma'amaloli akan gidajen yanar gizo da aikace-aikacen hannu.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

https://postgres.ai/products/joe/

Wannan yana da ban sha'awa. Sau da yawa ina ganin masu haɓakawa suna tambaya: "Wane girman fakiti zan zaɓa?".

A bayyane yake cewa mafi girman girman damfara, ƙarami na ma'amala a kan gaba, watau, ƙarin ƙari daga ma'amaloli. Amma a lokaci guda, lokacin yana ƙaruwa don wannan ciniki.

Ina da ƙa'ida mai sauƙi: ɗauki gwargwadon abin da za ku iya, amma kar ku wuce abubuwan aiwatarwa a cikin daƙiƙa guda.

Me yasa dakika daya? Bayanin yana da sauƙi kuma mai fahimta ga kowa da kowa, har ma da mutanen da ba na fasaha ba. Muna ganin martani. Mu dauki miliyon 50. Idan wani abu ya canza, to idanunmu za su amsa. Idan kasa, to mafi wuya. Idan wani abu ya amsa bayan miliyon 100, misali, ka danna linzamin kwamfuta, kuma ya amsa maka bayan mil 100, ka riga ka ji wannan ɗan jinkiri. An riga an gane na biyu a matsayin birki.

A kan haka, idan muka karya ayyukanmu masu yawa zuwa fashe na daƙiƙa 10, to muna da haɗarin cewa za mu toshe wani. Kuma zai yi aiki na 'yan dakiku, kuma mutane za su lura da shi. Saboda haka, na fi son kada in yi fiye da dakika daya. Amma a lokaci guda, kada ku karya shi sosai, saboda ma'amala ta wuce gona da iri zai zama sananne. Tushen zai yi wuya, kuma wasu matsaloli daban-daban na iya tasowa.

Muna zaɓar girman fakitin. A kowane hali, za mu iya yin shi daban. Ana iya sarrafa shi ta atomatik. Kuma mun gamsu da ingancin sarrafa fakiti ɗaya. Wato, muna yin DELETE na fakiti ɗaya ko UPDATE.

Af, duk abin da nake magana ba game da DELETE kawai ba ne. Kamar yadda kuka zato, waɗannan su ne duk wani babban aiki akan bayanai.

Kuma mun ga cewa shirin yana da kyau. Kuna iya ganin sikanin fihirisar, sikanin fihirisa kawai ya fi kyau. Kuma muna da ƙaramin adadin bayanai a ciki. Kuma kasa da dakika daya ya cika. Super.

Kuma har yanzu muna buƙatar tabbatar da cewa babu ƙasƙanci. Yana faruwa cewa fakitin farko da sauri suna aiki, sannan kuma ya yi muni, muni da muni. Tsarin shine irin wannan cewa kuna buƙatar gwadawa da yawa. Wannan shi ne ainihin abin da labs database ke nufi.

Kuma har yanzu dole ne mu shirya wani abu ta yadda zai ba mu damar bin wannan daidai wajen samarwa. Misali, zamu iya rubuta lokacin a cikin log ɗin, zamu iya rubuta inda muke yanzu da wanda muka goge yanzu. Kuma wannan zai ba mu damar fahimtar abin da ke faruwa daga baya. Kuma idan wani abu ya faru, da sauri gano matsalar.

Idan muna buƙatar bincika ingancin buƙatun kuma muna buƙatar maimaita sau da yawa, to akwai irin wannan abu kamar ɗan'uwan bot. Ya riga ya shirya. Ana amfani da shi da yawa daga masu haɓakawa kowace rana. Kuma ya san yadda ake ba da babbar tarin bayanai ta terabyte akan buƙatu a cikin daƙiƙa 30, kwafin ku. Kuma za ku iya goge wani abu a wurin kuma ku ce RESET, sannan ku sake goge shi. Kuna iya gwada shi ta wannan hanya. Ina ganin makomar wannan abu. Kuma mun riga mun yi shi.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

https://docs.gitlab.com/ee/development/background_migrations.html

Menene dabarun rarraba? Ina ganin dabaru daban-daban na rarrabawa guda 3 waɗanda masu haɓakawa akan fakitin ke amfani da su.

Na farko abu ne mai sauqi qwarai. Muna da ID na lamba. Kuma bari mu raba shi zuwa tazara daban-daban kuma muyi aiki da wannan. Kasashe a bayyane yake. A kashi na farko, muna iya samun layukan datti na gaske 100, a cikin layukan 5 na biyu ko a’a, ko kuma duka layukan 1 za su zama shara. Aiki mara daidaituwa sosai, amma yana da sauƙin karya. Sun dauki mafi girman ID suka farfasa shi. Wannan hanya ce ta butulci.

Dabarar ta biyu ita ce madaidaiciyar hanya. Ana amfani da shi a Gitlab. Suka dauka suka leka teburin. Mun sami iyakokin fakitin ID ta yadda kowane fakitin yana da daidaitattun bayanai 10. Kuma sanya su a cikin jerin gwano. Sannan mu aiwatar. Kuna iya yin wannan a cikin zaren da yawa.

A cikin dabarun farko, kuma, ta hanya, kuna iya yin wannan a cikin zaren da yawa. Ba shi da wahala.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

https://medium.com/@samokhvalov/how-partial-indexes-affect-update-performance-in-postgres-d05e0052abc

Amma akwai mai sanyaya kuma mafi kyawun hanya. Wannan ita ce dabara ta uku. Kuma idan zai yiwu, yana da kyau a zabi shi. Muna yin haka ne bisa maƙasudi na musamman. A wannan yanayin, zai fi dacewa ya zama fihirisa bisa ga yanayin sharar mu da ID. Za mu haɗa da ID ɗin don ya zama abin dubawa ne kawai don kada mu je tsibi.

Gabaɗaya, sikanin fihirisa kawai ya fi sauri fiye da sikanin fihirisa.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Kuma da sauri muka sami ID ɗin mu da muke son cirewa. BATCH_SIZE mun zaba a gaba. Kuma ba kawai muna samun su ba, muna samun su ta hanya ta musamman kuma nan da nan mu yi hacking. Amma muna kulle ne don idan an riga an kulle su, ba mu kulle su ba, sai dai mu ci gaba da daukar na gaba. Wannan don sabunta tsallakewar kulle ne. Wannan babban fasalin Postgres yana ba mu damar yin aiki a cikin zaren da yawa idan muna so. Yana yiwuwa a cikin rafi ɗaya. Kuma a nan akwai CTE - wannan buƙatu ɗaya ce. Kuma muna da ainihin gogewa da ke gudana a bene na biyu na wannan CTE - returning *. Kuna iya dawo da id, amma ya fi kyau *idan ba ku da bayanai da yawa akan kowane layi.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Me yasa muke bukata? Wannan shi ne abin da muke bukatar mu bayar da rahoto. Yanzu mun goge layukan da yawa a zahiri. Kuma muna da iyakoki ta ID ko ta halitta_at kamar wannan. Kuna iya yin min, max. Ana iya yin wani abu kuma. Kuna iya kaya da yawa a nan. Kuma yana da matukar dacewa don saka idanu.

Akwai ƙarin bayanin kula guda ɗaya game da fihirisar. Idan muka yanke shawarar cewa muna buƙatar ƙididdiga ta musamman don wannan aikin, to muna buƙatar tabbatar da cewa ba ta lalata abubuwan haɓaka tuples kawai ba. Wato Postgres yana da irin wannan ƙididdiga. Ana iya ganin wannan a pg_stat_user_tables don teburin ku. Kuna iya ganin ko ana amfani da sabuntawa mai zafi ko a'a.

Akwai yanayi lokacin da sabon fihirisar ku zai iya yanke su kawai. Kuma kuna da duk sauran abubuwan sabuntawa waɗanda tuni suke aiki, sannu a hankali. Ba wai kawai saboda fihirisar ta bayyana ba (kowace fihirisar tana jinkirta sabuntawa kaɗan, amma kaɗan), amma a nan har yanzu yana lalata shi. Kuma ba shi yiwuwa a yi na musamman ingantawa ga wannan tebur. Wannan yana faruwa wani lokaci. Wannan dabara ce da mutane kaɗan ke tunawa. Kuma wannan rake yana da sauƙin takawa. Wani lokaci yakan faru cewa kuna buƙatar nemo wata hanya daga ɗayan ɓangaren kuma har yanzu kuna yin ba tare da wannan sabon fihirisar ba, ko yin wani index, ko ta wata hanya, alal misali, zaku iya amfani da hanya ta biyu.

Amma wannan ita ce mafi kyawun dabarun, yadda ake rarraba cikin batches da harbi a batches tare da buƙatu ɗaya, share ɗan ƙaramin abu, da sauransu.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Dogon ciniki https://gitlab.com/snippets/1890447

Katange autovacuum - https://gitlab.com/snippets/1889668

matsalar toshewa - https://gitlab.com/snippets/1890428

Kuskure #5 babba ne. Nikolai daga Okmeter yayi magana game da saka idanu na Postgres. Ideal Postgres saka idanu, rashin alheri, babu shi. Wasu sun fi kusa, wasu sun fi nisa. Okmeter ya kusa isa ya zama cikakke, amma abubuwa da yawa sun ɓace kuma suna buƙatar ƙarawa. Kuna buƙatar zama a shirye don wannan.

Misali, matattun tuples an fi lura da su. Idan kuna da abubuwa da yawa da suka mutu a cikin tebur, to wani abu ba daidai ba ne. Zai fi kyau mu mayar da martani a yanzu, in ba haka ba za a iya lalacewa, kuma za mu iya kwanta. Yana faruwa.

Idan akwai babban IO, to a bayyane yake cewa wannan ba shi da kyau.

Dogon ciniki kuma. Bai kamata a bar dogon ciniki a kan OLTP ba. Kuma a nan akwai hanyar haɗi zuwa snippet wanda ke ba ku damar ɗaukar wannan snippet kuma kun riga kun yi wasu bincike na dogon lokaci.

Me yasa dogayen ciniki ba su da kyau? Domin duk makullin za a sake su ne kawai a ƙarshe. Kuma muna murƙushe kowa. Bugu da kari, muna toshe autovacuum ga duk teburi. Ba shi da kyau ko kadan. Ko da an kunna jiran aiki mai zafi akan kwafin, har yanzu yana da muni. Gabaɗaya, babu inda ya fi dacewa don kauce wa dogon ma'amaloli.

Idan muna da tebura da yawa waɗanda ba a share su ba, to muna buƙatar samun faɗakarwa. A nan irin wannan yanayin yana yiwuwa. Za mu iya shafar aikin autovacuum a kaikaice. Wannan snippet ne daga Avito, wanda na ɗan inganta shi. Kuma ya zama kayan aiki mai ban sha'awa don ganin abin da muke da shi tare da autovacuum. Misali, wasu tebura suna jira a wurin kuma ba za su jira lokacinsu ba. Hakanan kuna buƙatar sanya shi cikin saka idanu kuma ku sami faɗakarwa.

Kuma al'amurran da suka shafi blocks. Dajin toshe bishiyoyi. Ina son in karɓi wani abu daga wurin wani in inganta shi. Anan na ɗauki CTE mai sanyi mai maimaitawa daga Data Egret wanda ke nuna daji na bishiyar kulle. Wannan kayan aikin bincike ne mai kyau. Kuma akan tushen sa, zaku iya gina sa ido. Amma dole ne a yi hakan a hankali. Kuna buƙatar yin ɗan gajeren lokaci_lokaci don kanku. Kuma lock_timeout yana da kyawawa.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Wani lokaci duk waɗannan kurakurai suna faruwa a jimla.

A ra'ayina, babban kuskure a nan shi ne tsarin kungiya. Yana da tsari, saboda dabarar ba ta ja. Wannan shine lamba 2 - sun duba a wurin da bai dace ba.

Mun bincika a wurin da ba daidai ba, saboda ba mu da clone na samarwa, wanda ke da sauƙin dubawa. Mai ƙila mai haɓakawa baya samun damar samarwa kwata-kwata.

Kuma mun duba ba a can. Da mun leka can, da kanmu mu gani. Mai haɓakawa ya gan shi duka ko da ba tare da DBA ba idan ya duba shi a cikin yanayi mai kyau, inda akwai adadin bayanai iri ɗaya da wuri iri ɗaya. Da ya ga duk wannan wulakancin ya ji kunya.

Ƙari game da autovacuum. Bayan mun yi layukan miliyoyi masu yawa, har yanzu muna buƙatar yin REPACK. Wannan yana da mahimmanci musamman ga index. Za su ji daɗi bayan mun tsaftace komai a wurin.

Kuma idan kuna son dawo da aikin tsabtace yau da kullun, to zan ba da shawarar yin shi sau da yawa, amma ƙarami. Yana iya zama sau ɗaya a minti ɗaya ko ma fiye da sau da yawa kaɗan. Kuma kana buƙatar saka idanu akan abubuwa guda biyu: cewa wannan abu ba shi da kurakurai kuma ba ya jinkiri. Dabarar da na nuna zata magance wannan kawai.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Abin da muke yi shine tushen budewa. An buga shi akan GitLab. Kuma mun sanya shi don mutane su iya dubawa ko da ba tare da DBA ba. Muna yin ɗakin binciken bayanai, wato, muna kiran sashin tushe wanda Joe ke aiki akansa a halin yanzu. Kuma zaku iya ɗaukar kwafin samarwa. Yanzu akwai aiwatar da Joe don slack, zaku iya cewa a can: "bayyana irin wannan tambaya" kuma nan da nan sami sakamakon don kwafin bayananku. Kuna iya ma Goge wurin, kuma ba wanda zai lura da shi.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Bari mu ce kuna da terabytes 10, muna yin laburar adana bayanai kuma terabyte 10. Kuma tare da bayanan terabyte 10 na lokaci guda, masu haɓakawa 10 na iya aiki a lokaci ɗaya. Kowa na iya yin abin da yake so. Zai iya sharewa, sauke, da sauransu. Wannan shine irin wannan fantasy. Za mu yi magana game da wannan gobe.

Masoyi DELETE. Nikolay Samokhvalov (Postgres.ai)

Ana kiran wannan siriri tanadi. Wannan shi ne da dabara tanadi. Wannan wani nau'i ne na zato wanda ke kawar da jinkirin ci gaba sosai, a cikin gwaji kuma ya sa duniya ta zama wuri mafi kyau a wannan batun. Wato, yana ba ku damar guje wa matsaloli tare da ayyuka masu yawa.

Misali: 5 terabyte database, samun kwafi cikin ƙasa da daƙiƙa 30. Kuma bai dogara da girmansa ba, wato ba komai yawan terabytes ba.

Yau za ku iya zuwa postgres.ai da kuma tono kayan aikin mu. Kuna iya yin rajista don ganin abin da ke wurin. Kuna iya shigar da wannan bot. Yana da kyauta. Rubuta.

Tambayoyi

Sau da yawa a cikin yanayi na ainihi ya bayyana cewa bayanan da ya kamata su kasance a cikin tebur ya fi ƙasa da abin da ake buƙatar sharewa. Wato, a irin wannan yanayi, sau da yawa yana da sauƙi don aiwatar da irin wannan hanya, lokacin da ya fi sauƙi don ƙirƙirar sabon abu, kwafi kawai bayanan da ake bukata a can, da kuma gangara tsohon tebur. A bayyane yake cewa ana buƙatar tsarin shirin don wannan lokacin, yayin da za ku canza. Yaya wannan tsarin yake?

Wannan hanya ce mai kyau kuma aiki ne mai kyau. Ya yi kama da abin da pg_repack yake yi, yana da kama da abin da za ku yi idan kun yi ID 4 bytes. Yawancin tsarin aiki sun yi haka a 'yan shekarun da suka gabata, kuma kawai faranti sun girma, kuma suna buƙatar canza su zuwa 8 bytes.

Wannan aikin yana da wahala sosai. Mun yi shi. Kuma dole ne ku yi taka tsantsan. Akwai makullai da sauransu Amma ana yi. Wato, daidaitaccen tsarin shine tafiya tare da pg_repack. Kuna bayyana irin wannan alamar. Kuma kafin ka fara loda bayanan hoto a ciki, ka kuma bayyana faranti guda ɗaya wanda ke bin duk canje-canje. Akwai dabarar da ƙila ba za ku iya bin wasu canje-canje ba. Akwai dabara. Sa'an nan kuma ku canza ta hanyar birgima canje-canje. Za a ɗan ɗan dakata lokacin da muka rufe kowa, amma gabaɗaya ana yin haka.

Idan ka kalli pg_repack akan GitHub, to akwai, lokacin da akwai aiki don canza ID daga int 4 zuwa int 8, to akwai ra'ayin amfani da pg_repack kanta. Wannan kuma yana yiwuwa, amma yana da ɗan hack, amma zai yi aiki don wannan kuma. Kuna iya shiga tsakani a cikin abin da pg_repack ke amfani da shi kuma ku ce a can: "Ba ma buƙatar wannan bayanan", watau mu kawai canja wurin abin da muke buƙata. Sai kawai ya canza shi ke nan.

Tare da wannan tsarin, har yanzu muna samun kwafin tebur na biyu, wanda aka riga aka ƙididdige bayanan kuma an tattara su daidai da kyawawan fihirisa.

Bloat ba ya nan, hanya ce mai kyau. Amma na san cewa akwai yunƙurin haɓaka na'ura mai sarrafa kansa don wannan, watau don samar da mafita ta duniya. Zan iya tuntuɓar ku da wannan aiki da kai. An rubuta shi da Python, wanda abu ne mai kyau.

Ni dan kadan ne daga duniyar MySQL, don haka na zo saurare. Kuma muna amfani da wannan hanya.

Amma kawai idan muna da 90%. Idan muna da 5%, to ba shi da kyau a yi amfani da shi.

Na gode da rahoton! Idan babu albarkatun don yin cikakken kwafin samfur, akwai wani algorithm ko dabara don ƙididdige kaya ko girman?

Tambaya mai kyau. Ya zuwa yanzu, muna iya samun bayanan bayanan terabyte da yawa. Ko da hardware babu iri ɗaya, misali, ƙarancin ƙwaƙwalwar ajiya, ƙarancin processor da diski ba daidai ba ne, amma duk da haka muna yin shi. Idan babu kwata-kwata, to kuna buƙatar tunani. Bari na yi tunani sai gobe, ka zo, za mu yi magana, wannan tambaya ce mai kyau.

Na gode da rahoton! Kun fara farawa game da gaskiyar cewa akwai sanyi Postgres, wanda ke da irin wannan iyakokin, amma yana haɓakawa. Kuma wannan shi ne duk wani gungumen azaba. Shin wannan ba duka yana cin karo da ci gaban Postgres da kansa ba, wanda wasu masu ƙetare za su bayyana ko kuma wani abu dabam da yakamata ya kiyaye a ƙaramin matakin abin da muke ƙoƙarin lalata da wasu abubuwan ban mamaki a nan?

Idan muka ce a cikin SQL don sharewa ko sabunta bayanai da yawa a cikin ma'amala ɗaya, to ta yaya Postgres zai iya rarraba shi a can? Muna da iyaka a cikin ayyuka. Har yanzu za mu yi shi na dogon lokaci. Kuma za mu kulle a wannan lokacin, da dai sauransu.

Anyi tare da fihirisa.

Zan iya ɗauka cewa kunna wurin bincike iri ɗaya na iya zama mai sarrafa kansa. Wata rana yana iya zama. Amma a lokacin ban gane ainihin tambayar ba.

Abin tambaya a nan shi ne, shin akwai irin wannan nau’in ci gaban da ke zuwa nan da can, kuma ga naku yana tafiya daidai? Wadancan. Shin har yanzu basu yi tunani akai ba?

Na yi magana game da ƙa'idodin da za a iya amfani da su a yanzu. Akwai wani bot Nancy, da wannan zaka iya yin gyara wurin bincike ta atomatik. Shin wata rana zai kasance a Postgres? Ban sani ba, har yanzu ba a tattauna ba. Har yanzu muna nesa da hakan. Amma akwai masana kimiyya da suka yi sabon tsarin. Kuma sun tura mu cikin fihirisar atomatik. Akwai ci gaba. Misali, zaku iya kallon kunnawa ta atomatik. Yana zaɓar sigogi ta atomatik. Amma har yanzu ba zai yi muku gyaran wuraren bincike ba tukuna. Wato, zai ɗauka don yin aiki, buffer harsashi, da sauransu.

Kuma don kunna wuraren bincike, zaku iya yin wannan: idan kuna da gungu dubu da kayan aiki daban-daban, injunan kama-da-wane a cikin gajimare, zaku iya amfani da bot ɗin mu. Nancy yi aiki da kai. Kuma za a zaɓi max_wal_size bisa ga saitunan da aka yi niyya ta atomatik. Amma ya zuwa yanzu wannan bai ma kusa a cikin ainihin ba, rashin alheri.

Barka da rana Kun yi magana game da haɗarin dogon ciniki. Kun ce an toshe autovacuum idan an goge. Ta yaya kuma yake cutar da mu? Domin muna magana ne game da 'yantar da sarari da samun damar yin amfani da shi. Me kuma muka rasa?

Autovacuum watakila ba shine babbar matsala ba a nan. Kuma gaskiyar cewa doguwar ciniki na iya kulle sauran ma'amaloli, wannan yuwuwar ya fi haɗari. Ta yiwu ko ba za ta hadu ba. Idan ta hadu, to yana iya zama mummunan. Kuma tare da autovacuum - wannan ma matsala ce. Akwai matsaloli guda biyu tare da dogayen ma'amaloli a cikin OLTP: makullai da autovacuum. Kuma idan kuna da ra'ayin jiran aiki mai zafi wanda aka kunna akan kwafi, to har yanzu za ku karɓi makullin autovacuum a kan maigidan, zai zo daga kwafin. Amma aƙalla ba za a sami makullai ba. Kuma za a sami loks. Muna magana ne game da canje-canjen bayanai, don haka makullai muhimmin batu ne a nan. Kuma idan wannan duka na dogon lokaci ne, to, ana kulle ma'amaloli da yawa. Suna iya sace wasu. Kuma itatuwan lok sun bayyana. Na ba da hanyar haɗi zuwa guntun bayanai. Kuma wannan matsala ta zama mafi sauri fiye da matsalar tare da autovacuum, wanda kawai zai iya tarawa.

Na gode da rahoton! Kun fara rahoton ku da cewa kun gwada ba daidai ba. Mun ci gaba da ra'ayinmu cewa muna buƙatar ɗaukar kayan aiki iri ɗaya, tare da tushe a cikin hanya ɗaya. Bari mu ce mun ba mai haɓaka tushe. Kuma ya bi wannan bukata. Kuma da alama ba shi da lafiya. Amma ba ya bincika rayuwa, amma don rayuwa, alal misali, muna da nauyin 60-70%. Kuma ko da mun yi amfani da wannan kunnawa, ba ya aiki sosai.

Samun gwani a cikin ƙungiyar da kuma amfani da ƙwararrun DBA waɗanda zasu iya yin hasashen abin da zai faru tare da ainihin nauyin baya yana da mahimmanci. Lokacin da kawai muka fitar da canje-canje masu tsabta, muna ganin hoton. Amma hanyar da ta fi ci gaba, lokacin da muka sake yin abu ɗaya, amma tare da nauyin da aka kwatanta tare da samarwa. Yayi sanyi sosai. Har sai lokacin, dole ne ku girma. Kamar babba. Mun kalli abin da muke da shi kuma mun duba ko muna da isassun albarkatun. Tambaya ce mai kyau.

Lokacin da muka riga muna yin zaɓin shara kuma muna da, misali, tuta da aka goge

Wannan shine abin da autovacuum ke yi ta atomatik a cikin Postgres.

Oh, yana yi?

Autovacuum shine mai tara shara.

Na gode!

Na gode da rahoton! Shin akwai wani zaɓi don tsara bayanai nan da nan tare da rarrabuwa ta yadda duk datti ya zama datti daga babban tebur a wani wuri zuwa gefe?

Tabbas da.

Shin zai yiwu mu kare kanmu idan mun kulle tebur wanda bai kamata a yi amfani da shi ba?

Tabbas da. Amma kamar tambayar kaza da kwai. Idan duk mun san abin da zai faru a nan gaba, to, ba shakka, za mu yi duk abin da kyau. Amma kasuwancin yana canzawa, akwai sababbin ginshiƙai, sababbin buƙatun. Kuma a sa'an nan - oops, muna so mu cire shi. Amma wannan kyakkyawan yanayin, a cikin rayuwa yana faruwa, amma ba koyaushe ba. Amma gabaɗaya yana da kyau. Kawai yanke kuma shi ke nan.

source: www.habr.com

Add a comment