Dotazy SOQL (Salesforce Object Query Language) mohou někdy běžet rychleji v prostředí karantény ve srovnání s výrobním prostředím kvůli několika technickým a operačním faktorům, které jsou vlastní, jak jsou karantény Salesforce nastaveny a spravovány. Porozumění těmto faktorům vyžaduje, aby se ponořilo do rozdílů v objemech dat, indexování, ukládání do mezipaměti, spor a optimalizace systému specifické pro karanténu versus výrobní prostředí.
Objem a složitost dat
Jedním z primárních důvodů, proč dotazy SOQL běží rychleji v prostředích s karanténou, je rozdíl v objemu dat. Sandboxy mají obvykle menší datové sady než výrobní prostředí, zejména pokud se jedná o částečné nebo vývojářské karantény, které pouze kopírují podmnožinu výrobních dat. Tento snížený objem dat znamená, že méně záznamů je třeba naskenovat, indexovat a vrátit se dotazy, přirozeně zrychlit čas provádění dotazů. Dokonce i v plné karanténě, které zrcadlí produkční data, časté osvěžení nebo snímky mohou znamenat, že data nejsou tak objemná nebo často přístupná jako v živé výrobní org, což má za následek lepší výkon kvůli nižším celkovému zatížení systému.
Indexování a selektivita
Optimalizátor dotazů Salesforce se silně spoléhá na indexy, aby urychlil provádění dotazů. Dotazy, které filtrují na indexovaných polích, jsou často mnohem rychlejší, protože Salesforce může rychle zúžit sadu výsledků, spíše než skenovat celou tabulku. V prostředích Sandboxu se optimalizátor dotazu může chovat efektivněji, protože distribuce dat může být odlišná, což umožňuje selektivnější indexy. Pokud například karanténa má v některých indexovaných polích méně duplicitních nebo nulových hodnot než výroba, může optimalizátor dotazu používat indexy efektivněji k provádění dotazů rychleji. Navíc prostředí Sandbox často umožňují větší flexibilitu při experimentování s vlastními indexy nebo ladění dotazů, aniž by to ovlivnilo výrobu, což může optimalizovat výkon SOQL během vývoje a testování.
Snížené izolace sporu a zdroje
Produkční prostředí jsou více nájemce a těžce využívají koncoví uživatelé, kteří provádějí různé operace současně, což vytváří sporu zdrojů. Toto tvrzení může zpomalit provádění dotazů, protože CPU, paměť a I/O jsou sdíleny mezi četnými souběžnými procesy. Naproti tomu karantény, zejména vývojář a vývojář Pro karantény, mají tendenci mít méně současných uživatelů a nižší celkové zatížení systému. Toto snížení poptávky po souběžném zpracování znamená, že dotazy mají přístup k zdrojům snadněji, čímž se zkrátí čekací doby a urychlení provádění.
Stabilita plánu dotazů a dotazů
Salesforce využívá sofistikované mechanismy mezipaměti dotazů ke zlepšení výkonu. V prostředích s karanténou mohou být uloženy určité výsledky a plány provádění dotazů, zejména pokud opakované testy nebo vývojové iterace provádějí stejné dotazy. Tento efekt ukládání do mezipaměti může urychlit výkon dotazů na následujících bězích. Navíc, protože data karantény se mění méně často než výroba, zůstávají plány a výsledky dotazů v mezipaměti platné déle a zvyšují účinnost dotazu. Produkční prostředí, s jejich dynamickými a nepřetržitými změnami dat a těžkou transakční aktivitou, nemohou efektivně využít ukládání do mezipaměti, což vede k častějšímu překompilaci plánů dotazů, a tak pomalejší výkon dotazů.
Limity a kontext provádění guvernéra
Salesforce ukládá limity guvernéra, včetně maximálního počtu dotazů SOQL na transakci, aby se zachovala stabilita platformy. Ve vývojových karanténách vývojáři často nakonfigurují a kontrolují kontext provádění pečlivěji, aby se zabránilo zasažení těchto limitů, například pomocí obuvičení dotazů a zpracováním dat v dávkách. Tento vědomý vývoj a testování pomáhají udržovat dotazy optimalizované před nasazením do výroby. Ve výrobě mohou složité obchodní procesy a integrace neúmyslně způsobit nadměrné nebo neefektivní dotazování, což vede k pomalejšímu výkonu kvůli opakovaným zásahům z databáze a zasažení limitů guvernéra. Sandboxy poskytují bezpečnější prostor pro ladění a optimalizaci těchto dotazů, což poskytuje lepší relativní výkon.
Rozdíly v pravidlech sdílení a nastavení zabezpečení
Prostředí karantén může mít ve srovnání s výrobou zjednodušená nebo odlišná pravidla sdílení a konfigurace zabezpečení. Salesforce vynucuje pravidla sdílení a viditelnosti na úrovni databáze během provádění dotazů. Výpočty komplexního sdílení ve výrobě mohou přidat režijní náklady do dotazů, zejména těch souvisejících s zabezpečením na úrovni objektu a na rekordu. Sandboxy používané pro vývoj nebo testování někdy zvedne nebo zjednoduší tato pravidla, snižují složitost provádění a tím zrychlují výkon dotazů SOQL.
Testování a optimalizace zaměření
V prostředích s karanténou se obecně zaměřuje na testování a optimalizaci. Vývojáři a administrátoři aktivně profilují, analyzují a vylepšují dotazy SOQL pomocí nástrojů Salesforce, jako je nástroj pro plány dotazu, protokoly výkonnosti vývojáře Console a protokoly ladění. V důsledku toho jsou nejlepší postupy získané během vývoje karantény, jako je výběr pouze nezbytných polí, použití selektivních filtrů, vyhýbání se smyčkám s dotazy v nich, používání vztahů a agreguje zamyšleně a asynchronní zpracování (jako dávkový vrchol) - jsou implementovány, což vede k rychlejším dotazům. Produkční prostředí může stále obsahovat dědictví nebo neoptimalizované dotazy, které zhoršují výkon.
Další přispívající faktory
- Data Skew: Produkční údaje často mají zkosené rozdělení, kde v datovém souboru dominuje malá podmnožina záznamů. Toto zkosení může degradovat výkon dotazů porážkou strategií indexování. Sandboxy mohou mít méně zkosení, což umožňuje efektivnější dotazy.
- Stav vakua a recyklace bin: Odstraněné záznamy v recyklaci koše mohou ovlivnit výkon. Produkční orgy mají obvykle plnější recyklační koš než karantény, které mohou zpomalit dotazy SOQL, které přistupují k souvisejícím objektům nebo historii.
- Statistika zpoždění a dotazů Replikace: Optimalizátor dotazů Salesforce se spoléhá na předběžné statistiky, které jsou pravidelně aktualizovány. Sandboxy, zejména nově obnovené, by mohly mít čerstvé statistiky, které umožňují optimalizátoru vybrat si lepší plány dotazů.
- Vylepšení platformy: Někdy Salesforce nasazuje nová vylepšení a funkce výkonu nejprve v karanténách pro včasné testování. To by mohlo dočasně zvýšit výkon karantény ve srovnání se staršími výrobními prostředími.
Stručně řečeno, dotazy SOQL běží rychleji v prostředích s karanténou především kvůli menším a méně složitým datovým souborům, lepší selektivitě indexu, sníženého sporu o systém, efektivní ukládání do mezipaměti, optimalizaci zaměřené na dotazy během vývoje a jednodušší zabezpečení a sdílení konfigurací. Tyto kombinované faktory vytvářejí podmínky, kde optimalizátor dotazů Salesforce může provádět dotazy efektivněji a kde jsou zdroje snadněji dostupné pro zpracování dotazů. Toto prostředí podporuje lepší výkon nedosažitelný ve vysoce naložené a složité povaze výrobních orgů. Karantény tak slouží jako vývojové/testovací hřiště a místo pro ladění výkonu před nasazením dotazů a aplikací do výroby, kde jsou požadavky na výkon a složitost dat mnohem vyšší. Všechny tyto poznatky jsou čerpány z osvědčených postupů výkonu Salesforce, zkušeností vývojářů a charakteristik architektury Salesforce.