SlideShare una empresa de Scribd logo
1 de 18
DEVELOPER USER GROUP
Bilbao, 7 de Febrero, 2014
BIENVENIDOS!!!
 ¿Qué es DUG?
 Es nuestra segunda reunión
 ¿Qué fue lo que más nos gustó?
 ¿Qué cambiaríamos?
PRESENTACIONES
@agarciaodeian
SOQL PARA GRANDES VOLÚMENES DE DATOS
Jesús González
@bit0211
SOQL PARA GRANDES VOLÚMENES DE DATOS
 Introducción
 Conceptos base.
 ¿Cómo optimizamos nuestras SOQL’s?
 Campos indizados
 Umbral selectivo
 Conclusiones
 Query Optimization – Recursos
 Recursos Adicionales * Query Resource Feedback
Parameter – Pilot
INTRODUCCIÓN
 Construimos un proceso que tratará cualquier
número de registros (más de 50 millones)
 Heap Size
 Disminuir scope (inviable)
  Refactorización
 Code statements / Time limit
  Refactorización (proceso perfect!)
 A pesar de que la cláusula SOQL tenía un ORDER
BY comportamiento extraño en el encadenamiento
entre de batchs.
  Quitamos el order by
  Refactorización
 ORA 1013 – La pesadilla. Ya en Blueray y DVD
 Query >2 minutos de procesamiento
CONCEPTOS BASE.
 Multitenant architecture. Una única solución de software
para todos los “tenants”.
 Se mantienen estructuras de BD virtuales y pivot tables
 Técnicas de rendimiento tradicionales no hacen efecto.
 La tabla subyacente no es apropiada para ser indizada.
 Salesforce Query Optimizer (SQO).
 Ayudan a determinar el mejor plan de ejecución basado en
los índices de la condición de la query, estadísticas de
ejecución, generan tablas de índices, …
 Las dynamic pre-queries determinarán si se utiliza el valor en
“caché” o se consultará a la base de datos directamente.
Ejemplo (*Account_Type  custom index):
SELECT * from Account WHERE Account_Type=‘Large’
¿CÓMO OPTIMIZAMOS NUESTRAS SOQL’S?
 Utilizando campos que estén indizados
SELECT Id from Account WHERE CreatedDate > 2013-01-01T00:00:00Z
 Reduciendo el número de registros que recuperamos
(30% para 1mill + 10% para el resto)
 Evitando procesamiento de la BD:
 No usando fórmulas
SELECT id, Date1__c FROM Account WHERE IsValidDate__c = true
 No consultando valores nulos
SELECT id FROM Account WHERE ShippingAddress__c = null
 No usando comodines en los textos %
SELECT id FROM Account WHERE Name LIKE ‘%Acme%’
 Solicitando custom indexes (Customer support)
SELECT id FROM Account WHERE Type__c = ‘Vendor’
CAMPOS INDIZADOS
 Standard Fields indizados en todos los objetos
 Id
 Name
 OwnerId
 CreatedDate
 SystemModstamp
 RecordType
 Siempre indizado para los objetos que usen esta propiedad
 Master-detail fields
 Lookup fields
 Otros campos indizados
 Unique fields
 External ID fields
 **Custom indexes
UMBRAL SELECTIVO
 Condición unaria:
 Standard index
 <30% sobre el primer millón de registros
 <15% del total después del 1er millón
 <1millón de registros
 Custom index
 <10% sobre el primer millón
 <5% del total después del 1er millón
 <333,333 en total
 Compuestas
 AND:
 <2 veces el umbral de cada filtro
 < umbral por intersección de campos
UMBRAL SELECTIVO (2)
 Compuestas (continuación)
 OR:
 < El umbral de cada uno de los filtros
 < El umbral de la suma de los campos
 LIKE:
 Para las condiciones que no comiencen con un comodín (%)
Force.com comprueba los primeros 100,000 registros.
EJEMPLO DE UMBRAL
 Si tenemos 1 millón de casos (con un custom index
en el campo Status) repartidos así:
[SELECT id FROM Case WHERE Status != ‘Closed’] No usa
índice y además está por encima del umbral.
[SELECT id FROM Case WHERE Status IN (‘New’, ‘On Hold’,
‘Pending’, ‘ReOpened’)] Está dentro del umbral
Estado de los casos Número de registros en
BD
New 50,000
Closed 880,000
On Hold 20,000
Pending 30,000
ReOpened 20,000
EXCEPCIONES SELECTIVAS
 Excepciones en los que las queries son no
selectivas y por lo tanto no usan índices
 Condiciones con:
 Filtros negativos: !=, NOT LIKE, EXCLUDES
 Comparación de textos: text_field [< | > | <= | >=]
 Comodines: LIKE ‘%string%’
 Referencias a fórmulas no deterministas: Cross-object formula
fields, dependientes del tiempo,…
 Campos con valores nulos
CONCLUSIONES
 No hacer consultas dentro de bucles para reducir el
tiempo y evitar errores de governador
 Si podemos, no almacenar los datos en variables,
usar for loops.
 Si nuestra query no hace uso de índices o no
cumple el umbral de selectividad, pensar en qué es
más costoso en nuestra query:
 ORDER BY
 Queries sobre null realizan un “full table scan”.
 Filtrar sobre fórmulas (se calculan en tiempo de ejecución) vs
descomponer en un conjunto de filtros
 Recuperar la mínima información posible
 Limitar una query casi no reduce el coste de ejecutar la query
 El uso de IN es tratado como un conjunto de igualdades
QUERY OPTIMIZATION – RECURSOS
 Query search optimization cheat sheet.
 http://s3.amazonaws.com/dfc-wiki/en/images/0/0e/Db-query-search-
optimization-cheat-sheet.pdf
 Large data volumes best practices (Winter’12). Muy
interesante: underlaying concepts.
 http://www.salesforce.com/us/developer/docs/ldv/salesforce_large_data_
volumes_bp.pdf
 Consideraciones sobre los campos nulos y las fórmulas en
las queries.
 http://blogs.developerforce.com/engineering/2013/02/force-com-soql-
best-practices-nulls-and-formula-fields.html
 Publicaciones de MVP’s (recomiendo el primero)
 http://blogs.developerforce.com/engineering/2013/07/maximizing-the-
performance-of-force-com-soql-reports-and-list-views.html
 http://blogs.developerforce.com/engineering/2013/09/collecting-
selectivity-statistics-for-force-com-queries.html
 http://blogs.developerforce.com/engineering/2013/03/force-com-formula-
fields-indexes-and-performance-gotchas.html
RECURSOS ADICIONALES
 Herramientas
 http://wiki.developerforce.com/page/A_Guide_to_Applic
ation_Performance_Profiling_in_Force.com
 “White paper” Guía oficial para los “arquitectos” de
las aplicaciones escrita por Salesforce.
 http://wiki.developerforce.com/page/Best_Practices_for
_Deployments_with_Large_Data_Volumes
 Query Resource Feedback Parameter – Pilot
 https://eu2.salesforce.com/help/pdfs/en/salesforce_spri
ng14_release_notes.pdf - página 284
SALESFORCE1
Carolina Ruiz
@CarolEnLaNube
GRACIAS!!
NOS VEMOS EN EL PRÓXIMO DUG

Más contenido relacionado

Similar a DUG Bilbao Feb 2014 resumen

Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdLuis Jherry
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Luis Jherry
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Julián Castiblanco
 
Optimizacion De Consultas
Optimizacion De ConsultasOptimizacion De Consultas
Optimizacion De ConsultasOto Tumax
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdLuis Jherry
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Luis Jherry
 
SQL Server rápido y furioso
SQL Server rápido y furiosoSQL Server rápido y furioso
SQL Server rápido y furiosoSpanishPASSVC
 
Manual basico del_lenguaje_sql
Manual basico del_lenguaje_sqlManual basico del_lenguaje_sql
Manual basico del_lenguaje_sqlTomas Castle
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebsricardosusa5
 
Libro de recetas.pptx
Libro de recetas.pptxLibro de recetas.pptx
Libro de recetas.pptxEugenio764166
 
Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012SolidQ
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionSergio Perez
 

Similar a DUG Bilbao Feb 2014 resumen (20)

Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bd
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2
 
Pres17BDII.ppt
Pres17BDII.pptPres17BDII.ppt
Pres17BDII.ppt
 
Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2Database fundamental itprosdc_chapter2
Database fundamental itprosdc_chapter2
 
Optimizacion De Consultas
Optimizacion De ConsultasOptimizacion De Consultas
Optimizacion De Consultas
 
Diseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bdDiseño físico y rendimiento de la bd
Diseño físico y rendimiento de la bd
 
Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2Diseño físico y rendimiento de la bd2
Diseño físico y rendimiento de la bd2
 
Lenguaje Transact sql
Lenguaje Transact sqlLenguaje Transact sql
Lenguaje Transact sql
 
Ti. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.ConsultasTi. Sql.Caso1al9.Consultas
Ti. Sql.Caso1al9.Consultas
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
SQL Server rápido y furioso
SQL Server rápido y furiosoSQL Server rápido y furioso
SQL Server rápido y furioso
 
Manual basico del_lenguaje_sql
Manual basico del_lenguaje_sqlManual basico del_lenguaje_sql
Manual basico del_lenguaje_sql
 
Afinamientodebasesdedatosyservidoreswebs
AfinamientodebasesdedatosyservidoreswebsAfinamientodebasesdedatosyservidoreswebs
Afinamientodebasesdedatosyservidoreswebs
 
Presentación sql
Presentación sqlPresentación sql
Presentación sql
 
Libro de recetas.pptx
Libro de recetas.pptxLibro de recetas.pptx
Libro de recetas.pptx
 
Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012Indices columnares | SolidQ Summit 2012
Indices columnares | SolidQ Summit 2012
 
Tuning fondo-negro-2
Tuning fondo-negro-2Tuning fondo-negro-2
Tuning fondo-negro-2
 
Sql
SqlSql
Sql
 
Manejo De Sentencias De Definicion
Manejo De Sentencias De DefinicionManejo De Sentencias De Definicion
Manejo De Sentencias De Definicion
 
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
 

Más de northspainsalesforcedevelopergroup

Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoCSalesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoCnorthspainsalesforcedevelopergroup
 
Salesforce Elevate - Bilbao '17 - Process automation with and without code
Salesforce Elevate - Bilbao '17 - Process automation with and without codeSalesforce Elevate - Bilbao '17 - Process automation with and without code
Salesforce Elevate - Bilbao '17 - Process automation with and without codenorthspainsalesforcedevelopergroup
 
Salesforce Elevate - Bilbao '17 - Introducción FinancialForce
Salesforce Elevate - Bilbao '17 - Introducción FinancialForceSalesforce Elevate - Bilbao '17 - Introducción FinancialForce
Salesforce Elevate - Bilbao '17 - Introducción FinancialForcenorthspainsalesforcedevelopergroup
 
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForceSalesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForcenorthspainsalesforcedevelopergroup
 

Más de northspainsalesforcedevelopergroup (20)

17th Salesforce Developer Group meeting in Bilbao
17th Salesforce Developer Group meeting in Bilbao17th Salesforce Developer Group meeting in Bilbao
17th Salesforce Developer Group meeting in Bilbao
 
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoCSalesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
Salesforce Elevate - Bilbao '17 - Separación de Conceptos - SoC
 
Salesforce Elevate - Bilbao '17 - Process automation with and without code
Salesforce Elevate - Bilbao '17 - Process automation with and without codeSalesforce Elevate - Bilbao '17 - Process automation with and without code
Salesforce Elevate - Bilbao '17 - Process automation with and without code
 
Salesforce Elevate - Bilbao '17 - Introducción FinancialForce
Salesforce Elevate - Bilbao '17 - Introducción FinancialForceSalesforce Elevate - Bilbao '17 - Introducción FinancialForce
Salesforce Elevate - Bilbao '17 - Introducción FinancialForce
 
Salesforce Elevate - Bilbao '17 - Introducción NTS
Salesforce Elevate - Bilbao '17 - Introducción NTSSalesforce Elevate - Bilbao '17 - Introducción NTS
Salesforce Elevate - Bilbao '17 - Introducción NTS
 
Salesforce Elevate - Bilbao '17 - Chatbot y Salesforce
Salesforce Elevate - Bilbao '17 - Chatbot y SalesforceSalesforce Elevate - Bilbao '17 - Chatbot y Salesforce
Salesforce Elevate - Bilbao '17 - Chatbot y Salesforce
 
Salesforce Elevate - Bilbao '17 - Introducción Salesforce
Salesforce Elevate - Bilbao '17 - Introducción SalesforceSalesforce Elevate - Bilbao '17 - Introducción Salesforce
Salesforce Elevate - Bilbao '17 - Introducción Salesforce
 
14th Salesforce Developer Group meeting in Bilbao
14th Salesforce Developer Group meeting in Bilbao14th Salesforce Developer Group meeting in Bilbao
14th Salesforce Developer Group meeting in Bilbao
 
12th Salesforce Developer Group meeting in Bilbao
12th Salesforce Developer Group meeting in Bilbao12th Salesforce Developer Group meeting in Bilbao
12th Salesforce Developer Group meeting in Bilbao
 
13th Salesforce Developer Group meeting in Bilbao
13th Salesforce Developer Group meeting in Bilbao13th Salesforce Developer Group meeting in Bilbao
13th Salesforce Developer Group meeting in Bilbao
 
11th Salesforce Developer Group meeting in Bilbao
11th Salesforce Developer Group meeting in Bilbao11th Salesforce Developer Group meeting in Bilbao
11th Salesforce Developer Group meeting in Bilbao
 
9th Salesforce Developer Group meeting in Bilbao
9th Salesforce Developer Group meeting in Bilbao9th Salesforce Developer Group meeting in Bilbao
9th Salesforce Developer Group meeting in Bilbao
 
8th Salesforce Developer Group meeting in Bilbao
8th Salesforce Developer Group meeting in Bilbao8th Salesforce Developer Group meeting in Bilbao
8th Salesforce Developer Group meeting in Bilbao
 
6th Salesforce Developer Group - Bilbao
6th Salesforce Developer Group - Bilbao6th Salesforce Developer Group - Bilbao
6th Salesforce Developer Group - Bilbao
 
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForceSalesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
Salesforce Bilbao Elevate 2015 - Presentación principal y FinancialForce
 
Salesforce Elevate Bilbao 2015 - Desuto Presentación
Salesforce Elevate Bilbao 2015 - Desuto PresentaciónSalesforce Elevate Bilbao 2015 - Desuto Presentación
Salesforce Elevate Bilbao 2015 - Desuto Presentación
 
Salesforce Bilbao Elevate 2015 - Nts cloud computing y sfdc
Salesforce Bilbao Elevate 2015 - Nts cloud computing y sfdcSalesforce Bilbao Elevate 2015 - Nts cloud computing y sfdc
Salesforce Bilbao Elevate 2015 - Nts cloud computing y sfdc
 
Salesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshopSalesforce Bilbao Elevate '15 - 4th developer workshop
Salesforce Bilbao Elevate '15 - 4th developer workshop
 
Salesforce Bilbao Elevate '15 - 2nd developer workshop
Salesforce Bilbao Elevate '15 - 2nd developer workshopSalesforce Bilbao Elevate '15 - 2nd developer workshop
Salesforce Bilbao Elevate '15 - 2nd developer workshop
 
Salesforce Bilbao Elevate '15 - 1st developer workshop
Salesforce Bilbao Elevate '15 - 1st developer workshopSalesforce Bilbao Elevate '15 - 1st developer workshop
Salesforce Bilbao Elevate '15 - 1st developer workshop
 

Último

3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdfRicardoRomeroUrbano
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendioseduardochavezg1
 
AVANCE EXPEDIENTE TECNICO POROTO - TRUJILLO
AVANCE EXPEDIENTE TECNICO POROTO - TRUJILLOAVANCE EXPEDIENTE TECNICO POROTO - TRUJILLO
AVANCE EXPEDIENTE TECNICO POROTO - TRUJILLOSANTOSESTANISLAORODR
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptxTEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptxYEDSONJACINTOBUSTAMA
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRyanimarca23
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxEtse9
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresSegundo Silva Maguiña
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxHarryArmandoLazaroBa
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfSandXmovex
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 

Último (20)

3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
 
Uso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendiosUso y Manejo de Extintores Lucha contra incendios
Uso y Manejo de Extintores Lucha contra incendios
 
AVANCE EXPEDIENTE TECNICO POROTO - TRUJILLO
AVANCE EXPEDIENTE TECNICO POROTO - TRUJILLOAVANCE EXPEDIENTE TECNICO POROTO - TRUJILLO
AVANCE EXPEDIENTE TECNICO POROTO - TRUJILLO
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptxTEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
TEC-SEMANA 9-GRUPO1 SENATI SEGURIDAD Y PREVENCIÓN DE RIESGOS.pptx
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptx
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y Vectores
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
Diagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptxDiagrama de flujo metalurgia del cobre..pptx
Diagrama de flujo metalurgia del cobre..pptx
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdfManual de Usuario Estacion total Sokkia SERIE SET10K.pdf
Manual de Usuario Estacion total Sokkia SERIE SET10K.pdf
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 

DUG Bilbao Feb 2014 resumen

  • 1. DEVELOPER USER GROUP Bilbao, 7 de Febrero, 2014
  • 2. BIENVENIDOS!!!  ¿Qué es DUG?  Es nuestra segunda reunión  ¿Qué fue lo que más nos gustó?  ¿Qué cambiaríamos?
  • 4. SOQL PARA GRANDES VOLÚMENES DE DATOS Jesús González @bit0211
  • 5. SOQL PARA GRANDES VOLÚMENES DE DATOS  Introducción  Conceptos base.  ¿Cómo optimizamos nuestras SOQL’s?  Campos indizados  Umbral selectivo  Conclusiones  Query Optimization – Recursos  Recursos Adicionales * Query Resource Feedback Parameter – Pilot
  • 6. INTRODUCCIÓN  Construimos un proceso que tratará cualquier número de registros (más de 50 millones)  Heap Size  Disminuir scope (inviable)   Refactorización  Code statements / Time limit   Refactorización (proceso perfect!)  A pesar de que la cláusula SOQL tenía un ORDER BY comportamiento extraño en el encadenamiento entre de batchs.   Quitamos el order by   Refactorización  ORA 1013 – La pesadilla. Ya en Blueray y DVD  Query >2 minutos de procesamiento
  • 7. CONCEPTOS BASE.  Multitenant architecture. Una única solución de software para todos los “tenants”.  Se mantienen estructuras de BD virtuales y pivot tables  Técnicas de rendimiento tradicionales no hacen efecto.  La tabla subyacente no es apropiada para ser indizada.  Salesforce Query Optimizer (SQO).  Ayudan a determinar el mejor plan de ejecución basado en los índices de la condición de la query, estadísticas de ejecución, generan tablas de índices, …  Las dynamic pre-queries determinarán si se utiliza el valor en “caché” o se consultará a la base de datos directamente. Ejemplo (*Account_Type  custom index): SELECT * from Account WHERE Account_Type=‘Large’
  • 8. ¿CÓMO OPTIMIZAMOS NUESTRAS SOQL’S?  Utilizando campos que estén indizados SELECT Id from Account WHERE CreatedDate > 2013-01-01T00:00:00Z  Reduciendo el número de registros que recuperamos (30% para 1mill + 10% para el resto)  Evitando procesamiento de la BD:  No usando fórmulas SELECT id, Date1__c FROM Account WHERE IsValidDate__c = true  No consultando valores nulos SELECT id FROM Account WHERE ShippingAddress__c = null  No usando comodines en los textos % SELECT id FROM Account WHERE Name LIKE ‘%Acme%’  Solicitando custom indexes (Customer support) SELECT id FROM Account WHERE Type__c = ‘Vendor’
  • 9. CAMPOS INDIZADOS  Standard Fields indizados en todos los objetos  Id  Name  OwnerId  CreatedDate  SystemModstamp  RecordType  Siempre indizado para los objetos que usen esta propiedad  Master-detail fields  Lookup fields  Otros campos indizados  Unique fields  External ID fields  **Custom indexes
  • 10. UMBRAL SELECTIVO  Condición unaria:  Standard index  <30% sobre el primer millón de registros  <15% del total después del 1er millón  <1millón de registros  Custom index  <10% sobre el primer millón  <5% del total después del 1er millón  <333,333 en total  Compuestas  AND:  <2 veces el umbral de cada filtro  < umbral por intersección de campos
  • 11. UMBRAL SELECTIVO (2)  Compuestas (continuación)  OR:  < El umbral de cada uno de los filtros  < El umbral de la suma de los campos  LIKE:  Para las condiciones que no comiencen con un comodín (%) Force.com comprueba los primeros 100,000 registros.
  • 12. EJEMPLO DE UMBRAL  Si tenemos 1 millón de casos (con un custom index en el campo Status) repartidos así: [SELECT id FROM Case WHERE Status != ‘Closed’] No usa índice y además está por encima del umbral. [SELECT id FROM Case WHERE Status IN (‘New’, ‘On Hold’, ‘Pending’, ‘ReOpened’)] Está dentro del umbral Estado de los casos Número de registros en BD New 50,000 Closed 880,000 On Hold 20,000 Pending 30,000 ReOpened 20,000
  • 13. EXCEPCIONES SELECTIVAS  Excepciones en los que las queries son no selectivas y por lo tanto no usan índices  Condiciones con:  Filtros negativos: !=, NOT LIKE, EXCLUDES  Comparación de textos: text_field [< | > | <= | >=]  Comodines: LIKE ‘%string%’  Referencias a fórmulas no deterministas: Cross-object formula fields, dependientes del tiempo,…  Campos con valores nulos
  • 14. CONCLUSIONES  No hacer consultas dentro de bucles para reducir el tiempo y evitar errores de governador  Si podemos, no almacenar los datos en variables, usar for loops.  Si nuestra query no hace uso de índices o no cumple el umbral de selectividad, pensar en qué es más costoso en nuestra query:  ORDER BY  Queries sobre null realizan un “full table scan”.  Filtrar sobre fórmulas (se calculan en tiempo de ejecución) vs descomponer en un conjunto de filtros  Recuperar la mínima información posible  Limitar una query casi no reduce el coste de ejecutar la query  El uso de IN es tratado como un conjunto de igualdades
  • 15. QUERY OPTIMIZATION – RECURSOS  Query search optimization cheat sheet.  http://s3.amazonaws.com/dfc-wiki/en/images/0/0e/Db-query-search- optimization-cheat-sheet.pdf  Large data volumes best practices (Winter’12). Muy interesante: underlaying concepts.  http://www.salesforce.com/us/developer/docs/ldv/salesforce_large_data_ volumes_bp.pdf  Consideraciones sobre los campos nulos y las fórmulas en las queries.  http://blogs.developerforce.com/engineering/2013/02/force-com-soql- best-practices-nulls-and-formula-fields.html  Publicaciones de MVP’s (recomiendo el primero)  http://blogs.developerforce.com/engineering/2013/07/maximizing-the- performance-of-force-com-soql-reports-and-list-views.html  http://blogs.developerforce.com/engineering/2013/09/collecting- selectivity-statistics-for-force-com-queries.html  http://blogs.developerforce.com/engineering/2013/03/force-com-formula- fields-indexes-and-performance-gotchas.html
  • 16. RECURSOS ADICIONALES  Herramientas  http://wiki.developerforce.com/page/A_Guide_to_Applic ation_Performance_Profiling_in_Force.com  “White paper” Guía oficial para los “arquitectos” de las aplicaciones escrita por Salesforce.  http://wiki.developerforce.com/page/Best_Practices_for _Deployments_with_Large_Data_Volumes  Query Resource Feedback Parameter – Pilot  https://eu2.salesforce.com/help/pdfs/en/salesforce_spri ng14_release_notes.pdf - página 284
  • 18. GRACIAS!! NOS VEMOS EN EL PRÓXIMO DUG