• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Mysql-Transakcje

Object Storage Arubacloud
0 głosów
327 wizyt
pytanie zadane 26 czerwca 2021 w SQL, bazy danych przez JakSky Stary wyjadacz (14,770 p.)
W jaki sposób mogę sprawdzić czy dwa zapytania do bazy były owinięte w jedną transakcję?
komentarz 26 czerwca 2021 przez adrian17 Ekspert (344,860 p.)

Ten komunikat nie mówi że nie wspierają transakcji w ogóle, tylko ambient transactions. Spróbuj dla porównania użyć "zwykłe" BeginTransaction().

(Komentarze na linku SO też brzmią rozsądnie.)

komentarz 26 czerwca 2021 przez Wiciorny Ekspert (269,710 p.)

@adrian17, domyślnie nigdy ORM nie spowoduje że jedna transakcja wykona 2 zapytania-> wystarczy siegnąc do definicji transakcji która jest 

ACID - Izolacja transakcji oznacza, że jeśli dwie transakcje wykonują się współbieżnie, to zwykle (w zależności od poziomu izolacji) nie widzą wprowadzanych przez siebie zmian.

-> ale 

  1. read uncommitted – jedna transakcja może odczytywać wiersze, na których działają inne transakcje (najniższy poziom izolacji)
  2. read committed – transakcja może odczytywać tylko wiersze zapisane
  3. repeatable read – transakcja nie może czytać ani zapisywać na wierszach odczytywanych lub zapisywanych w innej transakcji
  4. serializable (szeregowalne) – wyniki współbieżnie realizowanych zapytań muszą być identyczne z wynikami tych samych zapytań realizowanych szeregowo (pełna izolacja).

więc jeśli 1 transakcja coś zapisuje, druga nie może jednocześnie wiedzieć o zapisie tego samego zasobu, może jedynie działać na tym samym zasobie robić odczyt, ale nie jednocześnie zapis, ergo  wyższe poziomy izolacji tylko to ograniczają

komentarz 26 czerwca 2021 przez adrian17 Ekspert (344,860 p.)
...zupełnie nie rozumiem skąd Twoja uwaga się wzięła. Wiem o izolacji transakcji, ale jaki to ma związek z tym czy na poziomie ORMa dwa zapytania są w jednej transakcji czy jednej po drugiej?
komentarz 27 czerwca 2021 przez Wiciorny Ekspert (269,710 p.)
a no taki, że np z poziomu orm możesz określić np. aspektowo, albo trigerem - tutaj bardziej nie od orm ale bazy, chyba zeby logerem implementować trigery aspektowo w frameworku.
2 transakcje, sprawa prosta, każda jest zdarzeniem, wtedy po wystąpieniu jednej można logi zrobić [ to samo z prowiderem bazy ] nie wiem jaki tu jest do mapowania, tzn jakiego kolega używa, ale logi na pewno są ;] i to jest do wykrycia.
Więc wtedy odpowiednio nadać hash/klucz/ jakiś identyfikator wiodący na transakcje, żeby określić czy nastąpiło to w różnych czy w jednej.
W sytuacji wystąpienia w jednej można nadać flush - > po każdej transakcji na bazie z podbiciem wersji i wymusić sprawdzenie w trakcie - bardzo nie praktyczne ale można, ewentulanie zrobić  flush i kolejne aspekty na dane zdarzenia, nie umiem doradzić nie wiedziąc nic praktycznie o implementacji i użytych bibliotekach itp

TO samo -> co ma poziom izolacji ? No to że możesz odczytać czy dana transakcja jeśli zapytanie pobrało zasób w 1 transakcji to możesz sprawdzić inną transakcją w tym samym czasie, jaki ma status na zasobie, ergo w jednej transakcji mozesz sprawdzic po zapytaniu w jakim znajduje sie statusie
komentarz 27 czerwca 2021 przez adrian17 Ekspert (344,860 p.)
...nie mam pojęcia o czym mówisz i co to ma do czegokolwiek co ja napisałem.

Jeśli chciałeś odpowiedzieć na "W jaki sposób mogę sprawdzić czy dwa zapytania do bazy były owinięte w jedną transakcję?" to odpowiedz w... odpowiedzi, nie w komentarzu :)

Natomiast tutaj w komentarzu doszedłem, że źródłowym problemem jest zapewnić żeby dwa zapytania były w jednej transakcji w EF Core, co AFAIK można łatwo zrobić z `BeginTransaction()` - i na tym skończyłem temat z mojej strony.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 235 wizyt
pytanie zadane 14 stycznia 2018 w SQL, bazy danych przez Gucci Gaduła (4,580 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 10 czerwca 2022 w SQL, bazy danych przez exnc Nowicjusz (120 p.)
0 głosów
1 odpowiedź 442 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...