La receta de la abuela para mejores cargas de datos
-
Upload
spanishpassvc -
Category
Technology
-
view
283 -
download
3
Transcript of La receta de la abuela para mejores cargas de datos
La receta de la abuela para mejores cargas de datos
Alejandro CorderoDatabase Consultant – Pythian Group
Correo electrónico: [email protected]: @ale_corderocrLinkedIn: https://cr.linkedin.com/in/alejandrocorderocrBLOG: Sqlturbo.comMCTS, CSM
2
Speaker Bio
Picture Here
Speaker Bio - Alejandro Cordero
2
SQLTURBO.COM
DBA en Pythian
Scrum Master Certified
3
Agenda
El papel de los modelos de recuperaciónOperaciones “Minimally logged”TraceFlag 610Importando con SSISImportando con BCPImportando con Bulk InsertImportando con Select Into / Insert .. SelectConclusiones de la abuela
3
4
Transacción Completa
4
1
3LOG
Data
OK
write-ahead logging (WAL)
sincrónico
2Transacción
Bitacora de transaccionesO transaction log
Archivo de datosO Data file
Modelos de Recuperación
• Full – Se guardan todas las operaciones.• Bulk-logged – Se guardan operaciones
excepto ciertas operaciones de carga de alto rendimiento.
• Simple – Solo guarda información temporalmente y son truncadas luego de un checkpoint.
5
Operaciones Minimally Logged
SSISBcpBULK INSERTINSERT... SELECTSelect into operations
5
6
Páginas y Extents de datos
Página de datos - 8 KB
Extent – unidad básica -8 páginas o 64kb
Las páginas pueden ser fully loggedO Minimally logged y en un Mixed extentEsto puede pasar para una página que sea De datos o de índices, significa que en unExtent mixto puedo tener también un Comportamiento Mixto, donde mis Páginas de datos son Minimally loggedPero las páginas de los índices son Fully logged.
El mejor escenario es cuandoLogro que mis páginas deDatos e índices sean Minimally logged.
7
Ingredientes para una carga de datos-Pre requisitos para operaciones ML-Base de datos en Simple/Bulk LoadLa tabla no esta siendo replicadaLa tabla es bloqueada por medio de un TABLOCKSi la tabla no tiene índices, las paginas de datos son “Minimally logged”Si la tabla no tiene índice Clustered y tiene índices Non Clustered las páginas de datos son “Minimally logged”, sin embargo las páginas de los índices serán ML solo si la tabla esta vacía
8
Ingredientes para una carga de datos-Pre requisitos para operaciones ML-Si la tabla tiene un índice clustered y está vacía ambas paginas de índice y de datos son Minimally logged. En contraste si la tabla no está vacía la operación será Fully Logged
Mejores Prácticas Para conservar tamaño: Trate de hacer varios bulk loadsen diferentes batches. Cada vez que termina un batchEl log puede ser limpiado por un transaction log backup cuando se está en bulk-logged mode.
PéroEl primer batch será Minimally logged…..los demás seránMixtos o Full.
9
Traceflag 610 – el Ingrediente secreto
Cuando se usa este traceflag se habilita la posibilidadDe hacer operaciones minimally loggedSobre índices B-tree, los árboles B, son el algoritmo usado por SQL Server en sus índices.De esta forma podrémos tener operaciones ML sobre Índices clustered llenos . Con ciertas excepciones. Solo cuando el dato se guarda sobre una página nueva y no dentro de una existente, este va a ser ML.
non-FULL recovery modelAND NOT replicatedAND ( (Heap AND TABLOCK) OR (B-tree AND empty AND TABLOCK) OR (B-tree AND empty AND TF-610) OR (B-tree AND nonempty AND TF-610 AND NEW key-range)
Mejores Prácticas : cuando se usa el t610Usar el batchsize más grande posible
DBCC TRACEON (610, -1);
Revisando Page Allocations
11
Cuando se hace una operación Minimally Logged
Table Indexes Rows in table Hints Without TF 610 With TF 610 Concurrent possible
Heap Any TABLOCK Minimal Minimal Yes
Heap Any None Full Full YesHeap + Index Any TABLOCK Full Depends (3) NoCluster Empty TABLOCK, ORDER
(1)Minimal Minimal No
Cluster Empty None Full Minimal Yes (2)Cluster Any None Full Minimal Yes (2)Cluster Any TABLOCK Full Minimal NoCluster + Index Any None Full Depends (3) Yes (2)Cluster + Index Any TABLOCK Full Depends (3) No
12
El plato Principal – la carga de datos
SSISBCPBULK INSERTSELECT INTOINSERT SELECT
Comparativa de Rendimiento entre las 5 recetasSSISBCPBULK INSERTSELECT INTOINSERT SELECT
14
ResumenFunctionality Integration Services BULK INSERT BCP INSERT … SELECT
SQL Dest. OLE DB Dest
Protocol Shared Memory TCP/IPNamed Pipes
In Memory TCP/IPShared MemoryNamed Pipes
In Memory
Speed Faster / Fastest(4) Fast / Fastest (1) Fastest Fast Slow / Fastest (2)
Data Source Any Any Data File Only Data File Only Any OLE DB
Bulk API Support Not Native Not ORDERNot Native
All All No Hints Allowed
Lock taken with TABLOCK hint on heap
BU BU BU BU X
Can transform in transit
Yes Yes No No Yes
I/O Read block Size
Depends(3) Depends(3) 64 kilobytes (KB) 64 KB Up to 512 KB
SQL Server Version
2005 and 2008 2005 and 2008 7.0, 2000, 2005, and 2008
6.0, 7.0, 2000, 2005, and 2008
2008
Invoked from DTEXEC / BIDS DTEXEC / BIDS Transact-SQL Command Line Transact-SQL
Cargas de datos simultaneas
16
Conclusiones
Usar Traceflag 610 – Pero, probar primero!Usar SSIS o bulk Insert de preferenciaTomar en cuenta espacio necesario para el crecimientoTomar en cuenta el modelo de recuperaciónTomar en cuenta CPU disponiblesTomar en cuenta si tengo trasaction logs corriendo.
Preguntas?
Correo electrónico: [email protected]: @ale_corderocrLinkedIn: https://cr.linkedin.com/in/alejandrocorderocrBLOG: Sqlturbo.comMCTS, CSM
Thank You for AttendingFollow @pass24hop
Share your thoughts with hashtags #pass24hop & #sqlpass