Advertisement
Guest User

Untitled

a guest
Dec 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. Wyjaśnij jak powstają deadlocki i omów politykę rozwiązania w SQL Server
  2.  
  3. Jest to sytuacja wzajemnego zakleszczenia się dwóch lub większej liczby transakcji. Jeżeli przykładowo mamy pierwszą transakcję, która blokuje dane w tabeli A i próbuje zmodyfikować dane w tabeli B oraz drugą transakcję, która blokuje dane w tabeli B i próbuje zmodyfikować dane w tabeli A to pojawia się deadlock. Obie transakcje będą czekały wzajemnie na zwolnienie blokady aby móc dokończyć swoje działanie. W takiej sytuacji proces sqla przerywa jedną z transakcji zwracając błąd (tytułowy deadlock) tak aby chociaż jedna z transakcji mogła dokończyć działanie. W praktyce SQL Server przerywa transakcję, która wymaga mniejszych zasobów do wykonania rollbacku.
  4.  
  5. W ramach jednej sesji wywołujemy transakcję:
  6. W ramach drugiej sesji wywołujemy transakcję operującą na tym samym zestawie danych co w efekcie prowadzi do zakleszczenia:
  7. Nie można o ile zależy nam na zachowaniu właściwego poziomu izolacji. Można zmniejszać ryzyko jego wystąpienia poprzez zwiększenie wydajności środowiska lub (jeżeli jest to możliwe) inną konstrukcję zapytań i samej struktury bazy danych. Całkowicie jednak tego problemu nie wyeliminujemy gdyż jest on niejako częścią logiki działania systemu bazodanowego. W praktyce aplikacje przygotowuje się do radzenia sobie z deadlockami w inny sposób – w razie jego wystąpienia transakcja, która została przerwana jest kilkukrotnie ponawiana przez aplikację. Z reguły takie postępowanie jest skuteczne o ile blokada nie jest wynikiem poważniejszego problemu.
  8.  
  9. -------
  10.  
  11. ‚IDENTITY’ w SQLServer jakie są korzyści i jakie są ograniczenia w jego użyciu. Jakich funkcji i zmiennych systemowych można użyć do przeczytania id nowo dodanego rekordu
  12.  
  13. Tworząc nowa tabele przy jej kluczu publicznym możemy zmienić wartość IDENTITY na np ( 100 , 5 ). ID zaczną nie od 100 , krok zostanie ustawiony na 5.
  14.  
  15. Aby dodać rekord do tabeli musimy użyć funkcji SET IDENTITY_INSERT następnie podajemy nazwę bazy i schematu oraz nazwę tabeli i ON, jeśli chcemy włączyć opcję lub OFF, gdy ją chcemy wyłączyć. Oprócz tego w poleceniu insert musimy wprost wymienić nazwy kolumn. Tak więc najpierw ustawiamy dla tabeli tab opcję IDENTITY_INSERT na ON.
  16.  
  17. @@IDENTITY zwraca ostatnio nadaną wartość auto-numerowaną w całej bazie danych
  18. Np. SELECT @@IDENTITY
  19. IDENT_CURRENT zwraca wartość auto-numerowaną z konkretnej tabeli
  20. Np. SELECT IDENT_CURRENT(table_name);
  21. SCOPE_IDENTITY zwraca wartość auto-numerowaną dla bieżącego kontekstu.
  22. Np. SELECT SCOPE_IDENTITY();
  23.  
  24. ---
  25.  
  26. Jakie jest możliwe ustawienie węzłów integralności w SQLServer przy usuwaniu i modyfikowaniu rekordów będących kluczem obcym ?
  27.  
  28.  
  29. Istnieją cztery reguły usuwania i modyfikowania rekordów:
  30. 1. Bez akcji 
To jest akcja domyślna.
  31. Żadna akcja nie określa, że jeśli podjęta zostanie próba usunięcia lub aktualizacji wiersza kluczem, do którego odnoszą się klucze obce w istniejących wierszach w innych tabelach, zgłaszany jest błąd i wycofywane są DELETE lub UPDATE.
  32. 2. Kaskada
Oznacza to, że jeśli podjęta zostanie próba usunięcia lub aktualizacji wiersza kluczem, do którego odnoszą się klucze obce w istniejących wierszach w innych tabelach, wszystkie wiersze zawierające te klucze obce zostaną również usunięte lub zaktualizowane.
  33. 3. Ustaw Null
Określa, że jeśli podjęta zostanie próba usunięcia lub aktualizacji wiersza kluczem, do którego odwołują się klucze obce w istniejących wierszach w innych tabelach, wszystkie wiersze zawierające te klucze obce zostaną ustawione na NULL.
  34. 4. Ustaw domyślnie
Określa, że jeśli podjęta zostanie próba usunięcia lub aktualizacji wiersza kluczem, do którego odnoszą się klucze obce w istniejących wierszach w innych tabelach, wszystkie wiersze zawierające te klucze obce zostaną ustawione na wartości domyślne.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement