Nie próbowałem wcześniej używać transakcji MySQL, chcę tylko coś wyjaśnić. Jeśli dwóch użytkowników wykona zapytanie dokładnie w tym samym czasie, jak MySQL sobie z tym poradzi? np. użytkownicy próbują zaktualizować rekord. użytkownik1: zaktualizuj zestaw tabel kolumna = kolumna - 4 gdzie identyfikator_kolumny = 1; użytkownik2: zaktualizuj zestaw tabel kolumna = …
Plan wykonania zapytania domyślnie nie pokazuje szczegółów blokowania, czy możliwe jest przeglądanie blokad wraz z typem uzyskanym podczas wykonywania zapytania?
Późno spotykałem się z wieloma kłótniami dotyczącymi blokowania wierszy. Tabela rywalizacji wydaje się być konkretną tabelą. Tak się zwykle dzieje - Deweloper 1 rozpoczyna transakcję z ekranu interfejsu Oracle Forms Deweloper 2 rozpoczyna kolejną transakcję z innej sesji przy użyciu tego samego ekranu Po około 5 minutach interfejs wydaje się …
Próbuję zrozumieć, jak najlepiej zinterpretować czas blokowania dla zapytań wyświetlanych w naszym dzienniku wolnych zapytań MySQL. Na przykład, jeśli zapytanie UPDATE ma 10 sekundowy czas blokady. Zakładam, że jest to całkowity czas po uzyskaniu blokady przez zapytanie o aktualizację. Nawet jeśli czeka na zakończenie poprzednich zapytań o wybranie, ale nie …
Mam tabelę, która będzie zawierać około 15 milionów rekordów. Teraz muszę dodać indeks do tabeli. Dodanie indeksu zajmie trochę czasu, aby zaktualizować każdy wpis w tabeli. Jestem dość zdezorientowany, czy dodanie indeksu spowoduje przestoje. Jeśli tak, to jak mogę przezwyciężyć przestoje?
Mam do czynienia z kilkoma powtarzającymi się zakleszczeniami, z których jeden to Keylock i zawiera zapytanie SELECT z podpowiedź XLOCK, która staje się ofiarą impasu. Drugą instrukcją jest INSERT w jednej z tabel, która jest częścią widoku pierwszego zapytania. Widok: create view dbo.viewE as select * from dbo.E where myValue …
Mam dwa stoliki. Jednym z nich jest tabela dziennika; inny zawiera zasadniczo kody kuponów, których można użyć tylko raz. Użytkownik musi mieć możliwość zrealizowania kuponu, który wstawi wiersz do tabeli dziennika i oznaczy kupon jako wykorzystany (aktualizując usedkolumnę do true). Oczywiście jest tutaj oczywisty problem z wyścigiem / kwestią bezpieczeństwa. …
Niedawno przeprowadziliśmy migrację naszych instancji produkcyjnych z SQL 2008 R2 na zupełnie nowe serwery SQL 2014. Oto ciekawy scenariusz, który odkryliśmy podczas korzystania z Service Broker. Rozważ bazę danych za Broker Enabled = truepomocą MyServicei MyQueue. Obsługa komunikatów o zatruciach jest wyłączona w tej kolejce. Są co najmniej 2 aktywne …
Przedmowa Nasza aplikacja uruchamia kilka wątków, które wykonują DELETEzapytania równolegle. Zapytania wpływają na izolowane dane, tzn. Nie powinno być możliwości, aby współbieżne DELETEwystąpiły w tych samych wierszach z oddzielnych wątków. Jednak w dokumentacji MySQL używa tak zwanej blokady następnego klucza dla DELETEinstrukcji, która blokuje zarówno pasujący klucz, jak i pewną …
Z SQLite FAQ wiem, że: Wiele procesów może mieć tę samą bazę danych otwartą w tym samym czasie. SELECTJednocześnie może być wykonywanych wiele procesów . Jednak tylko jeden proces może wprowadzać zmiany w bazie danych w dowolnym momencie. Tak więc, o ile rozumiem, mogę: 1) Czytaj db z wielu wątków …
Znaleziona tutaj lista poziomów izolacji w SQL Server stwierdza , że blokady zapisu nabyte w ramach transakcji są zachowywane do końca transakcji. Jednak nie wspomina nic o tym, kiedy te zamki są nabywane. Czy blokady są domyślnie nabywane na początku transakcji, czy tylko wtedy, gdy są potrzebne? Jeśli to ostatnie …
Muszę zachować unikalny (w wierszu) numer rewizji w tabeli rewizji dokumentu, gdzie numer rewizji jest zawarty w dokumencie, więc nie jest unikalny dla całej tabeli, tylko dla powiązanego dokumentu. Początkowo wymyśliłem coś takiego: current_rev = SELECT MAX(rev) FROM document_revisions WHERE document_id = 123; INSERT INTO document_revisions(rev) VALUES(current_rev + 1); Ale …
Kiedy rekord jest zablokowany, czy możemy wiedzieć, który jest zablokowany? Jak mogę uzyskać rekord rowid lub coś innego? Mogę uzyskać informacje o tym sql SELECT c.ROW_WAIT_OBJ#,c.ROW_WAIT_FILE#,c.ROW_WAIT_BLOCK#,c.ROW_WAIT_ROW# FROM v$locked_object a, dba_objects b, v$session c WHERE a.object_id = b.object_id AND a.SESSION_ID = c.sid(+) Znalazłem metodę w sieci, aby uzyskać Rowid za pomocą …
Musimy upewnić się, że tylko jedna kopia konkretnej procedury działa w Oracle. Jeśli jest już uruchomiony, a użytkownik próbuje otworzyć inny, oznacza to błąd. Jaka jest najlepsza metoda tego?
Napotkaliśmy problem po przeniesieniu bazy danych naszego klienta na dodatkowy serwer. Powinno to mieć pozytywny wpływ na wydajność witryny, ale występuje problem z blokowaniem tabel w MyISAM. (Słyszałem o używaniu InnoDB zamiast MyISAM, ale nie możemy zmienić silnika w najbliższej przyszłości). Możemy wykryć to w zapytaniu o aktualizację, które jest …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.