Gabim në përdorimin e modalitetit automatik të menaxherit të kyçjes. Kontrolli i bllokimit të të dhënave të transaksionit, Mekanizmi

Arsyet kryesore për kalimin në bravat e menaxhuara:

  • Arsyeja kryesore është rekomandimi i 1C:Expert bazuar në dëshmi ose 1C:TsUP
  • Probleme me përdoruesit e njëkohshëm ()
  • Duke përdorur Oracle, PostgreSQL dhe.

Kostoja e punës:

Thelbi i bravave të menaxhuara

Kur punoni në modalitetin e kontrollit të kyçjes automatike, 1C:Enterprise vendos një shkallë të lartë të izolimit të të dhënave në një transaksion në nivelin DBMS. Kjo ju lejon të eliminoni plotësisht mundësinë e marrjes së të dhënave jo të plota ose të pasakta pa ndonjë përpjekje të veçantë nga ana e zhvilluesve të aplikacioneve.

Kjo është një qasje e përshtatshme dhe korrekte për një numër të vogël përdoruesish aktivë. Çmimi i lehtësisë së zhvillimit është një sasi e caktuar e bllokimit të tepërt në nivelin DBMS. Këto bravë shoqërohen si me veçoritë e zbatimit të mekanizmave të kyçjes në vetë DBMS, ashtu edhe me faktin se DBMS nuk mund (dhe nuk e merr) parasysh kuptimin fizik dhe strukturën e objekteve të meta të dhënave 1C: Enterprise.

Kur punoni me grindje të lartë për burime (një numër i madh përdoruesish), në një moment ndikimi i bllokimeve të tepërta bëhet i dukshëm për sa i përket performancës në modalitetin paralel.

Pas transferimit të konfigurimit në modalitetin e menaxhuar, funksionaliteti shtesë i "menaxherit të bllokimit" aktivizohet në platformë dhe kontrolli i integritetit të të dhënave tani kryhet jo në anën e DBMS, por në anën e serverit 1C. Kjo rrit ngarkesën në harduerin e serverit 1C (duhen procesorë më të shpejtë dhe më shumë memorie), dhe në fakt sjell edhe një ngadalësim të lehtë (disa përqind), por përmirëson ndjeshëm situatën me kyçjet (më pak kyçje për shkak të bllokimeve në një objekt, dhe jo në një kombinim tabelash, zonë më pak bllokuese dhe në disa raste jetëgjatësia e bllokimeve të leximit është më e shkurtër, pra jo deri në fund të transaksionit). Kjo përmirëson konkurencën e përgjithshme.


Konfigurimet e reja nga 1C u zbatuan menjëherë në një mënyrë të kontrolluar.

  • Pyetje: A është e mundur që fillimisht të bëhet një auditim dhe më pas të transferohet në FM?

Përgjigje: Po, auditimi do të shërbejë si një justifikim shtesë për fizibilitetin e transferimit në bravat e menaxhuara dhe gjithashtu për të vlerësuar kontributin e bravave automatike në ngadalësimin e përgjithshëm dhe nëse nevojiten përpjekje shtesë përveç transferimit.

  • Pyetje: Për të transferuar në UB, çfarë lloj aksesi duhet të sigurohet - RDP, TeamViewer? Apo mund t'ju dërgoj skedarin e konfigurimit?

Përgjigje: Ne përpiqemi të mos kufizohemi në një teknologji specifike të aksesit në distancë, do të ndodhë çdo teknologji të qasjes në distancë. Nëse nuk ka rëndësi për ju, atëherë RDP është më praktik.
Ne mund të kryejmë optimizim bazuar në skedarin e konfigurimit të dërguar, por atëherë nuk do të jemi në gjendje të korrigjojmë disa të dhëna reale dhe do të duhet të provoni më me kujdes. Nëse kryejmë optimizim në një kopje të bazës së të dhënave, ne mund ta testojmë atë më tërësisht përpara se t'ju japim rezultatin e punës.

  • Pyetje: Kemi 10 programues me kohë të plotë që ndryshojnë diçka në konferencë çdo ditë. Përdoret një dyqan konfigurimi i përbashkët." Si do të organizohet ndërveprimi gjatë transferimit në UX? Apo duhet të dërgohen të gjithë programuesit me pushime?

Përgjigje: Si rregull, ndryshimet tona bëhen brenda disa ditësh. Pjesa tjetër e kohës kalohet duke testuar ndryshimet e bëra, duke përfshirë nga pikëpamja e logjikës së kërkuar të përcaktuar nga biznesi dhe jo nga konsideratat teknike. ne ne mund të bëjmë ndryshime në një skedar të veçantë konfigurimi cf , dhe më pas programuesi juaj do ta angazhojë atë në depo. Askush nuk do të duhet të shkojë me pushime. Në opsionet e tjera për ndërveprim, ju vetëm duhet të bini dakord se cilat objekte planifikojnë të kapin zhvilluesit tuaj, në mënyrë që ne të mund të ndërtojmë një plan pune që është i përshtatshëm për të dyja palët. Si rregull, zhvilluesit tuaj nuk kanë nevojë të kapin të gjithë konfigurimin ose të na japin "timonin" për ditën.

Sistemi 1C: Enterprise ju lejon të përdorni dy mënyra të punës me bazën e të dhënave: mënyrën e bllokimeve automatike në një transaksion dhe mënyrën e bllokimeve të kontrolluara në një transaksion.

Dallimi themelor midis këtyre mënyrave është si më poshtë. Modaliteti i kyçjes automatike nuk kërkon që zhvilluesi të ndërmarrë ndonjë veprim për të menaxhuar bllokimet në një transaksion. Këto rregulla sigurohen nga platforma e sistemit 1C: Enterprise përmes përdorimit të niveleve të caktuara të izolimit të transaksioneve në një DBMS të veçantë. Kjo mënyrë funksionimi është më e thjeshta për zhvilluesin, megjithatë, në disa raste (për shembull, me punë intensive të njëkohshme të një numri të madh përdoruesish), niveli i izolimit të transaksionit i përdorur në DBMS nuk mund të sigurojë paralelizëm të mjaftueshëm, i cili manifestohet në forma e një numri të madh konfliktesh bllokimi kur përdoruesit punojnë.

Kur funksionon në modalitetin e bllokimit të menaxhuar, sistemi 1C: Enterprise përdor një nivel shumë më të ulët të izolimit të transaksionit në DBMS, i cili mund të rrisë ndjeshëm konkurencën e përdoruesve të zgjidhjes së aplikacionit. Megjithatë, ndryshe nga mënyra e mbylljes automatike, ky nivel i izolimit të transaksionit nuk mund të sigurojë më në vetvete pajtueshmërinë me të gjitha rregullat për të punuar me të dhënat në një transaksion. Prandaj, kur punoni në modalitetin e menaxhuar, zhvilluesi duhet të menaxhojë në mënyrë të pavarur bravat e vendosura në transaksion.

Në përmbledhje, ndryshimet kur punoni në modalitetin e bllokimit automatik dhe në mënyrën e bllokimit të kontrolluar tregohen në tabelën e mëposhtme:

Vendosja e mënyrës së bllokimit në konfigurim

Konfigurimi ka veçorinë Data Lock Control Mode. Çdo objekt i aplikacionit të konfigurimit ka gjithashtu një veti të modalitetit të kontrollit të kyçjes së të dhënave.
Modaliteti i kontrollit të bllokimit të të dhënave për të gjithë konfigurimin mund të vendoset në Automatik, Menaxhuar (parazgjedhja për një konfigurim të ri) ose Automatik dhe i Menaxhuar. Vlerat automatike dhe të menaxhuara nënkuptojnë që mënyra përkatëse e bllokimit do të përdoret për të gjitha objektet e konfigurimit, pavarësisht nga vlerat e vendosura për secilin prej objekteve. Vlera automatike dhe e menaxhuar do të thotë që për një objekt të caktuar konfigurimi do të përdoret modaliteti i specifikuar në veçorinë e tij "Modaliteti i kontrollit të kyçjes së të dhënave": Automatik ose i menaxhuar.
Duhet të theksohet se mënyra e kontrollit të bllokimit të të dhënave të specifikuar për një objekt meta të dhënash është vendosur për ato transaksione që inicohen nga sistemi 1C: Enterprise kur punoni me të dhënat e këtij objekti (për shembull, kur modifikoni të dhënat e objektit).
Nëse, për shembull, operacioni i shkrimit të një objekti kryhet në një transaksion të iniciuar nga zhvilluesi (metoda StartTransaction()), atëherë mënyra e kontrollit të bllokimit të të dhënave do të përcaktohet nga vlera e parametrit Locking Mode
metoda StartTransaction(), dhe jo vlera e vetive të objektit të meta të dhënave të modalitetit të kontrollit të Data Lock.
Si parazgjedhje, parametri i modalitetit të bllokimit është vendosur në modalitetin automatik të kontrollit të bllokimit të të dhënave, kështu që
Për të përdorur modalitetin e bllokimit të menaxhuar në një transaksion të qartë, duhet të specifikoni vlerën e këtij parametri
Modaliteti i kontrollit të bllokimit të të dhënave.

Puna me bravë të menaxhuar duke përdorur gjuhën e integruar

Për të menaxhuar bllokimet në një transaksion, përdoret objekti i integruar i gjuhës DataLock. Një shembull i këtij objekti mund të krijohet duke përdorur një konstruktor dhe ju lejon të përshkruani hapësirat e nevojshme të kyçjes dhe mënyrat e kyçjes. Për të vendosur të gjitha bravat e krijuara, përdorni metodën Lock() të objektit DataLock. Nëse kjo metodë ekzekutohet në një transaksion (të qartë ose të nënkuptuar), bllokimet fitohen dhe do të lëshohen automatikisht kur transaksioni të përfundojë. Nëse metoda Lock() ekzekutohet jashtë një transaksioni, nuk do të fitohen bllokime.

Janë vendosur kushtet që vlera e fushës të jetë e barabartë me vlerën e specifikuar ose që vlera e fushës të jetë brenda intervalit të caktuar.
Kushtet mund të vendosen në dy mënyra:

  • duke specifikuar në mënyrë eksplicite emrin dhe vlerën e fushës (metoda SetValue() të objektit DataLockElement);
  • duke specifikuar një burim të dhënash që përmban vlerat e kërkuara (vetia DataSource e objektit DataLockElement).

Për çdo element bllokues, mund të vendoset një nga dy mënyrat e bllokimit:

  • të përbashkëta,
  • të jashtëzakonshme.

Tabela e përputhshmërisë së bllokimit të menaxhuar duket si kjo:

Modaliteti i kyçjes së përbashkët do të thotë që të dhënat e kyçura nuk mund të modifikohen nga një transaksion tjetër deri në fund të transaksionit aktual.
Bllokimi ekskluziv do të thotë që të dhënat e kyçura nuk mund të modifikohen nga një transaksion tjetër deri në fund të transaksionit aktual dhe as nuk mund të lexohen nga një transaksion tjetër që mban një bllokim të përbashkët në të dhëna.

Karakteristikat e funksionimit në modalitetin "Automatik dhe i kontrolluar".

Kur punoni në modalitetin e kontrollit të bllokimit automatik dhe të kontrolluar, duhet të merren parasysh dy veçori:

Pavarësisht nga mënyra e specifikuar për një transaksion të caktuar, sistemi do të instalojë menaxhimin e duhur
duke bllokuar.
Mënyra e kontrollit të bllokimit përcaktohet nga transaksioni i nivelit më të lartë. Me fjalë të tjera, nëse një transaksion tjetër ka filluar në momentin e fillimit të transaksionit, atëherë transaksioni i nisur mund të ekzekutohet vetëm në modalitetin që është vendosur për transaksionin tashmë në ekzekutim.

Le të shqyrtojmë veçoritë e listuara në më shumë detaje.

Karakteristika e parë është se edhe nëse modaliteti i menaxhimit automatik të bllokimit përdoret për një transaksion, sistemi do të instalojë gjithashtu bllokimet përkatëse të menaxhuara kur shkruan të dhëna në këtë transaksion. Nga kjo rrjedh se transaksionet e kryera në modalitetin e bllokimit të menaxhuar mund të bien ndesh me transaksionet e kryera në modalitetin e menaxhimit të bllokimit automatik.

Karakteristika e dytë është se modaliteti i menaxhimit të bllokimit i specifikuar për një objekt meta të dhënash në konfigurim ose i specifikuar në mënyrë eksplicite kur fillon një transaksion (si parametër i metodës StartTransaction()) është vetëm një modalitet "i dëshiruar". Modaliteti aktual i menaxhimit të bllokimit në të cilin do të ekzekutohet transaksioni varet nëse kjo është thirrja e parë për të filluar një transaksion, ose nëse një transaksion tjetër ka filluar tashmë në këtë seancë të sistemit 1C:Enterprise në atë moment.

Për shembull, nëse keni nevojë të menaxhoni bllokimet kur shkruani grupe të regjistrave të regjistrit kur postoni një dokument, atëherë mënyra e bllokimit të menaxhuar duhet të vendoset si për vetë regjistrin ashtu edhe për dokumentin, pasi shkrimi i grupeve të regjistrave të regjistrave do të kryhet në transaksion. hapet gjatë shkrimit të dokumentit.

Mekanizmi i menaxhimit të bllokimit të të dhënave në një transaksion ju lejon të bllokoni të dhënat e ndryshueshme jo me anë të sistemit të menaxhimit të bazës së të dhënave të përdorur, por me anë të platformës. Një menaxhim i tillë i bllokimit të të dhënave kryhet jo për sa i përket të dhënave DBMS, por për sa i përket fushës së temës. Falë kësaj, bravat aplikohen më saktë dhe rritet konkurenca e përdoruesit.

Konfigurimi 1C: Ndërmarrja 8 mund të funksionojë në një nga tre mënyrat për menaxhimin e bravave në një transaksion:

  • auto;
  • i menaxhuar - modaliteti standard për konfigurime të reja;
  • automatike dhe të kontrolluara.

modaliteti automatik Menaxhimi i bllokimit të të dhënave përdor nivelet e përsëritshme të leximit dhe të izolimit të transaksioneve të serializuara të ofruara nga sistemi i menaxhimit të bazës së të dhënave. Këto nivele të izolimit të transaksioneve sigurojnë leximin e qëndrueshëm dhe të qëndrueshëm të të dhënave pa kërkuar ndonjë përpjekje shtesë për menaxhimin e bllokimit nga zhvilluesi.

Modaliteti i menaxhuar ju lejon të rritni paralelizmin e punës së përdoruesit në mënyrën e funksionimit klient-server duke përdorur një nivel më të ulët të izolimit të transaksioneve të bazës së të dhënave (Read Committed). Kur shkruani të dhëna në një transaksion, objektet e integruara të gjuhës bllokojnë automatikisht të dhënat e kërkuara. Zhvilluesi duhet të menaxhojë bllokimet e të dhënave në rastet kur logjika e biznesit kërkon lexim të vazhdueshëm dhe të qëndrueshëm të të dhënave në një transaksion.

Automatik dhe i kontrolluar modaliteti ju lejon të përdorni aftësinë për të menaxhuar bravat në një transaksion vetëm për disa objekte konfigurimi. Ky modalitet mund të përdoret për të optimizuar konkurencën e përdoruesit me objektet individuale të aplikacionit (për shembull, disa nga dokumentet më intensive të përdorura) ose për të kaluar gradualisht konfigurimet e mëdha në modalitetin e menaxhimit të bllokimit të transaksioneve.

Në përmbledhje, ndryshimet kur punoni në modalitetin e bllokimit automatik dhe në mënyrën e bllokimit të kontrolluar tregohen në tabelën e mëposhtme:

Më shpesh, nevoja për të menaxhuar bllokimet e të dhënave në një transaksion lind në procesin e postimit të dokumenteve, kur duhet të lexoni dhe më pas të shkruani të dhënat e ndryshuara në të njëjtat tabela. Për shembull, nëse jeni duke monitoruar bilancet kur postoni një dokument.

Veçanërisht për këtë qëllim kanë pronësinë e regjistrave të akumulimit dhe të regjistrave kontabël BlockForChange.

Nëse duhet të kontrolloni bilancet dhe më pas të regjistroni lëvizjet në të njëjtin regjistër, atëherë kjo pronë duhet të vendoset për grupin e të dhënave të këtij regjistri në pronë. Lëvizjet.

Efekti i kësaj veçorie është i njëjtë sikur zhvilluesi të instalojë në mënyrë të pavarur (të përshkruar në kod) bravat e nevojshme të menaxhuara për 1C:Enterprise 8. Platforma do të instalojë automatikisht bllokimin e nevojshëm të menaxhuar kur shkruan këtë grup regjistrimesh. Si rezultat, transaksionet e tjera të menaxhuara që përdorin të njëjtin kyç nuk do të mund të fillojnë të lexojnë këtë regjistër derisa transaksioni aktual të ketë përfunduar.

Më poshtë është një shembull i kontrollit "manual" të bllokimeve të të dhënave gjatë leximit të të dhënave të regjistrit të grumbullimit Kontabiliteti për artikujt në përpunimin e dokumenteve Fatura e shitjes. Në këtë shembull, bravat e menaxhuara krijohen dhe vendosen tërësisht duke përdorur gjuhën e integruar.

Mekanizmi bravat e transaksionit përdoret për akses konkurrues të përdoruesve në DBMS.
Një transaksion është një lloj operacioni i vazhdueshëm gjatë të cilit ndryshon gjendja e bazës së të dhënave. Kjo është sasia minimale e ndryshimit: nuk mund të bësh gjysmë transaksioni; nëse transaksioni nuk përfundon, baza e të dhënave do të kthehet në gjendjen e saj fillestare.
Meqenëse një transaksion kap një grup të dhënash, lind një nuancë në aksesin në këtë grup: për shembull, një transaksion ndryshon të dhënat dhe një tjetër përpiqet t'i lexojë ato. Rezultati i leximit mund të jetë i pasaktë, sepse nuk do të përfshijë ndryshimet e fundit. Prandaj, izolimi i transaksioneve funksionon në nivelin DBMS. Nivelet e mëposhtme të izolimit janë të mundshme:

  • Lexoni të paangazhuar- ndërsa një transaksion ndryshon grupin, një tjetër nuk mund ta ndryshojë atë, por mund ta lexojë. Niveli më i ulët i izolimit.
  • Lexoni të përkushtuar- ndërsa një transaksion ndryshon grupin, një tjetër nuk mund ta ndryshojë ose lexojë atë
  • Lexim i përsëritur- ndërsa një transaksion lexon grupin, një tjetër nuk mund ta ndryshojë atë, por mund ta lexojë atë
  • E serializueshme- ndërsa një transaksion lexon grupin, një tjetër nuk mund ta ndryshojë ose lexojë atë. Të gjitha operacionet janë të njëpasnjëshme. Niveli maksimal i izolimit.

Nëse konfigurimi 1C: Enterprise është vendosur në modaliteti i mbylljes automatike, atëherë niveli i izolimit të transaksionit zgjidhet nga DBMS. Në rastin e MS SQL, ky do të jetë nivele të përsëritura të leximit ose të serializueshëm, domethënë, izolimi i të dhënave është afër maksimumit. Kjo zgjidh problemet me korrektësinë e të dhënave, por mund të çojë në bllokim në nivelin DBMS gjatë punës intensive të përdoruesit. Prandaj, 1C: Enterprise ka funksionalitetin e vet për të punuar me bravë, i cili aktivizohet duke aktivizuar modalitetin e bllokimeve të menaxhuara. Në këtë rast, niveli i izolimit të transaksionit për MS SQL do të angazhohet në Read. Vetë platforma do të izolojë të dhënat pa u mbështetur në DBMS.

Modaliteti i menaxhuar i kyçjes është i aktivizuar në vetitë e konfigurimit:

Gjithashtu, mënyra e mbylljes mund të vendoset për objekte specifike të konfigurimit:

Nëse konfigurimi në tërësi vendoset në modalitetin e kyçjes automatike, atëherë të gjitha transaksionet për të gjithë regjistrat do të funksionojnë në modalitetin automatik, pavarësisht nga mënyra që është vendosur për objektin e konfigurimit. Nëse Menaxhohet, atëherë në mënyrë të ngjashme, të gjitha transaksionet do të jenë në Menaxhuar. Nëse modaliteti i konfigurimit është vendosur në Automatik dhe i kontrolluar, atëherë modaliteti për çdo objekt do të përcaktohet nga cilësimet e tij.

Ekziston një pikë për modalitetin automatik dhe të kontrolluar. Një transaksion i vetëm për një përdorues mund të përfaqësojë disa transaksione nga këndvështrimi i platformës. Për shembull, postimi në mënyrë interaktive i një dokumenti në një regjistër bën dy transaksionet - një regjistrim i vetë dokumentit, dhe brenda këtij transaksioni një regjistrim i një grupi rreshtash sipas regjistrit. Në varësi të mënyrës së menaxhimit të bllokimit për vetë dokumentin dhe regjistrit që ai lëviz, katër situata janë të mundshme:

  1. Modaliteti i dokumentit Automatik, modaliteti i regjistrimit Automatik ->
  2. Modaliteti i dokumentit i menaxhuar, modaliteti i regjistrimit i menaxhuar -> regjistrimi sipas regjistrimit në modalitetin e menaxhuar
  3. Modaliteti i dokumentit Automatik, modaliteti i regjistrimit i kontrolluar -> regjistrimi me regjistrim në modalitetin automatik
  4. Modaliteti i dokumentit i menaxhuar, modaliteti i regjistrimit Automatik -> përjashtim (gabim)

Pyetja 06.59 e provimit 1C: Platforma Professional. Kur postoni një dokument përmes ndonjë regjistri, nëse dokumenti ka një modalitet të menaxhimit të bllokimit automatik të transaksioneve dhe regjistri ka një modalitet të menaxhuar (opsioni "Automatik dhe i menaxhuar" përdoret në vetitë e konfigurimit), atëherë një postim i tillë do të çojë në:

Përgjigja e saktë është e dyta, e përcaktojmë me transaksionin e parë, nëse është automatike, atëherë gjithçka është automatike.

Pyetja 06.60 e provimit 1C: Platforma Professional. Kur postoni një dokument përmes ndonjë regjistri, nëse dokumenti ka një mënyrë të menaxhuar për menaxhimin e bllokimeve të transaksioneve dhe regjistri ka një automatik (në vetitë e konfigurimit përdoret opsioni "Automatik dhe i menaxhuar"), atëherë një postim i tillë do të çojë në:

  1. në një situatë gabimi
  2. i gjithë transaksioni do të kryhet automatikisht
  3. i gjithë transaksioni do të kryhet në mënyrë të kontrolluar

Përgjigja e saktë është e para, ne e përcaktojmë me transaksionin e parë, nëse kontrollohet, atëherë është një gabim.

Pyetja 06.61 e provimit 1C: Platforma profesionale. Kur postoni një dokument përmes ndonjë regjistri, nëse dokumenti ka një modalitet automatik për menaxhimin e bllokimeve të transaksioneve dhe regjistri ka një modalitet të menaxhuar (opsioni "Menaxhuar" përdoret në vetitë e konfigurimit), atëherë një postim i tillë do të çojë në:

  1. në një situatë gabimi
  2. i gjithë transaksioni do të kryhet automatikisht
  3. i gjithë transaksioni do të kryhet në mënyrë të kontrolluar


 

Mund të jetë e dobishme të lexoni: