Procedimento armazenado COLLECT_STATISTICS na Data Virtualization
Reúne estatísticas para tabelas virtualizadas na Data Virtualization. O otimizador Data Virtualization usa essas estatísticas para determinar os planos de acesso ideais para processar suas consultas com eficiência. O esquema é DVSYS.
Com mais estatísticas de tabela, o otimizador pode tomar decisões melhores para fornecer os melhores planos de acesso possíveis. Quando se executa COLLECT_STATISTICS em uma tabela, as consultas subsequentes com relação a essa tabela geralmente são executadas muito mais rápido. Para obter mais informações, consulte Coleta de estatísticas na Data Virtualization.
COLLECT_STATISTICS ) para coletar estatísticas sobre tabelas virtualizadas sobre armazenamento de objeto. Para obter mais informações, consulte Comando ANALYZE.. Para determinar quais tabelas virtualizadas são criadas no armazenamento de objetos, é possível filtrar objetos virtualizados por tipo. Selecione Object Storage, Tabelaou Visualizar no menu Filtro em Autorização
Para executar o procedimento " COLLECT_STATISTICS, você deve ser um gerente ou engenheiro Data Virtualization. Para obter mais informações, consulte Gerenciamento de funções para usuários na Data Virtualization.
Para coletar estatísticas, você deve ter a autorização apropriada na fonte de dados remota e no Data Virtualization.
Parâmetros de entrada
- virtschema
- O tipo desse parâmetro necessário é VARCHAR(128). Especifica o nome do esquema da tabela virtualizada.
- virtname
- O tipo desse parâmetro necessário é VARCHAR(128). Especifica o nome da tabela virtualizada.
- virtcolumns
- O tipo desse parâmetro opcional é VARCHAR(32672). Especifica uma lista separada por vírgula dos nomes das colunas para as quais as estatísticas devem ser coletadas. Um valor nulo especifica que as estatísticas devem ser coletadas para todas as colunas. Uma sequência vazia especifica que nenhuma estatística de coluna deve ser coletada. Nesse caso, apenas a cardinalidade de tabela é coletada. Se um nome de coluna incluir quaisquer caracteres especiais, o nome deverá ser colocado entre aspas duplas.
- collection_type
- O tipo desse parâmetro necessário é SMALLINT. Especifica o tipo da coleção de estatísticas Os valores válidos são 1 (tiporemote-catalog ) e 2 (tiporemote-query ):
- remote-catalog
- Esse tipo de coleta de estatísticas é suportado apenas para tabelas virtualizadas em origens de dados remotas que suportam um método local de coleta de estatísticas. As estatísticas armazenadas nas tabelas do catálogo na fonte de dados remota são recuperadas e armazenadas no catálogo de estatísticas Data Virtualization.É fundamental assegurar que estatísticas precisas estejam disponíveis na origem de dados remota. O tipo de coleta de estatísticas remote-catalog não é suportado para tabelas agrupadas.
- remote-query
- Esse tipo de coleta de estatísticas usa consultas SQL na tabela virtualizada para calcular as estatísticas.Esse tipo poderá fazer uso intensivo de recursos e demorar muito tempo para ser concluído se a tabela virtualizada tiver muitas linhas ou se forem reunidas estatísticas para muitas colunas. Para melhorar o desempenho e conservar recursos, você pode coletar estatísticas com amostragem de dados especificando a opção TABLESAMPLE no procedimento armazenado COLLECT_STATISTICS na Data Virtualization ou usar o comando " ANALYZE para fontes de dados no armazenamento de objetos na nuvem.
- Opções
- O tipo desse parâmetro opcional é VARCHAR(32672). Especifica uma lista delimitada por vírgulas de parâmetros adicionais.
- TABLESAMPLE
- Especifica um valor duplo entre 0 e 99 inclusive. O valor representa a porcentagem da tabela para amostra ao calcular estatísticas. O valor padrão de 0 especifica que nenhuma amostragem deve ser feita. Essa opção é válida apenas com o tipo de coleção de estatísticas remote-query ....
- LIMITE DE AMOSTRAGEM
- Especifica um valor inteiro maior que 0. O valor representa o número mínimo de linhas que uma origem de dados deve conter antes que a amostragem (se especificada) possa ser usada.. O valor padrão é 1000. Se o número de linhas for menor que esse limite, a amostragem não será usada quando as estatísticas de coluna forem calculadas. Essa opção é válida apenas com o tipo de coleção de estatísticas remote-query ....
Parâmetros de saída
- diagnósticos
- O tipo desse parâmetro é VARCHAR(32672). Representa a saída de diagnóstico se ocorrer uma falha e um resumo das estatísticas coletadas com resultados abreviados.
Observações de uso
- Execute o procedimento COLLECT_STATISTICS diretamente ou por meio do cliente Web Data Virtualization sempre que fizer alterações significativas nos dados da fonte de dados remota.
- Se um nome de coluna incluir quaisquer caracteres especiais, o nome deverá ser colocado entre aspas duplas.
- Se a origem de dados remota suportar ferramentas para reunir estatísticas locais, assegure que as estatísticas locais sejam reunidas e que o tipo remote-catalog seja usado para coletar estatísticas na tabela virtualizada.
- Se a origem de dados remota não suportar ferramentas para reunir estatísticas locais, o tipo remote-query será a única opção disponível. Se a tabela virtualizada tiver muitas linhas, utilize a opção TABLESAMPLE Uma taxa de amostragem de 20% é recomendada na maioria dos casos.
- Se não especificar a opção TABLESAMPLE, a opção SAMPLING_THRESHOLD não terá efeito.
- Se você especificar a opção TABLESAMPLE e o número de linhas na tabela virtualizada for menor que o SAMPLING_THRESHOLD (padrão 1000), a amostragem não ocorrerá porque as estatísticas resultantes seriam insuficientes.
- Ao especificar a opção TABLESAMPLE, a coleta de estatísticas poderá ser subideal se a taxa de amostragem for muito baixa. No entanto, o aumento da taxa de amostragem consumirá mais recursos e reduzirá o desempenho da coleta de estatísticas.
- Ao especificar a opção TABLESAMPLE, a coleta de estatísticas poderá ser subideal se a tabela virtualizada tiver um número limitado de linhas. Nesse caso, aumente o valor TABLESAMPLE ou não faça a amostra dos dados.
- Se a tabela virtualizada referenciar uma visualização na origem de dados remota, o tipo remote-query será a única opção disponível e a opção TABLESAMPLE não será suportada
- Se você especificar a opção TABLESAMPLE com uma taxa de amostragem próxima de 100, mas a coleta de estatísticas ainda estiver abaixo do ideal, considere alterar o valor SAMPLING_THRESHOLD...
- Apenas a estatística NUMNULLS é coletada para colunas do tipo LOB.
Sintaxe
call dvsys.collect_statistics('<virtschema>', '<virtname>', <virtcolumns>, <collection_type>, <options>, ?)
Exemplos
Os exemplos a seguir usam tabelas virtualizadas sobre tabelas que fazem parte de um banco de dados SAMPLE no IBM Db2 Para obter mais informações, consulte O banco de dados SAMPLE.
- Use o tipo remote-catalog para coletar estatísticas para todas as colunas na tabela 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 - Use o tipo remote-query para coletar estatísticas para todas as colunas na tabela 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 - Use o tipo remote-query para coletar estatísticas para algumas das colunas na tabela 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 - Use o tipo remote-query para coletar apenas as estatísticas da tabela 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 - Use o tipo remote-query para tentar coletar estatísticas para uma coluna não definida na tabela 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 - Use o tipo remote-catalog para coletar estatísticas quando o catálogo remoto não tiver estatísticas para a tabela 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 - Use o tipo remote-catalog para coletar estatísticas quando colunas com caracteres especiais forem especificados.
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 - Use o tipo remote-catalog e uma taxa de amostragem de 20% para coletar estatísticas para todas as colunas na tabela SALES Linhas extras foram adicionadas à tabela SALES para facilitar a amostragem
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 - Use o tipo remote-catalog , uma taxa de amostragem de 20% e um SAMPLING_THRESHOLD de 40 linhas para coletar estatísticas para todas as colunas na tabela EMP, que tem 42 linhas por padrão.. Se SAMPLING_THRESHOLD não for especificado, a opção TABLESAMPLE será ignorada porque o limite de amostragem padrão é 1000 linhas.
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