W przypadku pytań dotyczących problemów pojawiających się, gdy wielu użytkowników lub procesów jednocześnie uzyskuje dostęp do udostępnianych informacji w systemie baz danych lub je modyfikuje.
Mam bazę danych Postgres, która zawiera szczegółowe informacje o klastrach serwerów, takie jak status serwera („aktywny”, „tryb gotowości” itp.). Aktywne serwery w dowolnym momencie mogą wymagać przełączenia awaryjnego do trybu gotowości i nie dbam o to, który tryb gotowości jest używany w szczególności. Chcę, aby zapytanie do bazy danych zmieniło …
Jest to dość proste, ale jestem zaskoczony tym, co robi PG (v9.0). Zaczynamy od prostego stołu: CREATE TABLE test (id INT PRIMARY KEY); i kilka rzędów: INSERT INTO TEST VALUES (1); INSERT INTO TEST VALUES (2); Korzystając z mojego ulubionego narzędzia do wysyłania zapytań JDBC (ExecuteQuery), łączę dwa okna sesji …
Próbuję napisać kod bazy danych, aby upewnić się, że nie podlega warunkom wyścigu, aby upewnić się, że zablokowałem prawidłowe wiersze lub tabele. Ale często zastanawiam się: czy mój kod jest poprawny? Czy można zmusić do manifestacji jakiekolwiek istniejące warunki wyścigu? Chcę mieć pewność, że jeśli tak się stanie w środowisku …
Załóżmy, że masz następujący kod (zignoruj, że jest okropny): BEGIN TRAN; DECLARE @id int SELECT @id = id + 1 FROM TableA; UPDATE TableA SET id = @id; --TableA must have only one row, apparently! COMMIT TRAN; -- @id is returned to the client or used somewhere else Moim zdaniem …
TL; DR: Poniższe pytanie sprowadza się do: Podczas wstawiania wiersza istnieje okno możliwości między wygenerowaniem nowej Identitywartości a zablokowaniem odpowiedniego klucza wiersza w indeksie klastrowym, w którym zewnętrzny obserwator mógłby zobaczyć nowszą Identity wartość wprowadzona przez równoległą transakcję? (W SQL Server.) Wersja szczegółowa Mam tabelę programu SQL Server z Identitykolumną …
Powiedzmy, że mam dwa zapytania uruchomione w dwóch osobnych sesjach w SSMS: Pierwsza sesja: UPDATE Person SET Name='Jonny', Surname='Cage' WHERE Id=42 Druga sesja: SELECT Name, Surname FROM Person WITH(NOLOCK) WHERE Id > 30 Czy to możliwe, że SELECTinstrukcja może odczytać częściowo zaktualizowany wiersz, na przykład jeden z Name = 'Jonny'i …
Mam problemy z współbieżnością z moimi wstawkami w procedurze przechowywanej. Odpowiednia część procedury jest następująca: select @_id = Id from table1 where othervalue = @_othervalue IF( @_id IS NULL) BEGIN insert into table1 (othervalue) values (@_othervalue) select @_id = Id from table1 where othervalue = @_othervalue END Kiedy uruchamiamy 3 …
Wyobraź sobie, że Twoim wymaganiem jest posiadanie 3 ogromnych tabel (danych strukturalnych) z, powiedzmy, 30 miliardami wierszy w każdym (łączny rozmiar 4 TB), a twoi wielu współbieżnych użytkowników (którzy są równoległymi wątkami systemu operacyjnego na zdalnych komputerach LAN) będą musieli przeczytać część dane za pośrednictwem zapytań SELELCT, GDZIE GROUPBY i …
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 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. …
Mamy proces, który generuje raport asortymentowy. Po stronie klienta proces dzieli konfigurowalną liczbę wątków roboczych, aby utworzyć fragment danych dla raportu, który odpowiada jednemu z wielu sklepów (potencjalnie tysiące, zwykle dziesiątki). Każdy wątek roboczy wywołuje usługę sieci Web, która wykonuje procedurę przechowywaną. Proces bazy danych do przetwarzania każdego fragmentu gromadzi …
Jak wszyscy wiemy, READ UNCOMMITTED to najniższy poziom izolacji, w którym mogą gromadzić się takie rzeczy, jak brudne odczyty i odczyty fantomowe. Kiedy najlepiej wykorzystać ten poziom izolacji i z jakich powodów można go użyć? Właściwie czytałem wcześniej odpowiedzi, ale nie mogłem tego całkowicie zrozumieć, ponieważ nie było wystarczającej liczby …
Jaka jest różnica między tymi 2 zapytaniami: START TRANSACTION; SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; COMMIT; I bez transakcji: SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; Jaki jest efekt SELECTzawarcia transakcji? Jeśli DELETE FROM orders WHERE id=1został wywołany z …
http://www.postgresql.org/docs/9.2/static/transaction-iso.html Tryb powtarzalnego odczytu zapewnia rygorystyczną gwarancję, że każda transakcja widzi całkowicie stabilny widok bazy danych. Jednak ten widok niekoniecznie musi być spójny z niektórymi szeregowymi (pojedynczymi) realizacjami równoczesnych transakcji na tym samym poziomie. Na przykład, nawet transakcja tylko do odczytu na tym poziomie może zobaczyć rekord kontroli zaktualizowany, aby …
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.