Recoge las estadísticas de las tablas virtualizadas en Data Virtualization. El optimizador de Data Virtualization utiliza estas estadísticas para determinar los planes de acceso óptimos para procesar sus consultas de forma eficiente. El esquema es DVSYS
.
Con más estadísticas de tabla, el optimizador puede tomar mejores decisiones para proporcionar los mejores planes de acceso posibles. Cuando ejecuta COLLECT_STATISTICS
en una tabla, las consultas posteriores en esa tabla normalmente se ejecutan mucho más rápido. Para obtener más información, consulte Recopilación de estadísticas en Data Virtualization.
COLLECT_STATISTICS
) para recopilar estadísticas sobre tablas virtualizadas en el almacenamiento de objetos. Para obtener más información, consulte Mandato ANALYZE. Para determinar qué tablas virtualizadas se crean sobre el almacenamiento de objetos, puede filtrar los objetos virtualizados por tipo. Seleccione Object Storage, Tablao Ver en el menú Filtro en .Autorización
Para ejecutar el procedimiento " COLLECT_STATISTICS
", debe ser Administrador o Ingeniero Data Virtualization. Para obtener más información, consulte Administración de funciones para usuarios en Data Virtualization.
Para recopilar estadísticas, debe tener la autorización adecuada en la fuente de datos remota y en Data Virtualization. .
Parámetros de entrada
- virtschema
- El tipo de este parámetro necesario es VARCHAR(128). Especifica el nombre de esquema de la tabla virtualizada.
- virtname
- El tipo de este parámetro necesario es VARCHAR(128). Especifica el nombre de la tabla virtualizada.
- virtcolumns
- El tipo de este parámetro opcional es VARCHAR(32672). Especifica una lista separada por comas de nombres de las columnas para las que se van a recopilar estadísticas. Un valor nulo especifica que se deben recopilar estadísticas para todas las columnas. Una serie vacía especifica que no se van a recopilar estadísticas de columna. En este caso, solo se recopila la cardinalidad de tabla. Si un nombre de columna incluye caracteres especiales, el nombre debe ir entre comillas dobles.
- collection_type
- El tipo de este parámetro necesario es SMALLINT. Especifica el tipo de recopilación de estadísticas. Los valores válidos son 1 (tiporemote-catalog ) y 2 (tiporemote-query ):
- remote-catalog
- Este tipo de recopilación de estadísticas solo está soportado para las tablas virtualizadas en los orígenes de datos remotos que dan soporte a un método local de recopilación de estadísticas. Las estadísticas almacenadas en las tablas del catálogo de la fuente de datos remota se recuperan y se almacenan en el catálogo de estadísticas Data Virtualization.Es fundamental asegurarse de que las estadísticas precisas estén disponibles en el origen de datos remoto. El tipo remote-catalog de recopilación de estadísticas no está soportado para las tablas agrupadas.
- remote-query
- Este tipo de recopilación de estadísticas utiliza consultas SQL en la tabla virtualizada para calcular las estadísticas.Este tipo puede utilizar muchos recursos y tardar mucho tiempo en completarse si la tabla virtualizada tiene muchas filas o se recopilan estadísticas para muchas columnas. Para mejorar el rendimiento y conservar los recursos, puede recopilar estadísticas con muestreo de datos especificando la opción TABLESAMPLE en el procedimiento almacenado COLLECT_STATISTICS en Data Virtualization o utilizar el comando ' ANALYZE para fuentes de datos en almacenamiento de objetos en la nube.
- options
- El tipo de este parámetro opcional es VARCHAR(32672). Especifica una lista delimitada por comas de parámetros adicionales.
- TABLESAMPLE
- Especifica un valor doble entre 0 y 99 inclusive. El valor representa el porcentaje de la tabla que se va a muestrear al calcular las estadísticas. El valor predeterminado de 0 especifica que no se debe realizar ningún muestreo. Esta opción sólo es válida con el tipo de recopilación de estadísticas remote-query .
- UMBRAL de muestreo
- Especifica un valor entero mayor que 0. El valor representa el número mínimo de filas que un origen de datos debe contener antes de que se pueda utilizar el muestreo (si se especifica). El valor predeterminado es 1000. Si el número de filas es menor que este umbral, el muestreo no se utiliza cuando se calculan las estadísticas de columna. Esta opción sólo es válida con el tipo de recopilación de estadísticas remote-query .
Parámetros de salida
- diagnósticos
- El tipo de este parámetro es VARCHAR(32672). Representa la salida de diagnóstico si se produce una anomalía y se genera un resumen de las estadísticas recopiladas con resultados abreviados.
Notas de uso
- Ejecute el procedimiento COLLECT_STATISTICS directamente o a través del cliente web Data Virtualization siempre que realice cambios significativos en los datos del origen de datos remoto.
- Si un nombre de columna incluye caracteres especiales, el nombre debe ir entre comillas dobles.
- Si el origen de datos remoto da soporte a herramientas para recopilar estadísticas locales, asegúrese de que se recopilen las estadísticas locales y de que se utilice el tipo remote-catalog para recopilar estadísticas en la tabla virtualizada.
- Si el origen de datos remoto no da soporte a herramientas para recopilar estadísticas locales, el tipo remote-query es la única opción disponible. Si la tabla virtualizada tiene muchas filas, utilice la opción TABLESAMPLE. En la mayoría de los casos se recomienda una tasa de muestreo del 20%.
- Si no especifica la opción TABLESAMPLE, la opción SAMPLING_THRESHOLD no tiene ningún efecto.
- Si especifica la opción TABLESAMPLE y el número de filas de la tabla virtualizada es menor que SAMPLING_THRESHOLD (valor predeterminado 1000), el muestreo no se produce porque las estadísticas resultantes serían subóptimas.
- Cuando se especifica la opción TABLESAMPLE, la recopilación de estadísticas puede ser subóptima si la frecuencia de muestreo es demasiado baja. Sin embargo, el aumento de la tasa de muestreo consumirá más recursos y reducirá el rendimiento de la recopilación de estadísticas.
- Cuando se especifica la opción TABLESAMPLE, la recopilación de estadísticas puede ser subóptima si la tabla virtualizada tiene un número limitado de filas. En este caso, aumente el valor TABLESAMPLE o no muestree los datos.
- Si la tabla virtualizada hace referencia a una vista en el origen de datos remoto, el tipo remote-query es la única opción disponible y la opción TABLESAMPLE no está soportada.
- Si especifica la opción TABLESAMPLE con una frecuencia de muestreo cercana a 100, pero la recopilación de estadísticas sigue siendo subóptima, considere la posibilidad de cambiar el valor SAMPLING_THRESHOLD.
- Solo se recopila la estadística NUMNULLS para las columnas de tipo LOB.
Ejemplos
Los ejemplos siguientes utilizan tablas virtualizadas sobre tablas que forman parte de la base de datos SAMPLE en IBM Db2®. Para obtener más información, consulte La base de datos SAMPLE.
- Utilice el tipo remote-catalog para recopilar estadísticas para todas las columnas de la tabla DEPARTMENT.
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Column "LOCATION" [CHAR(16)]: colcard=1, numnulls=14, highkey="", lowkey="" Column "ADMRDEPT" [CHAR(3)]: colcard=3, numnulls=0, highkey="E01", lowkey="A00" Column "DEPTNAME" [VARCHAR(36)]: colcard=14, numnulls=0, highkey="SPIFFY COMPUTER SERVICE DIV.", lowkey="BRANCH OFFICE F2" Column "MGRNO" [CHAR(6)]: colcard=9, numnulls=6, highkey="000100", lowkey="000020" Column "DEPTNO" [CHAR(3)]: colcard=14, numnulls=0, highkey="I22", lowkey="B01" Return Status = 0
- Utilice el tipo remote-query para recopilar estadísticas para todas las columnas de la tabla DEPARTMENT.
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Column "LOCATION" [CHAR(16)]: colcard=1, numnulls=14, highkey="", lowkey="" Column "ADMRDEPT" [CHAR(3)]: colcard=3, numnulls=0, highkey="E01", lowkey="A00" Column "DEPTNAME" [VARCHAR(36)]: colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS" Column "MGRNO" [CHAR(6)]: colcard=9, numnulls=6, highkey="000100", lowkey="000010" Column "DEPTNO" [CHAR(3)]: colcard=14, numnulls=0, highkey="J22", lowkey="A00" Return Status = 0
- Utilice el tipo remote-query para recopilar estadísticas para algunas de las columnas de la tabla DEPARTMENT.
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,DEPTNAME,LOCATION', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Column "LOCATION" [CHAR(16)]: colcard=1, numnulls=14, highkey="", lowkey="" Column "DEPTNAME" [VARCHAR(36)]: colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS" Column "DEPTNO" [CHAR(3)]: colcard=14, numnulls=0, highkey="J22", lowkey="A00" Return Status = 0
- Utilice el tipo remote-query para recopilar sólo estadísticas de tabla DEPARTMENT.
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', '', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Return Status = 0
- Utilice el tipo remote-query para intentar recopilar estadísticas para una columna que no está definida en la tabla DEPARTMENT.
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,FIRSTNME', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : ERROR: VALIDATE COLUMN FILTER LIST -- Invalid column "FIRSTNME" in virtColumns Return Status = 0
- Utilice el tipo remote-catalog para recopilar estadísticas cuando el catálogo remoto no tiene estadísticas para la tabla local (DEPARTMENT).
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : WARNING: No statistics found in remote catalog for table "SAMPLE "."DEPARTMENT" Return Status = 0
- Utilice el tipo remote-catalog para recopilar estadísticas cuando se especifiquen columnas con caracteres especiales.
call dvsys.collect_statistics('SAMPLE', 'SpecialChars', '"Col,1","Col""2"', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."SpecialChars": Table Cardinality = 4 Column "Col,1" [INTEGER]: colcard=3, numnulls=0, highkey="3", lowkey="1" Column "Col"2" [INTEGER]: colcard=3, numnulls=1, highkey="2", lowkey="1" Return Status = 0
- Utilice el tipo remote-catalog y una frecuencia de muestreo del 20% para recopilar estadísticas para todas las columnas de la tabla SALES. Se han añadido filas adicionales a la tabla SALES para facilitar el muestreo.
call dvsys.collect_statistics('SAMPLE', 'SALES', null, 2, 'TABLESAMPLE=20', ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."SALES": Table Cardinality = 1304 Column "SALES_DATE" [DATE]: colcard=247, numnulls=0, highkey="2007-03-31", lowkey="2005-12-31" Column "SALES_PERSON" [VARCHAR(15)]: colcard=3, numnulls=0, highkey="LUCCHESSI", lowkey="GOUNOT" Column "SALES" [INTEGER]: colcard=19, numnulls=0, highkey="19", lowkey="1" Column "REGION" [VARCHAR(15)]: colcard=4, numnulls=0, highkey="Quebec", lowkey="Manitoba" Return Status = 0
- Utilice el tipo remote-catalog , una frecuencia de muestreo del 20% y un SAMPLING_THRESHOLD de 40 filas para recopilar estadísticas para todas las columnas de la tabla EMP, que tiene 42 filas de forma predeterminada. Si no se especifica SAMPLING_THRESHOLD, la opción TABLESAMPLE se ignora porque el umbral de muestreo predeterminado es 1000 filas.
call dvsys.collect_statistics('SAMPLE', 'EMP', null, 2, 'TABLESAMPLE=20,SAMPLING_THRESHOLD=40', ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."EMP": Table Cardinality = 42 Column "EDLEVEL" [SMALLINT]: colcard=5, numnulls=0, highkey="19", lowkey="12" Column "PHONENO" [CHAR(4)]: colcard=10, numnulls=0, highkey="8953", lowkey="1793" Column "SEX" [CHAR(1)]: colcard=2, numnulls=0, highkey="M", lowkey="F" Column "FIRSTNME" [VARCHAR(12)]: colcard=11, numnulls=0, highkey="VINCENZO", lowkey="DIAN" Column "MIDINIT" [CHAR(1)]: colcard=10, numnulls=0, highkey="V", lowkey=" " Column "BIRTHDATE" [DATE]: colcard=11, numnulls=0, highkey="2003-05-26", lowkey="1955-09-15" Column "COMM" [DECIMAL(9,2)]: colcard=11, numnulls=0, highkey="4220.00", lowkey="1272.00" Column "SALARY" [DECIMAL(9,2)]: colcard=11, numnulls=0, highkey="96170.00", lowkey="31840.00" Column "LASTNAME" [VARCHAR(15)]: colcard=9, numnulls=0, highkey="YAMAMOTO", lowkey="ADAMSON" Column "WORKDEPT" [CHAR(3)]: colcard=6, numnulls=0, highkey="E21", lowkey="A00" Column "HIREDATE" [DATE]: colcard=9, numnulls=0, highkey="2006-02-23", lowkey="1979-08-17" Column "BONUS" [DECIMAL(9,2)]: colcard=4, numnulls=0, highkey="800.00", lowkey="300.00" Column "EMPNO" [CHAR(6)]: colcard=9, numnulls=0, highkey="200340", lowkey="000050" Column "JOB" [CHAR(8)]: colcard=5, numnulls=0, highkey="OPERATOR", lowkey="CLERK " Return Status = 0