Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 10821|Válasz: 0

[Forrás] sql SELECT

[Linket másol]
Közzétéve 2016. 01. 08. 17:58:31 | | |

Régen láttam, hogy a tapasztalt fejlesztőim az SQL Serverben lekérdezéskor a WITH-t (NOLOCK) használják, és azon tűnődtem, miért használják őket. Most utánanéztem, és rájöttem, hogy hasznos a lekérdezés teljesítésének javítására. Azonban van hátránya a használatának. Hátránya, hogy az ember nem biztos benne, hogy megkapja azokat az adatokat, amelyeket jelenleg frissítenek a táblázatban, azaz zárvédelem nélkül nem lehet garantálni, hogy az adatok nem vannak változik a lekérdezés futása alatt. Erre a linkre hivatkoztam, és elég hasznosnak találtam.

Az SQL lekérdezések teljesítményének javítása érdekében általánosságban az első szempont egy index létrehozása. Valójában az indexek létrehozásán túl, amikor SQL parancsokat helyezünk el, egy WITH (NOLOCK) szakasz hozzáadása a szintaxishoz javíthatja azt a jelenséget, hogy az adathalmazok LOCK-olnak egy olyan környezetben, ahol sok online lekérdezés van, így javítva a lekérdezések teljesítményét.

Azonban egy dolog, amit érdemes megjegyezni, hogy az SQL SELECT (NOLOCK)-val piszkos olvasást okozhat.

Például:




Mert az SQL Server végzi a megfelelő zárolási konzisztenciás ellenőrzést. Az adatbázis lekérdezési teljesítményének javítása érdekében add hozzá a WITH (NOLOCK) jelzőt a tábla nevének végéhez a SELECT szintaxisban, bár a (NOLOCK) is elfogadható, de a Microsoft továbbra is javasolja a WITH hozzáadást.

Az egyszerű SELECT mellett használhatod a SELECT szintaxist is a JOIN segítségével. De a DELETE, INSERT, UPDATE és más tranzakciókat igénylő parancsok nem jó...

Néhány fájl szerint az SQL lekérdezések hatékonysága 33%-kal növelhető WITH (NOLOCK) segítségével.
A WITH (NOLOCK) hozzáadása azt jelzi, hogy a SELECT parancsnak nem kell figyelembe vennie a jelenlegi tábla tranzakciós zárolásának állapotát, így a teljesítmény jelentősen javul, és az adatbázis rendszer zárolási jelensége jelentősen csökken (beleértve a holtzárat is).

Egy fontos megjegyzés, hogy mivel az WITH (NOLOCK) nem veszi figyelembe az aktuális tábla tranzakciós zárolását, így amikor több fázisban is van adat (például több táblán átívelő tranzakció – > például egy kivonási rendszer), akkor a WITH (NOLOCK) figyelmen kívül hagyja azokat az adatokat, amelyek éppen a tranzakciós folyamatot dolgozzák...

Őszintén szólva, a NoLock használata esetén lehetővé teszi az adatok olvasását, amelyeket módosítottak, de a tranzakció még nem fejeződött be. Ezért, ha figyelembe kell venned a tranzakciós adatok valós idejű integritását, alaposan gondold át a WITH (NOLOCK) használatát.

Ha nem kell tranzakciókat fontolóra venni, a WITH (NOLOCK) hasznos hivatkozás lehet.

1. megjegyzés: WITH ( < table_hint > )
Megadja a táblázat vizsgálatát, egy vagy több indexet, amelyet a lekérdezésoptimalizáló használ,
Vagy a lekérdezésoptimalizáló segítségével ezt az adattáblát használhatod és a lock módot használhatod ehhez az utasításhoz.

2. megjegyzés: WITH (NOLOCK) egyenértékű a OLVASÁS ELKÖTELEZETÉVEL

Végül beszéljünk néhány apró különbségről a nolock és a with(nolock) között:
1: Az SQL05-ben csak (nolock) szinonimák támogatott;
2: with (nolock) nagyon könnyen megírható, majd megadja az indexet.
Amikor szerverek közötti utasításokat kérdezünk, nem használhatod a (nolockot), csak a nolockot
Ha ugyanazon a szerveren lekérdezést végeznek, mind (nolock), mind nolock használható
Mint mit
SQL kód
select * from [IP].a.dbo.table1 with (nolock). Ez a hibát küldi a * from a.dbo.table1 with (nolock). Ez működni fog




Előző:C# elrejti az azonosítószám középső számjegyét
Következő:JQUERY betölti JS-t az Ajax-szal
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com