Las consultas SOQL (Salesforce Object Consulty) a veces pueden funcionar más rápido en un entorno de sandbox en comparación con un entorno de producción debido a varios factores técnicos y operativos intrínsecos a la forma en que se configuran y gestionan las cajas de arena de Salesforce. Comprender estos factores requiere profundizar en las diferencias en los volúmenes de datos, la indexación, el almacenamiento en caché, la contención de recursos y las optimizaciones del sistema específicas para los entornos de sandbox versus la producción.
Volumen de datos y complejidad
Una de las principales razones por las que las consultas SOQL funcionan más rápido en los entornos de sandbox es la diferencia en el volumen de datos. Las cajas de arena generalmente tienen conjuntos de datos más pequeños que los entornos de producción, especialmente si son cajas de arena parciales o desarrolladores, que solo copian un subconjunto de los datos de producción. Este volumen de datos reducido significa que se deben escanear, indexar y devolver menos registros, de consulta naturalmente, acelerando naturalmente los tiempos de ejecución de consultas. Incluso en cajas de arena completas que reflejan los datos de producción, las actualizaciones frecuentes o las instantáneas podrían significar que los datos no son tan voluminosos o se acceden con tanta frecuencia como en la organización de producción en vivo, lo que resulta en un mejor rendimiento debido a una menor carga general del sistema.
indexación y selectividad
El optimizador de consultas de Salesforce depende en gran medida de los índices para acelerar la ejecución de la consulta. Las consultas que se filtran en los campos indexados a menudo son mucho más rápidas porque Salesforce puede reducir rápidamente el conjunto de resultados en lugar de escanear toda la tabla. En los entornos de sandbox, el optimizador de consultas puede comportarse de manera más eficiente porque la distribución de datos puede ser diferente, lo que permite que los índices sean más selectivos. Por ejemplo, si un sandbox tiene menos valores duplicados o nulos en ciertos campos indexados que la producción, el optimizador de consultas puede usar índices de manera más efectiva para ejecutar consultas más rápido. Además, los entornos de sandbox a menudo permiten más flexibilidad al experimentar con índices personalizados o ajuste de consultas sin afectar la producción, lo que puede optimizar el rendimiento de SOQL durante el desarrollo y las pruebas.
Contención reducida y aislamiento de recursos
Los entornos de producción son múltiples y muy utilizados por los usuarios finales que realizan varias operaciones simultáneamente, creando contención de recursos. Esta contención puede ralentizar la ejecución de la consulta como CPU, memoria y E/S se comparten entre numerosos procesos concurrentes. Por el contrario, los sandboxes, especialmente el desarrollador y el desarrollador Pro Sandboxes, tienden a tener menos usuarios simultáneos y una menor carga general del sistema. Esta reducción en la demanda de procesamiento concurrente significa que las consultas pueden acceder a los recursos más fácilmente, reduciendo los tiempos de espera y acelerando la ejecución.
Estabilidad del plan de almacenamiento en caché y consulta
Salesforce emplea mecanismos sofisticados de almacenamiento en caché de consultas para mejorar el rendimiento. En entornos de sandbox, ciertos resultados de consulta y planes de ejecución pueden almacenarse en caché, particularmente si las pruebas repetidas o las iteraciones de desarrollo ejecutan las mismas consultas. Este efecto de almacenamiento en caché puede acelerar el rendimiento de la consulta en las ejecuciones posteriores. Además, debido a que los datos de Sandbox cambian con menos frecuencia que la producción, los planes de consulta en caché y los resultados siguen siendo válidos más largos, mejorando la eficiencia de la consulta. Los entornos de producción, con sus cambios de datos dinámicos y continuos y la actividad transaccional pesada, no pueden aprovechar el almacenamiento en caché de manera tan efectiva, lo que lleva a una recompilación más frecuente de los planes de consulta y, por lo tanto, un rendimiento de consulta más lento.
Los límites del gobernador y el contexto de ejecución
Salesforce impone los límites del gobernador, incluido el número máximo de consultas SOQL por transacción para mantener la estabilidad de la plataforma. En el desarrollo de Sandboxes, los desarrolladores a menudo configuran y controlan los contextos de ejecución con más cuidado para evitar alcanzar estos límites, por ejemplo, al exceso de consultas y procesando datos en lotes. Este consciente de desarrollo y pruebas ayudan a mantener las consultas optimizadas antes de la implementación en la producción. En la producción, los procesos e integraciones comerciales complejos pueden causar inadvertidamente una consulta excesiva o ineficiente, lo que lleva a un rendimiento más lento debido a los golpes de base de datos repetidos y los límites de gobernadores. Los sandboxes proporcionan un espacio más seguro para depurar y optimizar estas consultas, produciendo un mejor rendimiento relativo.
Diferencias en compartir reglas y configuraciones de seguridad
Los entornos Sandbox pueden tener reglas de intercambio simplificadas o diferentes y configuraciones de seguridad en comparación con la producción. Salesforce aplica reglas de intercambio y visibilidad a nivel de base de datos durante la ejecución de consultas. Los cálculos de intercambio complejos en la producción pueden agregar sobrecargas a las consultas, especialmente aquellas relacionadas con la seguridad de objetos y nivel récord. Las cajas de arena utilizadas para el desarrollo o las pruebas a veces elevan o simplifican estas reglas, reduciendo la complejidad de la ejecución y, por lo tanto, aceleran el rendimiento de la consulta SOQL.
Enfoque de prueba y optimización
En entornos de sandbox, generalmente hay un enfoque en las pruebas y la optimización. Los desarrolladores y administradores perfilan, analizan y mejoran activamente consultas SOQL utilizando herramientas de Salesforce como la herramienta del plan de consultas, los registros de rendimiento de la consola de desarrolladores y los registros de depuración. En consecuencia, las mejores prácticas aprendidas durante el desarrollo de Sandbox, como seleccionar solo los campos necesarios, la aplicación de filtros selectivos, evitar bucles con consultas dentro de ellas, usar relaciones y agregados cuidadosamente, y el procesamiento asincrónico (como el Apex por lotes) se implementan, lo que resulta en consultas más rápidas. Los entornos de producción aún pueden contener consultas heredadas o no optimizadas que degradan el rendimiento.
Otros factores contribuyentes
- Sesgo de datos: los datos de producción a menudo tienen distribuciones sesgadas, donde un pequeño subconjunto de registros domina el conjunto de datos. Este sesgo puede degradar el rendimiento de la consulta al derrotar las estrategias de indexación. Las cajas de arena pueden tener menos sesgo, lo que permite consultas más eficientes.
- Estado de la contenedor de vacío y reciclaje: los registros eliminados en el contenedor de reciclaje pueden afectar el rendimiento. Las organizaciones de producción comúnmente tienen un contenedor de reciclaje más completo que las cajas de arena, que pueden ralentizar consultas SOQL que acceden a objetos o historias relacionados.
- Estadísticas de retraso y consulta de replicación: el optimizador de consultas de Salesforce se basa en estadísticas precomputadas que se actualizan periódicamente. Las cajas de arena, particularmente las recién renovadas, pueden tener nuevas estadísticas que permitan al optimizador elegir mejores planes de consulta.
- Mejoras de la plataforma: a veces Salesforce implementa nuevas mejoras y características de rendimiento primero en cajas de arena para pruebas tempranas. Esto podría mejorar temporalmente el rendimiento de Sandbox en relación con los entornos de producción más antiguos.
En resumen, las consultas de SOQL se ejecutan más rápido en entornos de sandbox principalmente debido a conjuntos de datos más pequeños y menos complejos, una mejor selectividad de índices, una contención reducida del sistema, almacenamiento en caché efectivo, optimización de consultas enfocadas durante el desarrollo y configuraciones de seguridad e intercambio más simples. Estos factores combinados crean condiciones en las que el optimizador de consultas de Salesforce puede ejecutar consultas de manera más eficiente y donde los recursos están más fácilmente disponibles para el procesamiento de consultas. Este entorno fomenta un mejor rendimiento inalcanzable en la naturaleza altamente cargada y compleja de las organizaciones de producción. Los sandboxes sirven como un patio de recreo de desarrollo/prueba y un lugar para el ajuste de rendimiento antes de implementar consultas y aplicaciones en la producción donde las demandas de rendimiento y las complejidades de datos son mucho más altas. Todas estas ideas se basan en las mejores prácticas de rendimiento de Salesforce, las experiencias de los desarrolladores y las características de arquitectura de Salesforce.