Mam tabelę w bazie danych SQL Server 2005, który jest często używany. Ma nasz produkt pod ręką informacje o dostępności. Co godzinę otrzymujemy aktualizacje z naszego magazynu i od kilku lat uruchamiamy procedurę, która obcina tabelę i aktualizuje informacje. Zajmie to tylko kilka sekund i do tej pory nie stanowiło problemu. Mamy znacznie więcej osób korzystających z naszych systemów, które teraz przesyłają zapytania do tych informacji, w wyniku czego widzimy wiele przekroczeń czasu z powodu blokowania procesów.Jaki jest najlepszy sposób aktualizowania danych w tabeli, gdy jest ona używana bez blokowania tabeli?
... więc ...
Zbadaliśmy nasze opcje i mają pochodzić z pomysłem, aby złagodzić ten problem.
- Mielibyśmy dwie tabele. Tabela A (aktywna) i tabela B (nieaktywna).
- Stworzyliśmy widok wskazujący na aktywną tabelę (tabela A).
- Wszystkie rzeczy, które potrzebują tej informacji w tabelach (4 obiekty), będą teraz musiały przejść przez widok.
- Procedura godzinowa obcięłaby nieaktywną tabelę, zaktualizowała ją o najnowsze informacje, a następnie zaktualizowała widok, aby wskazywała na nieaktywną tabelę, czyniąc ją aktywną.
- Ta procedura określa, która tabela jest aktywna i zasadniczo przełącza widok między nimi.
Co jest nie tak z tym? Czy przełączenie średniego zapytania widoku spowoduje problemy? Czy to działa?
Dziękujemy za Twoje doświadczenie.
dodatkowych informacji
procedura jest pakiet SSIS że peforms wiele kroków i ostatecznie obcina/aktualizuje tabelę w pytaniu
Procesy blokujące dwa inne procedury składowane tego zapytania to stół.
jeśli masz licencji, dwa oddzielne serwery symetryczne obciążenie mogłoby zapewnić bezproblemowe alternatywy. Trzymasz jeden na żywo i aktualizujesz drugi, a następnie przełączasz się. –