Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Dlaczego takie zapytania mogą działać szybciej w środowisku piaskownicy


Dlaczego takie zapytania mogą działać szybciej w środowisku piaskownicy


Zapytania SOQL (Salesforce Object Query Language) mogą czasem działać szybciej w środowisku piaskownicy w porównaniu ze środowiskiem produkcyjnym ze względu na kilka czynników technicznych i operacyjnych nieodłącznie związanych z tym, w jaki sposób piaskownicy Salesforce są konfigurowane i zarządzane. Zrozumienie tych czynników wymaga zagłębiania się w różnice w objętości danych, indeksowanie, buforowanie, rywalizację zasobów i optymalizację systemu specyficzne dla środowisk piaskownicy w porównaniu z środowiskami produkcyjnymi.

Dane i złożoność

Jednym z głównych powodów, dla których zapytania SoQL działają szybciej w środowiskach piaskownicy, jest różnica w objętości danych. Sandboxy zazwyczaj mają mniejsze zestawy danych niż środowiska produkcyjne, szczególnie jeśli są częściowymi lub programistami, które kopiują tylko podzbiór danych produkcyjnych. Ten zmniejszony wolumen danych oznacza, że ​​mniej rekordów należy skanować, indeksować i zwracać zapytania, oczywiście przyspieszając czasy wykonywania zapytania. Nawet w pełnych piaskownicach, które odzwierciedlają dane dotyczące produkcji, częste odświeżenia lub migawki mogą oznaczać, że dane nie są tak obszerne lub tak często dostępne, jak w organu produkcyjnym na żywo, co powoduje lepszą wydajność ze względu na niższe ogólne obciążenie systemu.

indeksowanie i selektywność

Optymalizator zapytania Salesforce opiera się w dużej mierze na indeksach, aby przyspieszyć wykonanie zapytania. Zapytania, które filtrują na polach indeksowanych, są często znacznie szybsze, ponieważ Salesforce może szybko zawęzić zestaw wyników, zamiast skanować całą tabelę. W środowiskach Sandbox Optimizer może zachowywać się bardziej wydajnie, ponieważ rozkład danych może być inny, umożliwiając bardziej selektywne indeksy. Na przykład, jeśli piaskownica ma mniej wartości duplikatów lub zerowych w niektórych polach indeksowanych niż produkcja, optymalizator zapytań może skuteczniej wykorzystywać indeksy do szybszego wykonywania zapytań. Ponadto środowiska piaskownicy często pozwalają na większą elastyczność w eksperymentowaniu z niestandardowymi indeksami lub strojenia zapytań bez wpływu na produkcję, co może zoptymalizować wydajność SOQL podczas tworzenia i testowania.

Zmniejszona rywalizacja i izolacja zasobów

Środowiska produkcyjne są wielozadaniowe i mocno wykorzystywane przez użytkowników końcowych wykonujących różne operacje jednocześnie, tworząc rywalizację zasobów. Twierdzenie to może spowolnić wykonywanie zapytania, ponieważ procesor, pamięć i we/wy są dzielone między licznymi równoczesnymi procesami. Natomiast piaskownicy, zwłaszcza deweloper i programista Pro Sandboxes, zwykle mają mniej jednoczesnych użytkowników i niższe ogólne obciążenie systemu. To zmniejszenie równoczesnego zapotrzebowania na przetwarzanie oznacza, że ​​zapytania mogą łatwiej uzyskać dostęp do zasobów, zmniejszając czas oczekiwania i przyspieszając wykonanie.

Buforing i stabilność planu zapytań

Salesforce stosuje wyrafinowane mechanizmy buforowania zapytań w celu poprawy wydajności. W środowiskach Sandbox niektóre wyniki zapytań i plany wykonania mogą być buforowane, szczególnie jeśli powtarzane testy lub iteracje rozwojowe wykonają te same zapytania. Ten efekt buforowania może przyspieszyć wydajność zapytania podczas kolejnych przebiegów. Ponadto, ponieważ dane z piaskownicy zmieniają się rzadziej niż produkcja, buforowane plany zapytania i wyniki pozostają ważne dłużej, zwiększając wydajność zapytań. Środowiska produkcyjne, z ich dynamicznymi i ciągłymi zmianami danych oraz ciężką aktywnością transakcyjną, nie mogą tak skutecznie wykorzystać buforowania, co prowadzi do częstszej rekompilacji planów zapytań, a tym samym wolniejszej wydajności zapytania.

Gubernator ograniczenia i kontekst wykonania

Salesforce nakłada limity gubernatora, w tym maksymalną liczbę zapytań SOQL na transakcję, aby utrzymać stabilność platformy. W piaskownicy programistycznej programiści często konfigurują i kontrolują konteksty wykonywania bardziej ostrożnie, aby uniknąć trafienia tych granic, na przykład poprzez zbiorcze zapytania i przetwarzanie danych w partiach. Ten uważny rozwój i testowanie pomagają zoptymalizować zapytania przed wdrożeniem w produkcji. W produkcji złożone procesy biznesowe i integracje mogą przypadkowo powodować nadmierne lub nieefektywne zapytania, co prowadzi do wolniejszej wydajności ze względu na powtarzające się trafienia bazy danych i trafienia gubernatora. Sandboxy zapewniają bezpieczniejszą przestrzeń do debugowania i optymalizacji tych zapytań, zapewniając lepszą wydajność względną.

Różnice w dzieleniu reguł i ustawień bezpieczeństwa

Środowiska Sandbox mogą mieć uproszczone lub różne reguły udostępniania i konfiguracje bezpieczeństwa w porównaniu z produkcją. Salesforce egzekwuje zasady dzielenia się i widoczności na poziomie bazy danych podczas wykonywania zapytania. Złożone obliczenia udostępniania w produkcji mogą dodawać koszty ogólne do zapytań, zwłaszcza tych związanych z bezpieczeństwem obiektowym i rekordowym. Pasowiska używane do opracowywania lub testowania czasami podnoszą lub upraszczają te reguły, zmniejszając złożoność wykonania, a tym samym przyspieszyć wydajność zapytania SOQL.

Testowanie i optymalizacja ostrości

W środowiskach Sandbox na ogół koncentruje się na testowaniu i optymalizacji. Deweloperzy i administratorzy aktywnie profilują, analizują i ulepszają zapytania SOQL za pomocą narzędzi Salesforce, takich jak narzędzie do planu zapytań, dzienniki wydajności konsoli dewelopera i dzienniki debugowania. W związku z tym najlepsze praktyki wyuczone podczas rozwoju piaskownicy - takie jak wybór niezbędnych pól, stosowanie filtrów selektywnych, unikanie pętli z zapytaczami w nich, używając relacji i agregatów, a przetwarzanie asynchroniczne (jak wierzchołek wsadowy) są wdrażane, co powoduje szybsze zapytania. Środowiska produkcyjne mogą nadal zawierać starsze lub nieoptymalizowane zapytania, które degradują wydajność.

Inne czynniki przyczyniające się

- Paczka danych: Dane produkcyjne często wypaczyły dystrybucje, w których dominuje niewielki podzbiór rekordów. Ten skoś może zdegradować wydajność zapytania, pokonując strategie indeksowania. Sandboxy mogą mieć mniej wypaczeń, umożliwiając bardziej wydajne zapytania.

- Stan próżni i recyklingu: usunięte rekordy w pojemniku recyklingu mogą wpływać na wydajność. Org produkcyjny zwykle mają pełniejszy pojemnik na recykling niż piaskownicy, które mogą spowolnić zapytania SOQL, które uzyskują dostęp do obiektów lub historii.

- Statystyki opóźnienia i zapytań replikacji: Optymalizator zapytania Salesforce opiera się na wstępnie obliczonych statystykach, które są okresowo odświeżane. Sandboxy, szczególnie nowo odświeżone, mogą mieć nowe statystyki, które pozwalają optymalizatorowi wybrać lepsze plany zapytań.

- Ulepszenia platformy: Czasami Salesforce wdraża nowe ulepszenia wydajności i funkcje najpierw w piaskownicy do wczesnych testów. Może to tymczasowo zwiększyć wydajność piaskownicy w stosunku do starszych środowisk produkcyjnych.

Podsumowując, zapytania SOQL działają szybciej w środowiskach piaskownicy przede wszystkim ze względu na mniejsze i mniej złożone zestawy danych, lepszą selektywność indeksu, zmniejszoną rywalizację systemu, efektywne buforowanie, optymalizacja zapytań podczas rozwoju oraz prostsze konfiguracje bezpieczeństwa i udostępniania. Te połączone czynniki tworzą warunki, w których optymalizator zapytania Salesforce może wykonywać zapytania bardziej wydajnie i gdzie zasoby są łatwiej dostępne do przetwarzania zapytań. Środowisko to sprzyja lepszej wydajności nieosiągalnej w wysoce załadowanym i złożonym charakterze produkcji. Pasowiska służą zatem zarówno jako plac zabaw rozwojowych/testowy, jak i miejsce dostrajania wydajności przed wdrożeniem zapytań i aplikacji do produkcji, w których wymagania wydajności i złożoności danych są znacznie wyższe. Wszystkie te spostrzeżenia pochodzą z najlepszych praktyk wydajności Salesforce, doświadczeń programistów i cech architektury Salesforce.