Załóżmy, że mam tabelę foo, która zawiera pewne statystyki, które są obliczane co jakiś czas. Jest intensywnie wykorzystywany przez inne zapytania. Dlatego chcę obliczyć najnowsze statystyki foo_newi zamienić je, gdy obliczenia będą gotowe. mógłbym zrobić ALTER TABLE foo RENAME foo_tmp; ALTER TABLE foo_new RENAME foo; ale co się stanie, jeśli …
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 …
Jestem programistą raportów, który chce, aby moje zapytania były jak najbardziej wydajne. Pracowałem z DBA, który powiedział mi - myślę, że zawsze miałem do czynienia z raportami na serwerze produkcyjnym - do użycia NOLOCKw każdym zapytaniu. Teraz współpracuję z DBA, który zbanował NOLOCKw każdych okolicznościach - nawet gdy mój raport …
Jaki jest najlepszy sposób dodawania kolumn do dużych tabel produkcyjnych w SQL Server 2008 R2? Według książek Microsoftu online: Zmiany określone w ALTER TABLE są wdrażane natychmiast. Jeśli zmiany wymagają modyfikacji wierszy w tabeli, ALTER TABLE aktualizuje wiersze. ALTER TABLE uzyskuje blokadę modyfikacji schematu w tabeli, aby upewnić się, że …
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 …
Sp_getapplock procedury przechowywanej następujące wartości powrotne: 0: Blokada została pomyślnie przyznana synchronicznie. 1: Blokada została przyznana pomyślnie po oczekiwaniu na zwolnienie innych niezgodnych blokad. -1: Upłynął limit czasu żądania blokady. -2: Żądanie blokady zostało anulowane. -3: Żądanie blokady zostało wybrane jako ofiara zakleszczenia. -999: Wskazuje sprawdzenie poprawności parametru lub inny …
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ą …
Czy kiedykolwiek musiałeś uzasadnić NIE używanie podpowiedzi do zapytania? Widzę WITH (NOLOCK)w każdym zapytaniu, które trafia na bardzo zajęty serwer. Do tego stopnia, że programiści uważają, że powinna ona być domyślnie włączona, ponieważ nie znoszą jej w kodzie tysiące razy. Próbowałem wyjaśnić, że pozwala to na brudne odczyty i w …
Korzystamy z oprogramowania BI i bazy danych repozytorium, które są zainstalowane na Oracle Enterprise 11gR2. Niektóre z tych raportów wsadowych będą próbowały uzyskać dostęp do tabeli bazy danych, która może być nadal zablokowana. Jak mogę się dowiedzieć, czy stół Oracle jest zablokowany, czy nie? Czy jest jakaś instrukcja SQL, która …
Próbujemy zaktualizować / usunąć dużą liczbę rekordów w wielomiliardowej tabeli wierszy. Ponieważ jest to popularny stół, w różnych jego częściach jest dużo aktywności. Wszelkie duże działania związane z aktualizacją / usuwaniem są blokowane przez dłuższy czas (ponieważ czeka na uzyskanie blokad wszystkich wierszy lub blokad strony lub tabeli), co powoduje …
Próbowałem znaleźć pewne informacje na temat blokowania w SQL Server, ale nie mogłem znaleźć zwięzłego wyjaśnienia, co to jest i jak to się dzieje. Czy mógłbyś mnie oświecić?
Próbuję zrozumieć / nauczyć się, jak wyśledzić szczegóły zablokowanej sesji. Więc stworzyłem następującą konfigurację: create table foo (id integer not null primary key, some_data varchar(20)); insert into foo values (1, 'foo'); commit; Teraz łączę się z bazą danych dwukrotnie od dwóch różnych klientów. Problemy z pierwszą sesją: begin transaction update …
W innej aplikacji zostałem dotknięty złym projektem: wiele wątków wykonuje EnsureDatabaseSchemaExists()jednocześnie metodę, która wygląda tak: IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'MyTable') AND type = N'U') BEGIN CREATE TABLE MyTable ( ... ); END Jednak nawet jeśli zostanie wykonany w transakcji SERIALIZABLE, kod ten nie wydaje …
Załóżmy, że mam następujące długo działające zapytanie UPDATE [Table1] SET [Col1] = 'some value' WHERE [Col2] -- some clause which selects thousands of rows i załóżmy, że następujące zapytanie jest wykonywane podczas działania powyższego zapytania SELECT * FROM [Table1] Czy pierwsze zapytanie uniemożliwia uruchomienie drugiego zapytania do momentu wykonania pierwszego …
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.