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.