Optimización del rendimiento del almacén de datos: optimización de inclinación: optimización de sugerencias para la inclinación del cálculo de expresión

Este artículo se comparte desde la comunidad en la nube de Huawei " Ajuste de rendimiento de GaussDB (DWS): optimización de sesgo - Optimización de sugerencias de sesgo de cálculo de expresión ", autor: Ge Li Ge.

1. SQL sin procesar

SELECCIONE 

TMP4.TAX_AMT, 

CATE.L1_PUR_ITEM_CATG_CN_NAME || '-' || 

CATE.L2_PUR_ITEM_CATG_CN_NAME || '-' || 

CATE.L3_PUR_ITEM_CATG_CN_NAME AS PRODUCT_CATEGORY, 

MATE.ITEM_CODE AS PRODUCT_CODE, 

INVENTORY_ORG_NAME, 

TMP4.INVOICE_WITHHOLDING_TAX_GROUP, 

TMP4.PAYMENT_THHOLDING_TAX_GROUP , 

TMP4.PO_CHARGE_ACCOUNT_CODE 

, TMP4.CFS_INVOICE_NUMBER, 

A PR.TAX_INVOICE_DATE 

DE DWLTAX.DWL_TAX_TAXDP_ERP_AP_INVOICE_TMP5 TMP4, 

DWRDIM_DW1.DWR_DIM_PUR_ITEM_CATEGORY_D CATE, 

DWRDIM_DW1.DWR_DIM_MATERIAL_CODE_D MATE , 

DWRDIM_DW1.DWR_DIM_INVENTORY_ORG_D INVEN, 

DWTAXDI.DWI_AP_INVOICE_I AP, 

DWTAXDI.DWI_AP_INVOICE_REGSTN_I APR 

DONDE 1 = 1

AND TMP4.ITEM_CATEGORY_KEY = CATE.PUR_ITEM_CATG_KEY(+) 

AND CATE.DEL_FLAG(+) = 'N' 

AND TMP4.ITEM_ID = MATE.ITEM_ID(+) 

AND MATE.DEL_FLAG(+) = 'N' 

AND TMP4.PO_SHIPMENT_TARGET_INV_ORG_KEY = INVEN .INVENTORY_ORG_KEY(+) 

AND INVEN.DEL_FLAG(+) = 'N' 

AND TMP4.AP_INVOICE_ID = AP.AP_INVOICE_ID(+) 

AND 6600 || AP.ATTRIBUTE1 = TO_CHAR(APR.AP_INVOICE_REGSTN_ID(+))

Ejecute el rendimiento, consulte el estado de ejecución específico y la información de autodiagnóstico de SQL (consulte el archivo adjunto caso-paso1-información de ejecución original.txt para obtener más detalles)

identificación | operación | tiempo A | A-filas | E-filas | E-distinto | Memoria máxima | E-memoria | ancho A | ancho E | E-costos 

----+------------------------------------------ -------------------------------------------------- ----------+------------------------+-------------+- -----------+------------+----------------+-------- ---------+-----------+---------+------------------ 

1 | -> Adaptador de fila | 69922.773 | 69237018 | 69237018 | | 87KB | | | 573 | 15160857.61 

2 | -> Vector Streaming (tipo: GATHER) | 65581.989 | 69237018 | 69237018 | | 536 KB | | | 573 | 15160857.61 

3 | -> Vector Hash Right Join (4, 6) | [61186.201, 73129.055] | 69237018 | 69237018 | | [306 MB, 682 MB] | 1113 MB (9990 MB) | | 573 | 15159431.83

4 | -> Vector Streaming (tipo: BROADCAST ng: LC_DL1->LC_DW1) | [554.217, 21008.078] | 1382000544 | 1381572384 | 282184 | [4 MB, 4 MB] | 3 MB | | 16 | 7056095.88 

5 | -> Exploración de CStore en dwifin.dwi_ap_invoice_regstn s | [5.354, 11.617] | 28791678 | 28782758 | | [1 MB, 1 MB] | 1 MB | | 16 | 28004.18 

6 | -> Vector Hash Left Join (7, 19) | [1728.008, 2017.488] | 69237018 | 69237018 | 79721 | [834 KB, 834 KB] | 16 MB | [229,252] | 578 | 1832322.90 

7 | -> Vector Hash Left Join (8, 17) | [1428.799, 1925.653] | 69237018 | 69237018 | 179 | [32 MB, 32 MB] | 28 MB (8901 MB) | | 576 | 1817105.07 

8 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART ROUNDROBIN) | [996.780, 1635.826] | 69237018 | 69237018 | 4167 | [1 MB, 1 MB] | 2 MB | | 570 | 1788113.85

9 | -> Vector Hash Left Join (10, 14) | [1086.903, 1780.641] | 69237018 | 69237018 | | [173 MB, 174 MB] | 227 MB (9067 MB) | | 570 | 1304897.12 

10 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART ROUNDROBIN) | [153.628, 891.680] | 69237018 | 69237018 | 20271 | [1 MB, 1 MB] | 2 MB | | 567 | 847160.16 

11 | -> Vector Hash Left Join (12, 13) | [367.155, 465.821] | 69237018 | 69237018 | | [30 MB, 30 MB] | 22 MB (8896 MB) | | 567 | 363943.43 

12 | -> Exploración de CStore en dwltax.dwl_tax_taxdp_erp_ap_invoice_tmp5 tmp4 | [150.676, 178.827] | 69237018 | 69237018 | 526 | [4 MB, 4 MB] | 1 MB | | 553 | 340168.44 

13 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_pur_item_category_d cate | [14.549, 24.399] | 8228448 | 8228448 | 171426 | [2 MB, 2 MB] | 1 MB | [104,104] | 26 | 9056.99

14 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART BROADCAST ng: LC_DL1->LC_DW1) | [315.926, 339.782] | 117191217 | 117191170 | 2441483 | [1 MB, 1 MB] | 3 MB | [47,47] | 22 | 406136.10 

15 | -> Iterador de partición vectorial | [118.307, 151.248] | 117191170 | 117191170 | | [41 KB, 41 KB] | 1 MB | | 22 | 300641.93 

16 | -> Escaneo CStore particionado en dwifin.dwi_ap_invoice s | [86.557, 111.947] | 117191170 | 117191170 | | [6 MB, 6 MB] | 1 MB | | 22 | 300641.93 

17 | -> Vector Streaming (tipo: PARTE LOCAL PARTE BROADCAST) | [60.429, 99.381] | 15442613 | 15442566 | 321720 | [584 KB, 584 KB] | 2 MB | [58,58] | 19 | 49578.19 

18 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_material_code_d mate | [19.779, 33.206] | 15442566 | 15442566 | | [1 MB, 2 MB] | 1 MB | | 19 | 35704.02

19 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_inventory_org_d inven | [0,383, 0,739] | 135072 | 135072 | 2814 | [1 MB, 1 MB] | 1 MB | [53,53] | 14 | 2823.85 

Información de diagnóstico de SQL 

---------------------------------------------- ---------------------------------------------- 

Ejecutar información de diagnóstico 

PlanNode [4] Tabla grande en transmisión "Transmisión de vectores (tipo: BROADCAST ng: LC_DL1->LC_DW1)" 

Información de predicado (identificado por id de plan) 

-------------------- -------------------------------------------------- -------------------------------------------------- ------ 

3 --Vector Hash Right Join (4, 6) 

Hash Cond: (((numeric_out(s.ap_invoice_regstn_id))::variable de caracteres)::text = ('6600'::text || ( s.atributo1)::texto))

6 --Vector Hash Left Join (7, 19) 

Hash Cond: (tmp4.po_shipment_target_inv_org_key = inven.inventory_org_key) 

7 --Vector Hash Left Join (8, 17) 

Hash Cond: (tmp4.item_id = mate.item_id) 

Skew Join Optimizado por Estadística 

8 --Transmisión de vectores (tipo: PARTE REDISTRIBUIR PARTE ROUNDROBIN) 

Filtro sesgado (tipo: ROUNDROBIN): ((tmp4.item_id = (-999999)::numeric) OR (tmp4.item_id IS NULL)) 

9 -- Vector Hash Left Join (10, 14) 

Hash Cond: (tmp4.ap_invoice_id = s.ap_invoice_id) 

Skew Join Optimized by Statistic 

10 --Vector Streaming (type: PART REDISTRIBUTE PART ROUNDROBIN) 

Skew Filter (tipo: ROUNDROBIN): (tmp4. ap_invoice_id = 1001113812002::numeric) 

11 --Vector Hash Left Join (12, 13)

Hash Cond: (tmp4.item_category_key = cate.pur_item_catg_key) 

13 --CStore Scan on dwrdim_dw1.dwr_dim_pur_item_category_d cate 

Filter: ((cate.del_flag)::text = 'N'::text) 

Pushdown Predicate Filter: ((cate.del_flag) ::texto = 'N'::texto) 

14 --Streaming vectorial(tipo: PARTE REDISTRIBUTE PARTE BROADCAST ng: LC_DL1->LC_DW1) 

Filtro sesgado(tipo: BROADCAST): (s.ap_invoice_id = 1001113812002::numeric) 

15 --Vector Partition Iterator 

Iteraciones: 147 

16 --CStore particionado Scan en dwifin.dwi_ap_invoice s 

Particiones seleccionadas por Static Prune: 1..147 

17 --Transmisión de vectores (tipo: PART LOCAL PART BROADCAST) 

Filtro sesgado (tipo: BROADCAST): (compañero.item_id = (-999999)::numérico)

18 --CStore Scan en dwrdim_dw1.dwr_dim_material_code_d mate 

Filter: ((mate.del_flag)::text = 'N'::text) 

Pushdown Predicate Filter: ((mate.del_flag)::text = 'N'::text) 

19 --CStore Scan en dwrdim_dw1.dwr_dim_inventory_org_d inven 

Filter: ((inven.del_flag)::text = 'N'::text) 

Pushdown Predicate Filter: ((inven.del_flag)::text = 'N'::text)

2. Prohibición de la radiodifusión de grandes escuchas

Como se muestra en la sección anterior, el paso con id=4 es de hecho un gran conjunto de resultados (2879w elementos) que se ha transmitido, y el HashJoin subsiguiente con id=5 lleva mucho tiempo. Por lo tanto, se prohíbe la transmisión de dwifin.dwi_ap_invoice_regstn agregando una pista. El análisis encontró que la tabla dwifin.dwi_ap_invoice_regstn apareció cuando se expandió la vista apr, por lo que se agregó la siguiente información de sugerencia, donde

1. no merge (apr) es para evitar que se promueva la declaración en la vista apr, lo que resulta en la falla de la información de sugerencia

2. sin transmisión (apr) significa que apr tiene prohibido transmitir

EXPLIQUE el rendimiento 

SELECCIONE /*+ sin fusión (abr) sin transmisión (abr) */ 

TMP4.TAX_AMT, 

CATE.L1_PUR_ITEM_CATG_CN_NAME || '-' || 

CATE.L2_PUR_ITEM_CATG_CN_NAME || '-' || 

CATE.L3_PUR_ITEM_CATG_CN_NAME AS PRODUCT_CATEGORY, 

MATE.ITEM_CODE AS PRODUCT_CODE, 

INVENTORY_ORG_NAME, 

TMP4.INVOICE_WITHHOLDING_TAX_GROUP, 

TMP4.PAYMENT_THHOLDING_TAX_GROUP , 

TMP4.PO_CHARGE_ACCOUNT_CODE 

, TMP4.CFS_INVOICE_NUMBER, 

A PR.TAX_INVOICE_DATE 

DE DWLTAX.DWL_TAX_TAXDP_ERP_AP_INVOICE_TMP5 TMP4, 

DWRDIM_DW1.DWR_DIM_PUR_ITEM_CATEGORY_D CATE, 

DWRDIM_DW1.DWR_DIM_MATERIAL_CODE_D MATE , 

DWRDIM_DW1.DWR_DIM_INVENTORY_ORG_D INVEN, 

DWTAXDI.DWI_AP_INVOICE_I AP,

DWTAXDI.DWI_AP_INVOICE_REGSTN_I APR 

DONDE 1 = 1 

AND TMP4.ITEM_CATEGORY_KEY = CATE.PUR_ITEM_CATG_KEY(+) 

AND CATE.DEL_FLAG(+) = 'N' 

AND TMP4.ITEM_ID = MATE.ITEM_ID(+) 

AND MATE.DEL_FLAG(+) = ' N' 

AND TMP4.PO_SHIPMENT_TARGET_INV_ORG_KEY = INVEN.INVENTORY_ORG_KEY(+) 

AND INVEN.DEL_FLAG(+) = 'N' 

AND TMP4.AP_INVOICE_ID = AP.AP_INVOICE_ID(+) 

AND 6600 || AP.ATTRIBUTE1 = TO_CHAR(APR.AP_INVOICE_REGSTN_ID(+))

Obtenga la información de rendimiento de la declaración anterior (consulte la transmisión de tabla grande case-step2-prohibit adjunta.txt para obtener más detalles)

identificación | operación | tiempo A | A-filas | E-filas | E-distinto | Memoria pico | E-memoria | ancho A | ancho E | E-costos 

----+------------------------------------------ -------------------------------------------------- -------------+------------------------+----------------- +-----------+------------+-------+------- ---------+-----------+---------+------------------ 

1 | -> Adaptador de fila | 15685.781 | 69237018 | 69237018 | | 87KB | | | 573 | 33341721.22 

2 | -> Vector Streaming (tipo: GATHER) | 11361.740 | 69237018 | 69237018 | | 536 KB | | | 573 | 33341721.22 

3 | -> Vector Hash Left Join (4, 19) | [15269.267, 18985.791] | 69237018 | 69237018 | | [74 MB, 74 MB] | 101 MB (9984 MB) | | 573 | 33340295.43

4 | -> Transmisión de vectores (tipo: REDISTRIBUIR) | [4743.867, 18632.182] | 69237018 | 69237018 | 79721 | [1 MB, 2 MB] | 2 MB | | 578 | 29821930.76 

5 | -> Vector Hash Left Join (6, 18) | [1473.990, 15359.055] | 69237018 | 69237018 | | [866 KB, 898 KB] | 16 MB | | 578 | 1832322.90 

6 | -> Vector Hash Left Join (7, 16) | [1130.814, 15223.646] | 69237018 | 69237018 | 179 | [32 MB, 32 MB] | 28 MB (9923 MB) | | 576 | 1817105.07 

7 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART ROUNDROBIN) | [681.709, 14909.424] | 69237018 | 69237018 | 4167 | [1 MB, 1 MB] | 2 MB | | 570 | 1788113.85 

8 | -> Vector Hash Left Join (9, 13) | [1049.201, 12602.796] | 69237018 | 69237018 | | [173 MB, 174 MB] | 227 MB (10089 MB) | | 570 | 1304897.12

9 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART ROUNDROBIN) | [128.704, 11737.099] | 69237018 | 69237018 | 20271 | [1 MB, 1 MB] | 2 MB | | 567 | 847160.16 

10 | -> Vector Hash Left Join (11, 12) | [368.537, 443.623] | 69237018 | 69237018 | | [30 MB, 30 MB] | 22 MB (9918 MB) | | 567 | 363943.43 

11 | -> Exploración de CStore en dwltax.dwl_tax_taxdp_erp_ap_invoice_tmp5 tmp4 | [148.366, 175.347] | 69237018 | 69237018 | 526 | [4 MB, 4 MB] | 1 MB | | 553 | 340168.44 

12 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_pur_item_category_d cate | [13.319, 24.442] | 8228448 | 8228448 | 171426 | [2 MB, 2 MB] | 1 MB | [104,104] | 26 | 9056.99 

13 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART BROADCAST ng: LC_DL1->LC_DW1) | [242.053, 294.233] | 117191217 | 117191170 | 2441483 | [1 MB, 1 MB] | 3 MB | [47, 47] | 22 | 406136.10

14 | -> Iterador de partición vectorial | [118.124, 154.954] | 117191170 | 117191170 | | [41 KB, 41 KB] | 1 MB | | 22 | 300641.93 

15 | -> Escaneo CStore particionado en dwifin.dwi_ap_invoice s | [86.942, 105.441] | 117191170 | 117191170 | | [6 MB, 6 MB] | 1 MB | | 22 | 300641.93 

16 | -> Vector Streaming (tipo: PARTE LOCAL PARTE BROADCAST) | [83.793, 117.853] | 15442613 | 15442566 | 321720 | [584 KB, 584 KB] | 2 MB | [58,58] | 19 | 49578.19 

17 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_material_code_d mate | [21.898, 35.895] | 15442566 | 15442566 | | [1 MB, 2 MB] | 1 MB | | 19 | 35704.02 

18 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_inventory_org_d inven | [0,389, 0,661] | 135072 | 135072 | 2814 | [1 MB, 1 MB] | 1 MB | [53,53] | 14 | 2823.85

19 | -> Vector Streaming (tipo: REDISTRIBUTE ng: LC_DL1->LC_DW1) | [30.667, 49.474] | 28791678 | 28782758 | 599641 | [2 MB, 2 MB] | 3 MB | [75,75] | 16 | 56030.49 

20 | -> Escaneo de subconsultas vectoriales en abril | [42.087, 61.734] | 28791678 | 28782758 | | [376 KB, 376 KB] | 1 MB | | 16 | 30826.02 

21 | -> Exploración de CStore en dwifin.dwi_ap_invoice_regstn s | [5.177, 8.049] | 28791678 | 28782758 | | [1 MB, 1 MB] | 1 MB | | 16 | 28004.18 

Información de diagnóstico SQL 

---------------------------------------------- -------------------------------------------------- ---------- 

Ejecutar información de diagnóstico 

PlanNode[4] DataSkew:"Vector Streaming(type: REDISTRIBUTE)", min_dn_tuples:257082, max_dn_tuples:47206637 

Predicate Information (identificado por id del plan)

-------------------------------------------------- -------------------------------------------------- ------------------------------ 

3 --Vector Hash Left Join (4, 19) 

Hash Cond: ((('6600 '::text || (s.attribute1)::text)) = ((numeric_out(apr.ap_invoice_regstn_id))::variable de caracteres)::text) 

5 --Vector Hash Left Join (6, 18) 

Hash Cond: (tmp4.po_shipment_target_inv_org_key = inven.inventory_org_key) 

6 --Vector Hash Left Join (7, 16) 

Hash Cond: (tmp4.item_id = mate.item_id) 

Skew Join Optimized by Statistic 

7 --Vector Streaming(type: PART REDISTRIBUTE PART ROUNDROBIN ) 

Filtro sesgado (tipo: ROUNDROBIN): ((tmp4.item_id = (-999999)::numeric) OR (tmp4.item_id IS NULL)) 

8 --Vector Hash Left Join (9, 13)

Hash Cond: (tmp4.ap_invoice_id = s.ap_invoice_id) 

Skew Join Optimized by Statistic 

9 --Vector Streaming (type: PART REDISTRIBUTE PART ROUNDROBIN) 

Skew Filter (tipo: ROUNDROBIN): (tmp4.ap_invoice_id = 1001113812002::numeric) 

10 - -Vector Hash Left Join (11, 12) 

Hash Cond: (tmp4.item_category_key = cate.pur_item_catg_key) 

12 --CStore Scan on dwrdim_dw1.dwr_dim_pur_item_category_d cate 

Filter: ((cate.del_flag)::text = 'N'::text ) 

Filtro de predicado pushdown: ((cate.del_flag)::text = 'N'::text) 

13 --Transmisión de vectores (tipo: PART REDISTRIBUTE PART BROADCAST ng: LC_DL1->LC_DW1) 

Filtro sesgado (tipo: BROADCAST): ( s.ap_invoice_id = 1001113812002::numeric) 

14 --Vector Partition Iterator 

Iteraciones: 147

15 --Escaneo de CStore particionado en dwifin.dwi_ap_invoice s 

Particiones seleccionadas por Static Prune: 1..147 

16 --Transmisión de vectores (tipo: PART LOCAL PART BROADCAST) 

Filtro sesgado (tipo: BROADCAST): (mate.item_id = (-999999) ::numeric) 

17 --CStore Scan en dwrdim_dw1.dwr_dim_material_code_d filtro mate 

: ((mate.del_flag)::text = 'N'::text) 

Filtro de predicado pushdown: ((mate.del_flag)::text = 'N '::text) 

18 --CStore Scan en dwrdim_dw1.dwr_dim_inventory_org_d inven 

Filter: ((inven.del_flag)::text = 'N'::text) 

Pushdown Predicate Filter: ((inven.del_flag)::text = 'N '::texto)

3. La insinuación de la expresión tilt

Advertencia de pendiente encontrada en la información de autodiagnóstico

cke_176.png

Y el operador con Plan ID 4 es

cke_177.png

Entre ellos, s es la tabla expandida dwifin.dwi_ap_invoice de la vista dwtaxdi.dwi_ap_invoice_i.La información estadística de la columna atributo1 de esta tabla es la siguiente, y se encuentra que hay un sesgo grave en el valor NULL

cke_178.png

Debido a que la columna de redistribución es una expresión 6600 || AP.ATTRIBUTE1, la sugerencia inclinada actual de DWS no admite expresiones, porque hacemos las siguientes soluciones para implementar la sugerencia del valor inclinado de la expresión

SELECCIONAR /*+ sin fusión (apr) sin transmisión (apr) sin fusión (ap) sesgo (ap (attr1) ('6600')) */ TMP4.TAX_AMT, 

CATE.L1_PUR_ITEM_CATG_CN_NAME 

|| '-' || 

CATE.L2_PUR_ITEM_CATG_CN_NAME || '-' || 

CATE.L3_PUR_ITEM_CATG_CN_NAME AS PRODUCT_CATEGORY, 

MATE.ITEM_CODE AS PRODUCT_CODE, 

INVENTORY_ORG_NAME, 

TMP4.INVOICE_WITHHOLDING_TAX_GROUP, 

TMP4.PAYMENT_THHOLDING_TAX_GROUP , 

TMP4.PO_CHARGE_ACCOUNT_CODE 

, TMP4.CFS_INVOICE_NUMBER, 

A PR.TAX_INVOICE_DATE 

DE DWLTAX.DWL_TAX_TAXDP_ERP_AP_INVOICE_TMP5 TMP4, 

DWRDIM_DW1.DWR_DIM_PUR_ITEM_CATEGORY_D CATE, 

DWRDIM_DW1.DWR_DIM_MATERIAL_CODE_D MATE , 

DWRDIM_DW1.DWR_DIM_INVENTARIO_ORG_D INVENTARIO,

(SELECCIONE *, 6600 || AP.ATTRIBUTE1 COMO ATTR1 DE DWTAXDI.DWI_AP_INVOICE_I AP) AP, 

DWTAXDI.DWI_AP_INVOICE_REGSTN_I APR 

DONDE 1 = 1 

AND TMP4.ITEM_CATEGORY_KEY = CATE.PUR_ITEM_CATG_KEY(+) 

AND CATE.DEL_FLAG(+) = 'N' 

AND TMP4.ITEM_ID = MATE.ITEM_ID(+) 

AND MATE.DEL_FLAG(+) = 'N' 

AND TMP4.PO_SHIPMENT_TARGET_INV_ORG_KEY = INVEN.INVENTORY_ORG_KEY(+) 

AND INVEN.DEL_FLAG(+) = 'N' 

AND TMP4.AP_INVOICE_ID = AP .AP_INVOICE_ID(+) 

AND ATTR1 = TO_CHAR(APR.AP_INVOICE_REGSTN_ID(+))

que construye la subconsulta AP

SELECCIONAR *, 6600 || AP.ATTRIBUTE1 COMO ATTR1 DE DWTAXDI.DWI_AP_INVOICE_I AP

Coloque la expresión de columna asociada original en la subconsulta y luego asigne el nombre 6600 || AP.ATTRIBUTE1 como attr1.

En la consulta principal, primero prohíba la promoción de la subconsulta AP. Luego, en la consulta principal, hay un valor sesgado '6600' en la columna attr1 del conjunto de resultados de la subconsulta de sugerencia AP. Este valor de pendiente se calcula (NULL || 6600 = '6600'), y la expresión asociada en el cálculo asociado original es la siguiente, es decir, el resultado de 6600 || AP.ATTRIBUTE1 se convierte a tipo de texto (tipo de cadena)

cke_179.png

Obtenga el rendimiento de la nueva declaración de la siguiente manera (consulte el archivo adjunto case-step3-slant optimizacion.txt para obtener más detalles)

identificación | operación | tiempo A | A-filas | E-filas | E-distinto | Memoria pico | E-memoria | ancho A | ancho E | E-costos 

----+------------------------------------------ -------------------------------------------------- ----------+-----------------------+------------------+--- --------+------------+----------------+----------- -----+-----------+---------+------------------ 

1 | -> Adaptador de fila | 9045.793 | 69237018 | 69237018 | | 87KB | | | 573 | 2040755.71 

2 | -> Vector Streaming (tipo: GATHER) | 4842.656 | 69237018 | 69237018 | | 520 KB | | | 573 | 2040755.71 

3 | -> Vector Hash Left Join (4, 21) | [2673.707, 11389.688] | 69237018 | 69237018 | | [1 MB, 1 MB] | 16 MB | | 573 | 2039329.92

4 | -> Vector Hash Left Join (5, 19) | [1951.482, 10931.220] | 69237018 | 69237018 | 179 | [32 MB, 32 MB] | 28 MB (10018 MB) | | 571 | 2009687.71 

5 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART ROUNDROBIN) | [1541.777, 10591.702] | 69237018 | 69237018 | 4167 | [1 MB, 1 MB] | 2 MB | | 565 | 1980696.49 

6 | -> Vector Hash Left Join (7, 18) | [1703.438, 1980.655] | 69237018 | 69237018 | | [30 MB, 30 MB] | 22 MB (10010 MB) | | 565 | 1497479.76 

7 | -> Vector Hash Left Join (8, 10) | [1523.277, 1708.622] | 69237018 | 69237018 | 526 | [165 MB, 166 MB] | 191 MB (10151 MB) | | 551 | 1473704.77 

8 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART ROUNDROBIN) | [94.501, 203.619] | 69237018 | 69237018 | 20271 | [1 MB, 1 MB] | 2 MB | | 553 | 823385.17

9 | -> Exploración de CStore en dwltax.dwl_tax_taxdp_erp_ap_invoice_tmp5 tmp4 | [142.734, 171.486] | 69237018 | 69237018 | | [4 MB, 4 MB] | 1 MB | | 553 | 340168.44 

10 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART BROADCAST ng: LC_DL1->LC_DW1) | [811.192, 853.583] | 117191217 | 117191170 | 2441483 | [2 MB, 2 MB] | 3 MB | [44,44] | 17 | 598718.74 

11 | -> Vector Hash Left Join (12, 15) | [340.998, 790.399] | 117191170 | 117191170 | | [39 MB, 39 MB] | 27 MB (10015 MB) | | 17 | 493224.57 

12 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART ROUNDROBIN) | [53.170, 79.836] | 117191170 | 117191170 | 79721 | [2 MB, 2 MB] | 3 MB | | 41 | 412662.90 

13 | -> Iterador de partición vectorial | [145.450, 171.527] | 117191170 | 117191170 | | [41 KB, 41 KB] | 1 MB | | 22 | 303514.27

14 | -> Escaneo CStore particionado en dwifin.dwi_ap_invoice s | [112.099, 134.193] | 117191170 | 117191170 | | [6 MB, 6 MB] | 1 MB | | 22 | 300641.93 

15 | -> Vector Streaming (tipo: PART REDISTRIBUTE PART BROADCAST) | [48.632, 99.230] | 28791678 | 28782758 | 282184 | [2 MB, 2 MB] | 3 MB | [75,75] | 16 | 56928.04 

16 | -> Escaneo de subconsultas vectoriales en abril | [41.916, 78.189] | 28791678 | 28782758 | | [376 KB, 376 KB] | 1 MB | | 16 | 30826.02 

17 | -> Exploración de CStore en dwifin.dwi_ap_invoice_regstn s | [5.233, 10.667] | 28791678 | 28782758 | | [1 MB, 1 MB] | 1 MB | | 16 | 28004.18 

18 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_pur_item_category_d cate | [12.065, 20.667] | 8228448 | 8228448 | 171426 | [2 MB, 2 MB] | 1 MB | [104,104] | 26 | 9056.99

19 | -> Vector Streaming (tipo: PARTE LOCAL PARTE BROADCAST) | [67.272, 97.378] | 15442613 | 15442566 | 321720 | [584 KB, 584 KB] | 2 MB | [58,58] | 19 | 49578.19 

20 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_material_code_d mate | [18.605, 31.713] | 15442566 | 15442566 | | [1 MB, 2 MB] | 1 MB | | 19 | 35704.02 

21 | -> Exploración de CStore en dwrdim_dw1.dwr_dim_inventory_org_d inven | [0,378, 0,647] | 135072 | 135072 | 2814 | [1 MB, 1 MB] | 1 MB | [53,53] | 14 | 2823.85 

Información predicada (identificada por id del plan) 

----------------------------------------- -------------------------------------------------- --------------------------------------- 

3 --Vector Hash Left Join (4, 21 ) 

Hash Cond: (tmp4.po_shipment_target_inv_org_key = inven.inventory_org_key)

4 --Vector Hash Left Join (5, 19) 

Hash Cond: (tmp4.item_id = mate.item_id) 

Skew Join Optimized by Statistic 

5 --Vector Streaming (tipo: PARTE REDISTRIBUTE PART ROUNDROBIN) 

Filtro sesgado (tipo: ROUNDROBIN): ((tmp4.item_id = (-999999)::numeric) OR (tmp4.item_id IS NULL)) 

6 --Vector Hash Left Join (7, 18) 

Hash Cond: (tmp4.item_category_key = cate.pur_item_catg_key) 

7 -- Vector Hash Left Join (8, 10) 

Hash Cond: (tmp4.ap_invoice_id = s.ap_invoice_id) 

Skew Join Optimized by Statistic 

8 --Vector Streaming (tipo: PARTE REDISTRIBUTE PART ROUNDROBIN) 

Filtro sesgado (tipo: ROUNDROBIN): (tmp4. ap_invoice_id = 1001113812002::numérico)

10 --Streaming vectorial (tipo: PART REDISTRIBUTE PART BROADCAST ng: LC_DL1->LC_DW1) 

Filtro sesgado (tipo: BROADCAST): (s.ap_invoice_id = 1001113812002::numeric) 

11 --Vector Hash Left Join (12, 15) 

Hash Cond: ((('6600'::text || (s.attribute1)::text)) = ((numeric_out(apr.ap_invoice_regstn_id))::carácter variable)::text) Skew Join Optimized by Hint 

12 

-- Transmisión vectorial (tipo: PARTE REDISTRIBUIR PARTE ROUNDROBIN) 

Filtro sesgado (tipo: ROUNDROBIN): ((('6600'::text || (s.attribute1)::text)) = '6600'::text) 

13 -- Iterador de particiones vectoriales 

Iteraciones: 147 

14 --Escaneo de CStore particionado en dwifin.dwi_ap_invoice s 

Particiones seleccionadas por Static Prune: 1..147 

15 --Transmisión de vectores (tipo:PARTE REDISTRIBUCIÓN PARTE TRANSMISIÓN)

Filtro sesgado (tipo: BROADCAST): ((((numeric_out(apr.ap_invoice_regstn_id))::variable de caracteres)::text) = '6600'::text) 18 --CStore 

Scan en dwrdim_dw1.dwr_dim_pur_item_category_d cate 

Filter: (( cate.del_flag)::text = 'N'::text) 

Filtro de predicado pushdown: ((cate.del_flag)::text = 'N'::text) 

19 --Transmisión de vectores (tipo: PART LOCAL PART BROADCAST) 

Sesgo Filtro (tipo: BROADCAST): (mate.item_id = (-999999)::numeric) 

20 --CStore Scan on dwrdim_dw1.dwr_dim_material_code_d mate 

Filter: ((mate.del_flag)::text = 'N'::text) 

Pushdown Filtro de predicado: ((mate.del_flag)::text = 'N'::text) 

21 --CStore Scan on dwrdim_dw1.dwr_dim_inventory_org_d inven 

Filter: ((inven.del_flag)::text = 'N'::text)

Filtro de predicado pushdown: ((inven.del_flag)::text = 'N'::text)

Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud por primera vez~

Aclaración sobre MyBatis-Flex plagiando el navegador MyBatis-Plus Arc lanzado oficialmente 1.0, afirmando ser un reemplazo para Chrome OpenAI lanzó oficialmente la versión de Android ChatGPT VS Code optimizó la compresión de ofuscación de nombres, ¡reducción de JS incorporado en un 20%! LK-99: ¿El primer superconductor de temperatura y presión ambiente? Musk "compró por cero yuanes" y robó la cuenta de Twitter @x. El Comité Directivo de Python planea aceptar la propuesta PEP 703, haciendo que el bloqueo del intérprete global sea opcional . El número de visitas al software de código abierto y de captura de paquetes gratuito del sistema Stack Overflow ha disminuido significativamente, y Musk dijo que ha sido reemplazado por LLM
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10092215
Recomendado
Clasificación