Przenoszenie danych między skalowanymi bazami danych w chmurze
Dotyczy: Azure SQL Database
Jeśli jesteś deweloperem oprogramowania jako usługi i nagle twoja aplikacja przechodzi ogromne zapotrzebowanie, musisz dostosować się do wzrostu. Dlatego dodajesz więcej baz danych (fragmentów). Jak ponownie rozpowszechniać dane w nowych bazach danych bez zakłócania integralności danych? Użyj narzędzia split-merge, aby przenieść dane z ograniczonych baz danych do nowych baz danych.
Narzędzie split-merge jest uruchamiane jako usługa internetowa platformy Azure. Administrator lub deweloper używa narzędzia do przenoszenia fragmentów (danych z fragmentu) między różnymi bazami danych (fragmentami). Narzędzie używa zarządzania mapami fragmentów do obsługi bazy danych metadanych usługi i zapewnia spójne mapowania.
Pobierz
Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge
Dokumentacja
- Samouczek narzędzia do dzielenia i scalania elastycznej bazy danych
- Konfiguracja zabezpieczeń podziału scalania
- Zagadnienia dotyczące zabezpieczeń podziału scalania
- Zarządzanie mapami fragmentów
- Migrowanie istniejących baz danych do skalowania w poziomie
- Narzędzia elastycznej bazy danych
- Słownik narzędzi elastycznych baz danych
Dlaczego warto używać narzędzia split-merge
Elastyczność
Aplikacje muszą elastycznie rozciągać się poza limity pojedynczej bazy danych w usłudze Azure SQL Database. Użyj narzędzia , aby przenieść dane zgodnie z potrzebami do nowych baz danych przy zachowaniu integralności.
Podziel, aby zwiększyć
Aby zwiększyć ogólną pojemność do obsługi wybuchowego wzrostu, utwórz dodatkową pojemność, dzieląc dane na fragmenty i dystrybuując je przyrostowo więcej baz danych do momentu spełnienia potrzeb związanych z pojemnością. Jest to główny przykład funkcji podziału .
Scalanie w celu zmniejszenia
Potrzeby związane z pojemnością kurczą się ze względu na sezonowy charakter firmy. Narzędzie umożliwia skalowanie w dół do mniejszej liczby jednostek skalowania w przypadku spowolnienia działania firmy. Funkcja scalania w usłudze Elastic Scale Split-Merge Obejmuje to wymaganie.
Zarządzanie hotspotami przez przenoszenie fragmentów
W przypadku wielu dzierżaw na bazę danych alokacja fragmentów fragmentów może prowadzić do wąskich gardeł pojemności w niektórych fragmentach. Wymaga to ponownego przydzielenia fragmentów lub przeniesienia zajętych fragmentów do nowych lub mniej wykorzystywanych fragmentów.
Pojęcia i kluczowe funkcje
Usługi hostowane przez klienta
Scalanie podzielone jest dostarczane jako usługa hostowana przez klienta. Musisz wdrożyć i hostować usługę w ramach subskrypcji platformy Microsoft Azure. Pakiet pobrany z pakietu NuGet zawiera szablon konfiguracji, który zawiera informacje dotyczące konkretnego wdrożenia. Aby uzyskać szczegółowe informacje, zobacz samouczek split-merge. Ponieważ usługa działa w ramach subskrypcji platformy Azure, możesz kontrolować i konfigurować większość aspektów zabezpieczeń usługi. Szablon domyślny zawiera opcje konfigurowania protokołu TLS, uwierzytelniania klienta opartego na certyfikatach, szyfrowania przechowywanych poświadczeń, ochrony systemu DoS i ograniczeń adresów IP. Więcej informacji na temat aspektów zabezpieczeń można znaleźć w następującym dokumencie : konfiguracja zabezpieczeń podziału scalania.
Domyślna wdrożona usługa jest uruchamiana z jednym procesem roboczym i jedną rolą sieci Web. Każdy z nich używa rozmiaru maszyny wirtualnej A1 w usługach Azure Cloud Services. Nie można modyfikować tych ustawień podczas wdrażania pakietu, ale można je zmienić po pomyślnym wdrożeniu w uruchomionej usłudze w chmurze (za pośrednictwem witryny Azure Portal). Należy pamiętać, że rola procesu roboczego nie może być skonfigurowana z więcej niż jednego wystąpienia ze względów technicznych.
Integracja mapy fragmentów
Usługa split-merge współdziała z mapą fragmentów aplikacji. W przypadku używania usługi dzielenia-scalania do dzielenia lub scalania zakresów lub przenoszenia fragmentów między fragmentami usługa automatycznie zachowuje aktualność mapowania fragmentów. W tym celu usługa łączy się z bazą danych menedżera map fragmentów aplikacji i utrzymuje zakresy i mapowania w miarę postępu dzielenia/scalania/przenoszenia żądań. Gwarantuje to, że mapa fragmentów zawsze przedstawia aktualny widok podczas wykonywania operacji dzielenia scalania. Operacje przenoszenia dzielenia, scalania i fragmentowania są implementowane przez przeniesienie partii fragmentów ze źródłowego fragmentu do docelowego fragmentu. Podczas operacji przenoszenia fragmentów podfragmenty objęte bieżącą partią są oznaczone jako offline na mapie fragmentów i są niedostępne dla połączeń routingu zależnego od danych przy użyciu interfejsu API OpenConnectionForKey .
Spójne połączenia podfragmentów
Po rozpoczęciu przenoszenia danych dla nowej partii fragmentów podfragmentów wszystkie połączenia routingu zależne od fragmentów udostępniane przez mapę danych do fragmentu przechowującego fragment są zabijane, a kolejne połączenia z interfejsów API mapy fragmentów do fragmentów są blokowane, gdy przenoszenie danych jest w toku, aby uniknąć niespójności. Połączenia z innymi fragmentami w tym samym fragmentzie również zostaną zabite, ale natychmiast po ponowieniu próby ponownie powiedzie się. Po przeniesieniu partii fragmenty są ponownie oznaczone w trybie online dla docelowego fragmentu, a dane źródłowe zostaną usunięte z fragmentu źródłowego. Usługa przechodzi przez te kroki dla każdej partii do momentu przeniesienia wszystkich fragmentów. Spowoduje to wykonanie kilku operacji zabicia połączenia w trakcie pełnej operacji dzielenia/scalania/przenoszenia.
Zarządzanie dostępnością fragmentów
Ograniczenie zabijania połączeń do bieżącej partii fragmentów zgodnie z powyższym opisem ogranicza zakres niedostępności do jednej partii fragmentów jednocześnie. Jest to preferowane w przypadku podejścia, w którym cały fragment pozostanie w trybie offline dla wszystkich fragmentów w trakcie operacji dzielenia lub scalania. Rozmiar partii, zdefiniowany jako liczba odrębnych fragmentów, które mają być przenoszone w danym momencie, jest parametrem konfiguracji. Można go zdefiniować dla każdej operacji dzielenia i scalania w zależności od dostępności i wydajności aplikacji. Należy pamiętać, że zakres, który jest zablokowany na mapie fragmentów, może być większy niż określony rozmiar partii. Dzieje się tak, ponieważ usługa wybiera rozmiar zakresu, tak aby rzeczywista liczba wartości klucza fragmentowania w danych w przybliżeniu odpowiadała rozmiarowi partii. Należy pamiętać w szczególności o rozrzedzonych kluczach fragmentowania.
Magazyn metadanych
Usługa dzielenia-scalania używa bazy danych do zachowania stanu i przechowywania dzienników podczas przetwarzania żądań. Użytkownik tworzy tę bazę danych w swojej subskrypcji i udostępnia parametry połączenia dla niej w pliku konfiguracji wdrożenia usługi. Administratorzy z organizacji użytkownika mogą również połączyć się z tą bazą danych, aby przejrzeć postęp żądania i zbadać szczegółowe informacje dotyczące potencjalnych awarii.
Świadomość fragmentowania
Usługa dzielenia scalania rozróżnia tabele (1) podzielone na fragmenty, tabele odwołań (2) i (3) tabele normalne. Semantyka operacji dzielenia/scalania/przenoszenia zależy od typu używanej tabeli i są zdefiniowane w następujący sposób:
Tabele podzielone na fragmenty
Operacje dzielenia, scalania i przenoszenia przenoszą fragmenty ze źródła do docelowego fragmentu. Po pomyślnym zakończeniu ogólnego żądania te fragmenty nie są już obecne w źródle. Należy pamiętać, że tabele docelowe muszą istnieć na docelowym fragmentie i nie mogą zawierać danych w zakresie docelowym przed przetworzeniem operacji.
Tabele odwołań
W przypadku tabel referencyjnych operacje dzielenia, scalania i przenoszenia kopiują dane ze źródła do docelowego fragmentu. Należy jednak pamiętać, że w danej tabeli docelowej nie występują żadne zmiany, jeśli jakikolwiek wiersz znajduje się już w tej tabeli w lokalizacji docelowej. Tabela musi być pusta dla każdej operacji kopiowania tabeli referencyjnej w celu przetworzenia.
Inne tabele
Inne tabele mogą być obecne w źródle lub obiekcie docelowym operacji dzielenia i scalania. Usługa dzielenia scalania pomija te tabele dla operacji przenoszenia lub kopiowania danych. Należy jednak pamiętać, że mogą zakłócać te operacje w przypadku ograniczeń.
Informacje na temat odwołań a tabel podzielonych na fragmenty są udostępniane przez
SchemaInfo
interfejsy API na mapie fragmentów. Poniższy przykład ilustruje użycie tych interfejsów API w danym obiekcie menedżera map fragmentów:// Create the schema annotations SchemaInfo schemaInfo = new SchemaInfo(); // reference tables schemaInfo.Add(new ReferenceTableInfo("dbo", "region")); schemaInfo.Add(new ReferenceTableInfo("dbo", "nation")); // sharded tables schemaInfo.Add(new ShardedTableInfo("dbo", "customer", "C_CUSTKEY")); schemaInfo.Add(new ShardedTableInfo("dbo", "orders", "O_CUSTKEY")); // publish smm.GetSchemaInfoCollection().Add(Configuration.ShardMapName, schemaInfo);
Tabele i
nation
są zdefiniowane jako tabeleregion
referencyjne i zostaną skopiowane z operacjami dzielenia/scalania/przenoszenia.customer
zorders
kolei są definiowane jako tabele podzielone na fragmenty.C_CUSTKEY
iO_CUSTKEY
służy jako klucz fragmentowania.
Integralność referencyjna
Usługa dzielenia scalania analizuje zależności między tabelami i używa relacji klucza obcego klucza podstawowego w celu przygotowania operacji przenoszenia tabel odwołań i fragmentów. Ogólnie rzecz biorąc, tabele referencyjne są kopiowane najpierw w kolejności zależności, a następnie fragmentlety są kopiowane w kolejności ich zależności w każdej partii. Jest to konieczne, aby ograniczenia FK-PK w ramach fragmentu docelowego zostały uznane za nadejście nowych danych.
Spójność mapy fragmentów i zakończenie ostateczne
W przypadku awarii usługa dzielenia scalania wznawia operacje po awarii i ma na celu ukończenie żądań w toku. Mogą jednak wystąpić nieodwracalne sytuacje, np. gdy fragment docelowy zostanie utracony lub naruszony poza naprawą. W tych okolicznościach niektóre fragmenty, które miały zostać przeniesione, mogą nadal znajdować się na fragmentach źródłowych. Usługa zapewnia, że mapowania podfragmentów są aktualizowane tylko po pomyślnym skopiowaniu niezbędnych danych do obiektu docelowego. Fragmentlety są usuwane tylko w źródle, gdy wszystkie ich dane zostały skopiowane do obiektu docelowego i odpowiednie mapowania zostały pomyślnie zaktualizowane. Operacja usuwania odbywa się w tle, gdy zakres jest już w trybie online na docelowym fragmentie. Usługa dzielenia scalania zawsze zapewnia poprawność mapowań przechowywanych na mapie fragmentów.
Interfejs użytkownika scalania podzielonego
Pakiet usługi scalania podzielonego zawiera rolę procesu roboczego i rolę sieci Web. Rola sieci Web służy do przesyłania żądań scalania podzielonego w interaktywny sposób. Główne składniki interfejsu użytkownika są następujące:
Typ operacji
Typ operacji to przycisk radiowy, który kontroluje rodzaj operacji wykonywanej przez usługę dla tego żądania. Możesz wybrać między scenariuszami dzielenia, scalania i przenoszenia. Możesz również anulować wcześniej przesłaną operację. Możesz użyć żądań dzielenia, scalania i przenoszenia dla map fragmentów zakresu. Mapy fragmentów listy obsługują tylko operacje przenoszenia.
Mapa fragmentów
W następnej sekcji parametrów żądania opisano informacje o mapie fragmentów i bazie danych hostująca mapę fragmentów. W szczególności należy podać nazwę serwera i bazy danych hostujących mapę fragmentów, poświadczenia do nawiązania połączenia z bazą danych mapy fragmentów, a na koniec nazwę mapy fragmentu. Obecnie operacja akceptuje tylko jeden zestaw poświadczeń. Te poświadczenia muszą mieć wystarczające uprawnienia do przeprowadzania zmian w mapie fragmentów, a także danych użytkownika na fragmentach.
Zakres źródłowy (podział i scalanie)
Operacja dzielenia i scalania przetwarza zakres przy użyciu niskiego i wysokiego klucza. Aby określić operację z niezwiązaną wysoką wartością klucza, zaznacz pole wyboru "Wysoki klucz jest maksymalny" i pozostaw puste pole wysokiego klucza. Określone wartości klucza zakresu nie muszą dokładnie odpowiadać mapowaniu i jego granicom na mapie fragmentów. Jeśli w ogóle nie określisz żadnych granic zakresu, usługa automatycznie wywnioskuje najbliższy zakres. Aby pobrać bieżące mapowania na danej mapie fragmentów, możesz użyć skryptu GetMappings.ps1 programu PowerShell.
Zachowanie podzielonego źródła (podzielone)
W przypadku operacji podziału zdefiniuj punkt podziału, aby podzielić zakres źródłowy. W tym celu należy podawać klucz fragmentowania, w którym ma nastąpić podział. Użyj przycisku radiowego, aby określić, czy dolna część zakresu (z wyłączeniem klucza podziału) ma zostać przeniesiona, czy też chcesz przenieść górną część (w tym klucz podziału).
Fragmentlet źródłowy (przenoszenie)
Operacje przenoszenia różnią się od operacji dzielenia lub scalania, ponieważ nie wymagają zakresu do opisania źródła. Źródło przenoszenia jest po prostu identyfikowane przez wartość klucza fragmentowania, którą planujesz przenieść.
Fragment docelowy (podzielony)
Po podaniu informacji o źródle operacji podziału należy zdefiniować miejsce, do którego mają zostać skopiowane dane, podając nazwę serwera i bazy danych dla obiektu docelowego.
Zakres docelowy (scalanie)
Operacje scalania przenoszą fragmenty do istniejącego fragmentu. Istniejący fragment można zidentyfikować, podając granice zakresu istniejącego zakresu, z którym chcesz scalić.
Rozmiar partii
Rozmiar partii steruje liczbą fragmentów, które będą w trybie offline w czasie podczas przenoszenia danych. Jest to wartość całkowita, w której można używać mniejszych wartości, gdy są wrażliwe na długie okresy przestoju dla podfragmentów. Większe wartości zwiększą czas, przez który dany fragmentlet jest w trybie offline, ale może zwiększyć wydajność.
Identyfikator operacji (anuluj)
Jeśli masz bieżącą operację, która nie jest już potrzebna, możesz anulować operację, podając jej identyfikator operacji w tym polu. Identyfikator operacji można pobrać z tabeli stanu żądania (zobacz sekcję 8.1) lub z danych wyjściowych w przeglądarce internetowej, w której przesłano żądanie.
Wymagania i ograniczenia
Bieżąca implementacja usługi split-merge podlega następującym wymaganiom i ograniczeniom:
- Fragmenty muszą istnieć i być zarejestrowane na mapie fragmentów, zanim można wykonać operację dzielenia-scalania na tych fragmentach.
- Usługa nie tworzy tabel ani żadnych innych obiektów bazy danych automatycznie w ramach operacji. Oznacza to, że schemat dla wszystkich tabel podzielonych na fragmenty i tabel odwołań musi istnieć na docelowym fragmentze przed dowolną operacją dzielenia/scalania/przenoszenia. Tabele podzielone na fragmenty w szczególności muszą być puste w zakresie, w którym nowe podfragmenty mają być dodawane przez operację dzielenia/scalania/przenoszenia. W przeciwnym razie operacja zakończy się niepowodzeniem początkowego sprawdzania spójności na docelowym fragmentie. Należy również pamiętać, że dane referencyjne są kopiowane tylko wtedy, gdy tabela referencyjna jest pusta i że nie ma gwarancji spójności w odniesieniu do innych współbieżnych operacji zapisu w tabelach odwołań. Zalecamy: podczas uruchamiania operacji dzielenia/scalania żadne inne operacje zapisu nie wprowadzają zmian w tabelach odwołań.
- Usługa opiera się na tożsamości wiersza ustanowionej przez unikatowy indeks lub klucz, który zawiera klucz fragmentowania w celu zwiększenia wydajności i niezawodności dużych fragmentów. Dzięki temu usługa może przenosić dane z jeszcze bardziej szczegółowością niż tylko wartość klucza fragmentowania. Pomaga to zmniejszyć maksymalną ilość miejsca w dzienniku i blokad, które są wymagane podczas operacji. Rozważ utworzenie unikatowego indeksu lub klucza podstawowego, w tym klucza fragmentowania w danej tabeli, jeśli chcesz użyć tej tabeli z żądaniami dzielenia/scalania/przenoszenia. Ze względu na wydajność klucz fragmentowania powinien być kolumną wiodącą w kluczu lub indeksie.
- Podczas przetwarzania żądań niektóre dane fragmentu mogą być obecne zarówno w źródle, jak i w docelowym fragmentie. Jest to konieczne, aby chronić przed awariami podczas przenoszenia fragmentów. Integracja podziału scalania z mapą fragmentów zapewnia, że połączenia za pośrednictwem interfejsów API routingu zależnego od danych przy użyciu metody OpenConnectionForKey na mapie fragmentów nie widzą żadnych niespójnych stanów pośrednich. Jednak podczas nawiązywania połączenia ze źródłem lub fragmentami docelowymi bez używania metody OpenConnectionForKey niespójne stany pośrednie mogą być widoczne podczas dzielenia/scalania/przenoszenia żądań. Te połączenia mogą wyświetlać częściowe lub zduplikowane wyniki w zależności od czasu lub fragmentu bazowego połączenia. To ograniczenie obejmuje obecnie połączenia wykonywane przez zapytania wieloczęściowe w skali elastycznej.
- Baza danych metadanych dla usługi dzielenia-scalania nie może być współdzielona między różnymi rolami. Na przykład rola usługi scalania podzielonego uruchomiona w środowisku przejściowym musi wskazywać inną bazę danych metadanych niż rola produkcyjna.
Rozliczenia
Usługa scalania podzielonego jest uruchamiana jako usługa w chmurze w ramach subskrypcji platformy Microsoft Azure. W związku z tym opłaty za usługi w chmurze mają zastosowanie do twojego wystąpienia usługi. Jeśli nie często wykonujesz operacje dzielenia/scalania/przenoszenia, zalecamy usunięcie usługi w chmurze z podziałem scalania. Pozwala to zaoszczędzić koszty uruchamiania lub wdrażania wystąpień usługi w chmurze. Możesz ponownie wdrożyć i uruchomić łatwo uruchamianą konfigurację za każdym razem, gdy trzeba wykonać operacje dzielenia lub scalania.
Monitorowanie
Tabele stanu
Usługa dzielenia scalania udostępnia tabelę RequestStatus w bazie danych magazynu metadanych na potrzeby monitorowania ukończonych i bieżących żądań. Tabela zawiera listę wierszy dla każdego żądania scalania podzielonego, które zostało przesłane do tego wystąpienia usługi dzielenia-scalania. Udostępnia następujące informacje dla każdego żądania:
Sygnatura czasowa
Godzina i data rozpoczęcia żądania.
Identyfikator operacji
Identyfikator GUID, który jednoznacznie identyfikuje żądanie. To żądanie może również służyć do anulowania operacji, gdy nadal trwa.
Stan
Bieżący stan żądania. W przypadku bieżących żądań zawiera również bieżącą fazę, w której znajduje się żądanie.
CancelRequest
Flaga wskazująca, czy żądanie zostało anulowane.
Postęp
Procentowe oszacowanie ukończenia operacji. Wartość 50 wskazuje, że operacja jest ukończona około 50%.
Szczegóły
Wartość XML, która zawiera bardziej szczegółowy raport postępu. Raport postępu jest okresowo aktualizowany, ponieważ zestawy wierszy są kopiowane ze źródła do elementu docelowego. W przypadku awarii lub wyjątków ta kolumna zawiera również bardziej szczegółowe informacje o awarii.
Diagnostyka Azure
Usługa scalania podzielonego używa Diagnostyka Azure na podstawie zestawu Azure SDK 2.5 na potrzeby monitorowania i diagnostyki. Konfigurację diagnostyki można kontrolować, jak wyjaśniono tutaj: Włączanie diagnostyki w usługach Azure Cloud Services i maszynach wirtualnych. Pakiet pobierania zawiera dwie konfiguracje diagnostyczne — jedną dla roli sieci Web i jedną dla roli procesu roboczego. Zawiera definicje rejestrowania liczników wydajności, dzienników usług IIS, dzienników zdarzeń systemu Windows i dzienników zdarzeń aplikacji scalania podzielonego.
Wdrażanie diagnostyki
Uwaga
W tym artykule użyto modułu Azure Az programu PowerShell, który jest zalecanym modułem programu PowerShell do interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Ważne
Moduł Azure Resource Manager programu PowerShell jest nadal obsługiwany, ale wszystkie przyszłe programowanie dotyczy modułu Az.Sql. Aby uzyskać te polecenia cmdlet, zobacz AzureRM.Sql. Argumenty poleceń w module Az i modułach AzureRm są zasadniczo identyczne.
Aby włączyć monitorowanie i diagnostykę przy użyciu konfiguracji diagnostycznej dla ról sieci Web i procesów roboczych udostępnianych przez pakiet NuGet, uruchom następujące polecenia przy użyciu programu Azure PowerShell:
$storageName = "<azureStorageAccount>"
$key = "<azureStorageAccountKey"
$storageContext = New-AzStorageContext -StorageAccountName $storageName -StorageAccountKey $key
$configPath = "<filePath>\SplitMergeWebContent.diagnostics.xml"
$serviceName = "<cloudServiceName>"
Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext `
-DiagnosticsConfigurationPath $configPath -ServiceName $serviceName `
-Slot Production -Role "SplitMergeWeb"
Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext `
-DiagnosticsConfigurationPath $configPath -ServiceName $serviceName `
-Slot Production -Role "SplitMergeWorker"
Więcej informacji na temat konfigurowania i wdrażania ustawień diagnostycznych można znaleźć tutaj: Włączanie diagnostyki w usługach Azure Cloud Services i maszynach wirtualnych.
Pobieranie diagnostyki
Możesz łatwo uzyskać dostęp do diagnostyki z Poziomu Eksploratora programu Visual Studio Server w części Azure drzewa Eksploratora serwera. Otwórz wystąpienie programu Visual Studio, a na pasku menu kliknij pozycję Widok i Eksplorator serwera. Kliknij ikonę platformy Azure, aby nawiązać połączenie z subskrypcją platformy Azure. Następnie przejdź do pozycji Azure —> Storage —><your storage account>
— Tables —>> WADLogsTable. Aby uzyskać więcej informacji, zobacz Eksplorator serwera.
Tabela WADLogsTable wyróżniona na powyższym rysunku zawiera szczegółowe zdarzenia z dziennika aplikacji usługi split-merge. Należy pamiętać, że domyślna konfiguracja pobranego pakietu jest kierowana do wdrożenia produkcyjnego. W związku z tym interwał pobierania dzienników i liczników z wystąpień usługi jest duży (5 minut). W przypadku testowania i programowania obniż interwał przez dostosowanie ustawień diagnostycznych sieci Web lub roli procesu roboczego do Twoich potrzeb. Kliknij prawym przyciskiem myszy rolę w Eksploratorze programu Visual Studio Server (zobacz powyżej), a następnie dostosuj okres transferu w oknie dialogowym ustawień konfiguracji diagnostyki:
Wydajność
Ogólnie rzecz biorąc, lepszą wydajność należy oczekiwać z wyższych, bardziej wydajnych warstw usług. Wyższe alokacje operacji we/wy, procesora CPU i pamięci dla wyższych warstw usług korzystają z operacji kopiowania i usuwania zbiorczego używanego przez usługę split-merge. Z tego powodu zwiększ warstwę usługi tylko dla tych baz danych przez określony, ograniczony okres czasu.
Usługa wykonuje również zapytania sprawdzania poprawności w ramach normalnych operacji. Te zapytania sprawdzania poprawności sprawdzają nieoczekiwaną obecność danych w zakresie docelowym i upewnij się, że każda operacja dzielenia/scalania/przenoszenia rozpoczyna się od stanu spójnego. Te zapytania dotyczą wszystkich zakresów kluczy fragmentowania zdefiniowanych przez zakres operacji i rozmiar partii podany w ramach definicji żądania. Te zapytania działają najlepiej, gdy indeks ma klucz fragmentowania jako kolumnę wiodącą.
Ponadto właściwość unikatowości z kluczem fragmentowania jako kolumna wiodąca umożliwi usłudze użycie zoptymalizowanego podejścia, które ogranicza zużycie zasobów pod względem przestrzeni dziennika i pamięci. Ta właściwość unikatowości jest wymagana do przenoszenia dużych rozmiarów danych (zazwyczaj powyżej 1 GB).
Jak przeprowadzić uaktualnianie
- Wykonaj kroki opisane w temacie Wdrażanie usługi scalania podzielonego.
- Zmień plik konfiguracji usługi w chmurze dla wdrożenia scalania podzielonego, aby odzwierciedlić nowe parametry konfiguracji. Nowy wymagany parametr to informacje o certyfikacie używanym do szyfrowania. W tym celu można łatwo porównać nowy plik szablonu konfiguracji z pliku pobranego z istniejącej konfiguracji. Upewnij się, że dodano ustawienia zarówno dla
DataEncryptionPrimaryCertificateThumbprint
DataEncryptionPrimary
sieci Web, jak i dla roli procesu roboczego. - Przed wdrożeniem aktualizacji na platformie Azure upewnij się, że wszystkie aktualnie uruchomione operacje dzielenia-scalania zostały zakończone. Można to łatwo zrobić, wysyłając zapytanie do tabel RequestStatus i PendingWorkflows w bazie danych metadanych podziału scalania pod kątem bieżących żądań.
- Zaktualizuj istniejące wdrożenie usługi w chmurze na potrzeby dzielenia scalania w ramach subskrypcji platformy Azure przy użyciu nowego pakietu i zaktualizowanego pliku konfiguracji usługi.
Nie trzeba aprowizować nowej bazy danych metadanych na potrzeby scalania podzielonego w celu uaktualnienia. Nowa wersja spowoduje automatyczne uaktualnienie istniejącej bazy danych metadanych do nowej wersji.
Najlepsze rozwiązania i rozwiązywanie problemów
- Zdefiniuj dzierżawę testową i przećwiczyć najważniejsze operacje dzielenia/scalania/przenoszenia z dzierżawą testową w kilku fragmentach. Upewnij się, że wszystkie metadane są poprawnie zdefiniowane na mapie fragmentów i że operacje nie naruszają ograniczeń ani kluczy obcych.
- Zachowaj rozmiar danych dzierżawy testowej powyżej maksymalnego rozmiaru danych największej dzierżawy, aby upewnić się, że nie występują problemy związane z rozmiarem danych. Pomaga to ocenić górną granicę czasu potrzebnego do przeniesienia pojedynczej dzierżawy.
- Upewnij się, że schemat zezwala na usunięcia. Usługa dzielenia-scalania wymaga możliwości usunięcia danych ze źródłowego fragmentu po pomyślnym skopiowaniu danych do obiektu docelowego. Na przykład wyzwalacze usuwania mogą uniemożliwić usłudze usunięcie danych ze źródła i spowodować niepowodzenie operacji.
- Klucz fragmentowania powinien być kolumną wiodącą w kluczu podstawowym lub unikatową definicją indeksu. Zapewnia to najlepszą wydajność zapytań weryfikacji podziału lub scalania oraz rzeczywistych operacji przenoszenia i usuwania danych, które zawsze działają na zakresach kluczy fragmentowania.
- Połącz usługę scalania podzielonego w regionie i centrum danych, w którym znajdują się bazy danych.
Powiązana zawartość
Jeszcze nie korzystasz z narzędzi elastycznych baz danych? Zapoznaj się z naszym przewodnikiem Wprowadzenie. W przypadku pytań skontaktuj się z nami na stronie pytań i odpowiedzi dotyczących usługi SQL Database oraz w przypadku żądań funkcji, dodaj nowe pomysły lub zagłosuj na istniejące pomysły na forum opinii usługi SQL Database.