Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 27|Odpoveď: 0

[Tipy] Optimalizácia WITH (NOLOCK) pre EF Core dotazy s vysokou súbežnosťou

[Kopírovať odkaz]
ZverejnenéVčera o 20:48 | | |
Požiadavky: Niektoré údaje umožňujú nekvalitné čítanie, ako je obsah článkov, počet zobrazení stránok, komentáre a podobne, čo nie je také prísne ako finančné údaje. Na zlepšenie výkonu dotazov je možné použiť transakcie ReadUncommed, ale SqlTransaction a TransactionScope majú chyby na úrovni izolácie úniku, ktoré zatiaľ neboli opravené, preto zvážte použitie riešenia WITH (NOLOCK).

Revízia:
Optimalizácia dotazov v rámci entít pomocou (NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C# používa SqlScriptDOM na parsovanie a vykonávanie SQL príkazov
https://www.itsvse.com/thread-11222-1-1.html

Úrovne izolácie úniku v SqlTransaction a TransactionScope (táto chyba existuje už 8 rokov a stále nebola opravená!) Odhadujem, že mnohých ľudí to môže ovplyvniť, ale možno si to neuvedomujú):Prihlásenie na hypertextový odkaz je viditeľné.

Tento článok potrebuje odkazovať na SqlScriptDOM na spracovanie SQL príkazov a pridanie WITH(NOLOCK). Pozrite si open-source projekt:Prihlásenie na hypertextový odkaz je viditeľné.

Nuget cituje nasledovne:
Vytvorte novú AllowDirtyReadAttribute.cs funkciu, naprogramujte nasledovne:
Vytvorte nový WithNoLockInterceptor na prepísanie určitých metód v DbCommandInterceptor. Kód je nasledovný:
Injektujte do EF Core s nasledujúcou konfiguráciou:
Použite to na pridanie nad metódu ovládača[DovoliťŠpinavéČítanie]Môcť.

Raw SQL príkaz:
SELECT [o]. [Id],
         [o]. [CustomerName],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Produkt]
OD [Príkazy] AS [o]
             ĽAVÝ VONKAJŠÍ SPOJ
         [OrderLines] AS [o0]
         ON [o]. [Id] = [o0]. [OrderId]
KDE [o]. [Id] = 1
PORADIE PODĽA [o]. [Id];

Príkaz generovaný po pridaní NOLOCK:
SELECT [o]. [Id],
         [o]. [CustomerName],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Produkt]
OD [Rozkazy] AKO [o] S (NOLOCK)
         ĽAVÝ VONKAJŠÍ SPOJ
         [OrderLines] AKO [o0] S (NOLOCK)
         ON [o]. [Id] = [o0]. [OrderId]
KDE [o]. [Id] = 1
PORADIE PODĽA [o]. [Id];




Predchádzajúci:(MSSQL) SQL Server plnotextové vyhľadávanie, index plného textu
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com