Správa transakčných zámkov. Nastavenie konfigurácie na spravované zámky Automatické blokovanie nie je v transakcii povolené

Hlavné dôvody prechodu na spravované zámky sú:

  • Hlavným dôvodom je odporúčanie 1C: Expert na základe indikácií alebo 1C: MCC
  • Problémy so súčasnou prácou používateľov ()
  • Používanie Oracle, PostgreSQL a.

Náklady na prácu:

Podstata riadených zámkov

Pri práci v automatickom režime blokovania riadenia 1C: Enterprise vytvára vysoký stupeň izolácie údajov v transakcii na úrovni DBMS. Takto môžete úplne vylúčiť možnosť prijímania nekonzistentných alebo nesprávnych údajov bez osobitného úsilia vývojárov aplikácií.

Je to pohodlné a správny prístup o malé množstvo aktívnych používateľov. Cena ľahkého vývoja je určité množstvo nadbytočných zámkov na úrovni DBMS. Tieto zámky súvisia jednak so zvláštnosťami implementácie uzamykacích mechanizmov v samotnom DBMS, jednak so skutočnosťou, že DBMS nemôže brať do úvahy (a nezohľadňuje) fyzický význam a štruktúru objektov metadát 1C: Enterprise.

Pri práci s vysokými nárokmi na zdroje (veľký počet používateľov) sa v určitom okamihu prejaví efekt redundancie zámkov z hľadiska výkonu v paralelnom režime.

Po prepnutí konfigurácie do riadeného režimu sa platforma aktivuje ďalšia funkčnosť„Správca zámku“ a kontrola integrity údajov sa teraz nevykonávajú na strane systému DBMS, ale na strane servera 1C. To zvyšuje zaťaženie hardvéru servera 1C (sú potrebné rýchlejšie procesory a viac pamäte) a v skutočnosti predstavuje aj mierne spomalenie (o pár percent), avšak podstatne významnejšie zlepšuje situáciu so zámkami (menej zámkov kvôli zámkom na objekt, a nie na kombinácii tabuliek, menšej blokujúcej oblasti a v niektorých prípadoch je životnosť zámkov na čítanie kratšia, t. j. až do konca transakcie). Tým sa zlepšuje celková paralelnosť.


Nové konfigurácie spoločnosti 1C sú implementované okamžite v riadenom režime.

  • Otázka: Je možné najskôr vykonať audit a potom prejsť na UB?

Odpoveď: Je možné, že audit bude slúžiť ako ďalšie odôvodnenie vhodnosti prechodu na spravované zámky, ako aj na posúdenie príspevku automatických zámkov k celkovému spomaleniu a toho, či je potrebné okrem prevodu vyvinúť ďalšie úsilie.

  • Otázka: Aký typ prístupu potrebujete na prenos na UB - RDP, TeamViewer? Alebo vám môžem poslať konfiguračný súbor?

Odpoveď: Snažíme sa neobmedzovať jednu konkrétnu technológiu vzdialený prístup, pasuje akákoľvek technológia vzdialeného prístupu... Ak vám na tom nezáleží, potom je RDP praktickejší.
Môžeme vykonať optimalizáciu na odoslanom konfiguračnom súbore, ale potom nebudeme schopní odladiť niektoré skutočné údaje a budete musieť testovať opatrnejšie. Ak vykonáme optimalizáciu na kópii databázy, potom ju môžeme dôkladne otestovať, až potom vám pošleme výsledok práce.

  • Otázka: Máme 10 programátorov na plný úväzok, ktorí každý deň niečo menia v konfigurácii. Používa sa zdieľané úložisko konfigurácie. “ Ako bude organizovaná interakcia pri prevode na UB? Alebo by mali všetci programátori ísť na dovolenku?

Odpoveď: Naše zmeny sa spravidla vykonajú v priebehu niekoľkých dní. Zvyšok času sa venuje testovaniu vykonaných zmien, a to aj z hľadiska požadovanej logiky stanovenej podnikom, a nie technickými úvahami. my môžeme vykonať zmeny samostatný súbor konfigurácia porov a potom ho tvoj programátor pridá do úložiska. Na dovolenku nemusíte nikoho posielať... V ďalších možnostiach interakcie sa musíte len dohodnúť, ktoré objekty plánujú vaši vývojári zabaviť, aby sme vytvorili pracovný plán vhodný pre obe strany. Vaši vývojári spravidla nemusia zachytávať celú konfiguráciu alebo nám dávať „koleso“ na jeden deň.

Mechanizmus transakčné zámky slúži na súbežný prístup používateľov do DBMS.
Transakcia je druh nerozlučnej operácie, počas ktorej sa mení stav základne. Toto je minimálne množstvo zmien: nemôžete vykonať polovičnú transakciu; ak transakcia nie je dokončená, databáza sa vráti späť do pôvodného stavu.
Pretože transakcia zachytáva pole údajov, je pri prístupe k tomuto poli nuansa: napríklad jedna transakcia zmení údaje, zatiaľ čo iná sa ich pokúsi prečítať. Výsledok čítania môže byť nesprávny, pretože sa nezapne posledné zmeny... Preto izolácia transakcií funguje na úrovni DBMS. Možné sú nasledujúce úrovne izolácie:

  • Čítať nezáväzne- zatiaľ čo jedna transakcia zmení pole, iná ho nemôže zmeniť, ale môže čítať. Najnižšia úroveň izolácie.
  • Čítanie potvrdené- zatiaľ čo jedna transakcia mení pole, druhá ho nemôže meniť ani čítať
  • Opakovateľné čítanie- zatiaľ čo jedna transakcia číta pole, iná ho nemôže zmeniť, ale môže čítať
  • Serialaizable- zatiaľ čo jedna transakcia číta pole, druhá ho nemôže meniť ani čítať. Všetky operácie sú postupné. Maximálna úroveň izolácie.

Ak je nastavená konfigurácia 1C: Enterprise režim automatického blokovania, potom DBMS vyberie úroveň izolácie transakcie. V prípade MS SQL to bude úroveň Repeatable read alebo Serializable, to znamená, že izolácia dát sa blíži k maximu. Týmto sa vyriešia problémy so správnosťou údajov, ale pri intenzívnej práci používateľa to môže viesť k výskytu zámkov na úrovni DBMS. Preto má 1C: Enterprise svoju vlastnú funkcionalitu pre prácu so zámkami, ktorá sa aktivuje povolením režimu spravovaných zámkov. V takom prípade bude úroveň izolácie transakcií MS SQL prečítaná. Samotná platforma izoluje údaje bez toho, aby sa spoliehala na DBMS.

Povolenie režimu spravovaného blokovania sa vyskytuje vo vlastnostiach konfigurácie:

Režim blokovania je možné nastaviť aj pre konkrétne konfiguračné objekty:

Ak je nastavená konfigurácia ako celok Automatický režim zámky, potom všetky transakcie vo všetkých registroch budú fungovať v automatickom režime bez ohľadu na režim, ktorý je nastavený pre konfiguračný objekt. Ak sa spravuje - podobne sa budú spravovať všetky transakcie. Ak je konfigurácia nastavená na Automatickú a Riadenú, potom bude režim pre každý objekt určený podľa jej nastavení.

Pre automatické a riadené režimy má jeden bod. Jedna transakcia pre používateľa môže predstavovať niekoľko transakcií z pohľadu platformy. Napríklad interaktívna navigácia v dokumente naprieč značkami registra dva transakcie sú záznamom samotného dokumentu a v rámci tejto transakcie je záznamom množiny riadkov podľa registra. V závislosti od režimu ovládania zámkov pre samotný dokument a ním presunutý register sú možné štyri situácie:

  1. Režim dokumentu Automatický, režim registra Automatický ->
  2. Režim dokumentu Spravovaný, režim registra Spravovaný -> zápis v registri v riadenom režime
  3. Režim dokumentu Automatický, režim registra Sprievodca -> zapisovanie do registra v automatickom režime
  4. Režim dokumentu Spravovaný, režim registrácie Automaticky -> výnimka (chyba)

Otázka 06.59 skúšky 1C: Profesionál na platforme. Ak má dokument pri účtovaní dokumentu do ľubovoľného registra automatický režim správy transakčných zámkov a registr má kontrolovaný režim (vo vlastnostiach konfigurácie sa používa možnosť „Automatický a spravovaný“), výsledkom takéhoto konania bude:

Správna odpoveď je druhá, určíme podľa prvej transakcie, ak je automatická, tak je všetko automatické.

Otázka 06.60 skúšky 1C: Profesionál podľa platforiem. Ak má dokument pri zaúčtovaní dokumentu do ľubovoľného registra riadený režim správy transakčných zámkov a register má automatický režim (vo vlastnostiach konfigurácie sa používa možnosť „Automatický a riadený“), výsledkom takéhoto zaúčtovania bude:

  1. na chybovú situáciu
  2. celá transakcia sa uskutoční automaticky
  3. celá transakcia sa uskutoční kontrolovaným spôsobom

Prvá správna odpoveď je určená prvou transakciou, ak je kontrolovaná, potom chybou.

Otázka 06.61 skúšky 1C: Profesionál na platforme. Ak má dokument pri zaúčtovaní dokumentu do ľubovoľného registra automatický režim správy transakčných zámkov a má riadený register (vo vlastnostiach konfigurácie sa používa možnosť „Kontrolované“), bude mať takéto správanie za následok:

  1. na chybovú situáciu
  2. celá transakcia sa uskutoční automaticky
  3. celá transakcia sa uskutoční kontrolovaným spôsobom

Mechanizmus správy dátového zámku v transakcii umožňuje blokovanie premenlivých údajov nie pomocou použitého systému správy databázy, ale prostredníctvom platformy. Takáto správa zámku dát sa nevykonáva z hľadiska údajov DBMS, ale z hľadiska domény. To umožňuje zámky aplikovať „presnejšie“ a zvyšuje sa súbežnosť používateľov.

Konfigurácia 1C: Enterprise 8 môže pracovať v jednom z troch režimov správy zámkov v transakcii:

  • auto;
  • Managed - štandardný režim pre nové konfigurácie;
  • automatické a riadené.

IN automatický režim správa dátových zámkov využíva opakovateľné úrovne čítania a serializovateľné úrovne izolácie transakcií poskytované systémom správy databáz. Tieto úrovne izolácie transakcií poskytujú konzistentné a konzistentné čítanie údajov a od vývojára nie sú potrebné žiadne ďalšie kroky na správu zámkov.

Riadený režim umožňuje zvýšiť paralelnosť používateľov v režime práce klient-server v dôsledku použitia nižšej úrovne izolácie databázových transakcií (Read Committed). Pri zápise údajov do transakcie vložené jazykové objekty automaticky uzamknú požadované údaje. Ak obchodná logika vyžaduje dôsledné a konzistentné čítanie údajov v transakcii, musí vývojár spravovať zámky údajov.

Automatické a riadené režim umožňuje využívať schopnosť spravovať zámky v transakcii iba pre niektoré konfiguračné objekty. Tento režim možno použiť na optimalizáciu súbežnosti používateľov s jednotlivými objektmi aplikácie (napríklad s niekoľkými najpoužívanejšími dokumentmi) alebo na postupný prenos veľkých konfigurácií do režimu správy transakčných zámkov.

V súhrnnej podobe sú rozdiely medzi automatickými blokovaniami a kontrolovanými blokovaniami zobrazené v nasledujúcej tabuľke:

Najčastejšie je potrebné spravovať zámky údajov v transakcii v procese účtovania dokumentov, keď potrebujete prečítať a potom zapísať zmenené údaje do rovnakých tabuliek. Napríklad ak je zostatok skontrolovaný počas zaúčtovania dokladu.

Najmä na tento účel majú súbory záznamov akumulačných registrov a účtovných registrov vlastníctvo BlockForChange.

Ak potrebujete kontrolovať zostatky a potom zaznamenávať pohyby do toho istého registra, potom musí byť táto vlastnosť nastavená pre množinu záznamov tohto registra v nehnuteľnosti Pohyb.

Účinok tejto vlastnosti je rovnaký, ako keby vývojár nezávisle nainštaloval (napísal do kódu) potrebné spravované zámky 1C: Enterprise 8. Platforma automaticky nastaví potrebné spravované zámky pri zápise tejto sady záznamov. Výsledkom je, že ďalšie spravované transakcie používajúce podobný zámok nebudú môcť začať čítať tento register, kým sa aktuálna transakcia neskončí.

Ďalej je uvedený príklad „manuálneho“ ovládania dátových zámkov pri načítaní údajov akumulačného registra. Nomenklatúra účtovníctva pri spracovaní účtovania dokladov Faktúra... V tomto príklade sa spravované zámky vytvárajú a nastavujú úplne pomocou zabudovaného jazyka.

Systém 1C: Enterprise umožňuje používať dva režimy práce s databázou: režim automatických zámkov v transakcii a režim kontrolovaných zámkov v transakcii.

Zásadný rozdiel medzi týmito režimami je nasledovný. Režim automatického zamykania nevyžaduje, aby vývojár podnikal akékoľvek kroky na správu zámkov v transakcii, aby tak mohol urobiť. Tieto pravidlá poskytuje platforma 1C: Enterprise prostredníctvom použitia určitých úrovní izolácie transakcií v konkrétnom DBMS. Tento režim činnosti je pre vývojárov najjednoduchší, ale v niektorých prípadoch (napríklad pri intenzívnej súčasnej práci) Vysoké číslo používatelia), použitá úroveň izolácie transakcií v DBMS nemôže poskytnúť dostatočnú paralelnosť, ktorá sa prejavuje vo forme veľkého množstva konfliktov zámkov, keď používatelia pracujú.

Pri prevádzke v režime riadených zámkov systém 1C: Enterprise spotrebuje oveľa viac nízky level izolácia transakcií v DBMS, čo môže výrazne zvýšiť paralelnosť používateľov aplikovaného riešenia. Na rozdiel od režimu automatického blokovania však tejto úrovni izolácia transakcií už nemôže sama vynucovať všetky pravidlá pre prácu s údajmi v transakcii. Preto je vývojár pri práci v riadenom režime povinný samostatne spravovať zámky nastavené v transakcii.

V súhrnnej podobe sú rozdiely medzi automatickými blokovaniami a kontrolovanými blokovaniami zobrazené v nasledujúcej tabuľke:

Nastavenie režimu blokovania v konfigurácii

Konfigurácia má vlastnosť Data Lock Control Mode. Každý objekt konfigurácie aplikácie má tiež vlastnosť Data Control Control Mode.
Režim ovládania dátového zámku pre celú konfiguráciu je možné nastaviť na Automatický, Spravovaný (predvolený pre novú konfiguráciu) a Automatický a Spravovaný. Automatické a riadené hodnoty znamenajú, že pre všetky konfiguračné objekty sa použije zodpovedajúci režim blokovania bez ohľadu na hodnoty nastavené pre každý z objektov. Automatická a riadená hodnota znamená, že pre konkrétny konfiguračný objekt sa použije režim zadaný v jeho vlastnosti režimu ovládania dátového zámku: Automatický alebo Riadený.
Je potrebné poznamenať, že režim riadenia uzamknutia údajov určený pre objekt metadát je nastavený pre tie transakcie, ktoré sú iniciované systémom 1C: Enterprise pri práci s údajmi tohto objektu (napríklad pri úprave údajov objektu).
Ak sa napríklad operácia zápisu objektu vykonáva v transakcii iniciovanej vývojárom (metóda StartTransaction ()), potom bude riadiaci režim uzamknutia údajov určený hodnotou parametra Uzamknutý režim
metóda StartTransaction (), nie hodnota vlastnosti objektu metadát Data Control Mode Control.
Predvolene je režim uzamknutia nastavený na režim správy DataLock. Automatický, takže
ak chcete použiť režim uzamknutia v explicitnej transakcii, musíte určiť hodnotu tohto parametra
Režim správy DataLock.

Práca so spravovanými zámkami pomocou zabudovaného jazyka

Na správu zámkov v transakcii sa používa objekt vstavaného jazyka DataLock. Tento objekt je možné vytvoriť inštanciu pomocou konštruktora a umožňuje vám opísať požadované medzery a režimy uzamknutia. Ak chcete nastaviť všetky vytvorené zámky, použite metódu Lock () objektu DataLock. Ak je táto metóda vykonaná v transakcii (explicitnej alebo implicitnej), zámky sa získajú a na konci transakcie sa automaticky uvoľnia. Ak sa metóda Lock () vykoná mimo transakcie, nezískajú sa žiadne zámky.

Podmienky sú stanovené na rovnosť hodnoty poľa so zadanou hodnotou alebo na výskyt hodnoty poľa v určenom rozsahu.
Podmienky je možné nastaviť dvoma spôsobmi:

  • výslovným uvedením názvu a hodnoty poľa (metóda SetValue () objektu DataLockElement);
  • zadaním zdroja údajov, ktorý obsahuje požadované hodnoty (vlastnosť DataSource objektu DataLockElement).

Pre každý blokujúci prvok je možné nastaviť jeden z dvoch režimov blokovania:

  • zdieľané,
  • výnimočné.

Tabuľka kompatibility spravovaného zámku vyzerá takto

Režim zdieľaného zamykania znamená, že zamknuté údaje nie je možné zmeniť ďalšou transakciou až do konca aktuálnej transakcie.
Exkluzívny režim uzamknutia znamená, že uzamknuté údaje nie je možné zmeniť ďalšou transakciou až do konca aktuálnej transakcie, ani ich nemožno načítať inou transakciou, ktorá získa zdieľaný zámok týchto údajov.

Vlastnosti práce v režime „Automatický a riadený“

Pri prevádzke v režime automatického a riadeného blokovania je potrebné brať do úvahy dva body:

Bez ohľadu na režim zadaný pre danú transakciu nastaví systém príslušnú kontrolu
blokovanie.
Režim správy zámku je určený transakciou na najvyššej úrovni. Inými slovami, ak bola v čase začiatku transakcie zahájená iná transakcia, potom je možné začatú transakciu vykonať iba v režime, ktorý je nastavený pre už prebiehajúcu transakciu.

Zvážme uvedené funkcie podrobnejšie.

Prvou vlastnosťou je, že aj keď sa pre transakciu použije režim automatického riadenia zámku, systém dodatočne nastaví zodpovedajúce spravované zámky pri zápise údajov do tejto transakcie. To znamená, že transakcie vykonávané v režime spravovaného zámku môžu byť v rozpore s transakciami vykonávanými v režime automatickej správy zámku.

Druhou vlastnosťou je, že režim správy zámku určený pre objekt metadát v konfigurácii alebo určený výslovne na začiatku transakcie (ako parameter metódy StartTransaction ()) je iba „požadovaným“ režimom. Skutočný režim správy zámku, v ktorom sa transakcia uskutoční, závisí od toho, či je toto volanie na začatie transakcie prvé, alebo už v tejto relácii systému 1C: Enterprise začala iná transakcia.

Napríklad, ak chcete spravovať zámky pri zápise súborov registrových registrov, pri odosielaní dokumentu je potrebné nastaviť režim riadeného zamykania pre samotný register aj pre dokument, pretože zapisovanie súborov registrových záznamov sa bude vykonávať v transakcia otvorená pri písaní dokumentu.