- Categorias:
Funções do sistema (Informações do sistema)
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS¶
Retorna os custos estimados para adicionar uma otimização de pesquisa a uma determinada tabela e configurar colunas específicas para a otimização de pesquisa.
Importante
Os cálculos de custo retornados pela função SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS são os melhores esforços. Os custos reais realizados podem variar significativamente (até 50% ou, em casos raros, várias vezes) dos custos estimados.
As estimativas de custo de criação e armazenamento são baseadas na amostragem de um subconjunto das linhas da tabela
As estimativas de custo de manutenção são baseadas em atividades recentes de criação, exclusão e atualização na tabela
Sintaxe¶
SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('<table_name>' [ , '<search_method_with_target>' ])
Argumentos¶
Obrigatório:
table_name
Tabela para a qual você deseja estimar os custos de otimização de pesquisa.
Se o nome da tabela não for totalmente qualificado (na forma de
db_name.schema_name.table_name
ouschema_name.table_name
), a função procura a tabela no esquema atual para a sessão.O nome completo deve ser delimitado por aspas simples.
Opcional:
search_method_with_target
Especifica um método de pesquisa e um alvo para uma configuração de coluna semelhante ao que pode ser especificado na cláusula ON do comando ALTER TABLE … ADD SEARCH OPTIMIZATION.
Todo esse argumento deve ser colocado entre aspas simples. Nessa cadeia de caracteres, use aspas duplas ao redor dos nomes das colunas onde for necessário.
Saída¶
A função retorna um objeto JSON com as propriedades descritas abaixo:
Propriedade |
Descrição |
---|---|
|
Nome da tabela. |
|
|
|
Matriz de objetos que descrevem os custos previstos da adição de otimização de pesquisa à tabela ou suas colunas. |
Cada objeto da matriz costPositions
representa um tipo diferente de estimativa de custos:
...
"costPositions" : [
{
"name" : "BuildCosts",
...
}, {
"name" : "StorageCosts",
...
}, {
"name" : "Benefit",
...
}, {
"name" : "MaintenanceCosts",
...
}
]
...
A propriedade name
identifica o tipo de custo representado pelo objeto. O name
pode ser um dos seguintes:
|
Descrição |
---|---|
|
Este objeto descreve os custos previstos para a criação do caminho de acesso de pesquisa para a tabela. Se a otimização de pesquisa já tiver sido adicionada à tabela ou a todas as colunas especificadas, este objeto não conterá informações sobre custos. |
|
Este objeto descreve a quantidade prevista de espaço de armazenamento (em TB) necessário para o caminho de acesso de pesquisa para a tabela. |
|
Este objeto aparece somente quando a tabela tem a otimização de pesquisa ativada. No momento, ele não contém informações. |
|
Este objeto descreve os custos previstos para a manutenção do caminho de acesso de pesquisa para a tabela quando as linhas são inseridas, excluídas ou modificadas. Se a tabela tiver sido criada recentemente, nenhuma informação de custo será relatada. |
Cada objeto da matriz costPositions
pode ter as seguintes propriedades:
Propriedade |
Descrição |
---|---|
|
Nome que identifica o tipo de informação de custo representado por este objeto. |
|
Objeto que descreve os custos previstos em termos das seguintes propriedades: |
value |
Montante do custo previsto. |
unit |
Unidade de medida do custo (por exemplo, “Créditos” para custos de computação, “TB” para custos de armazenamento etc.). |
perTimeUnit |
Para os custos de manutenção, a unidade de tempo que o custo estimado cobre (por exemplo, |
|
Método usado para estimar os custos, caso haja vários métodos disponíveis. |
|
Informações adicionais sobre o custo estimado. |
Notas de uso¶
A propriedade
searchOptimizationEnabled
étrue
quando a tabela ou qualquer coluna nela contida tem a otimização de pesquisa ativada.Para o custo de criação, esta função retorna uma aproximação baseada na criação de caminhos de acesso de pesquisa para uma amostra dos dados na tabela especificada.
Para o custo de manutenção, esta função baseia as estimativas nas mudanças recentes feitas na tabela (as mudanças de bytes ao longo do tempo).
Para chamar a função, você deve ter um warehouse em uso. Se nenhum warehouse estiver em uso no momento, a função informa o seguinte erro:
No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command.
O tamanho do warehouse não afeta o desempenho desta função, por isso você pode usar um warehouse X-Small.
Como a função usa um warehouse, você é cobrado pelo uso do warehouse dessa função.
A função pode demorar entre 20 segundos até 10 minutos para ser concluída. Usar um warehouse maior não resultará em uma execução mais rápida.
Exemplos¶
O exemplo a seguir mostra os custos estimados para adicionar a otimização de pesquisa a uma tabela:
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_without_search_opt') AS estimate_for_table_without_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_TABLE_WITHOUT_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITHOUT_SEARCH_OPT", | | "searchOptimizationEnabled" : false, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 11.279, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.070493, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 30.296, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~11 days." | | } ] | | } | +---------------------------------------------------------------------------+
O exemplo a seguir mostra a saída desta função para uma tabela que já tem otimização de pesquisa ativada. Você pode ver que nenhuma informação de custo de criação está disponível nesse caso. Além disso, a propriedade Benefit
está incluída (mas não contém nenhuma informação).
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_with_search_opt') AS estimate_for_table_with_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_TABLE_WITH_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITH_SEARCH_OPT", | | "searchOptimizationEnabled" : true, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "computationMethod" : "NotAvailable", | | "comment" : "Search optimization is already enabled." | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.052048, | | "unit" : "TB" | | }, | | "computationMethod" : "Measured" | | }, { | | "name" : "Benefit", | | "computationMethod" : "NotAvailable", | | "comment" : "Currently not supported." | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 30.248, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "EstimatedUpperBound", | | "comment" : "Estimated from historic change rate over last ~11 days." | | } ] | | } | +---------------------------------------------------------------------------+
O exemplo a seguir mostra a saída dessa função para estimar a otimização de pesquisa em três colunas específicas de uma tabela usando o método de pesquisa EQUALITY (ou seja, a estimativa é para ativar a otimização da pesquisa somente para comparações de igualdade nessas colunas). Nem a tabela nem nenhuma de suas colunas já têm qualquer tipo de otimização de pesquisa ativada.
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_without_search_opt', 'EQUALITY(C1, C2, C3)') AS estimate_for_columns_without_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_COLUMNS_WITHOUT_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITHOUT_SEARCH_OPT", | | "searchOptimizationEnabled" : false, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 10.527, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.040323, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 22.821, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~7 days." | | } ] | | } | +---------------------------------------------------------------------------+
Se uma consulta semelhante for executada em uma tabela em que a otimização de pesquisa já esteja ativada para qualquer uma das colunas especificadas, o resultado incluirá uma estimativa de custo de criação que abranja a adição de otimização de pesquisa às colunas especificadas em que ela ainda não esteja ativada. Isso é diferente do exemplo anterior, em que estávamos estimando a otimização de pesquisa em uma tabela inteira em que a otimização de busca já estava ativada, o que resultou em nenhuma estimativa de custo de criação, pois não havia trabalho de criação a ser feito.
A estimativa de armazenamento aqui inclui apenas o tamanho real do caminho de acesso à pesquisa para as colunas em que a otimização de pesquisa já está ativada.
A estimativa de manutenção abrange todas as colunas especificadas, independentemente de elas já terem a otimização de pesquisa ativada.
SELECT SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('table_with_search_opt', 'EQUALITY(C1, C2, C3)') AS estimate_for_columns_with_search_optimization;+---------------------------------------------------------------------------+ | ESTIMATE_FOR_COLUMNS_WITH_SEARCH_OPTIMIZATION | |---------------------------------------------------------------------------| | { | | "tableName" : "TABLE_WITH_SEARCH_OPT", | | "searchOptimizationEnabled" : true, | | "costPositions" : [ { | | "name" : "BuildCosts", | | "costs" : { | | "value" : 8.331, | | "unit" : "Credits" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "StorageCosts", | | "costs" : { | | "value" : 0.040323, | | "unit" : "TB" | | }, | | "computationMethod" : "Estimated", | | "comment" : "estimated via sampling" | | }, { | | "name" : "Benefit", | | "computationMethod" : "NotAvailable", | | "comment" : "Currently not supported." | | }, { | | "name" : "MaintenanceCosts", | | "costs" : { | | "value" : 22.821, | | "unit" : "Credits", | | "perTimeUnit" : "MONTH" | | }, | | "computationMethod" : "Estimated", | | "comment" : "Estimated from historic change rate over last ~7 days." | | } ] | | } | +---------------------------------------------------------------------------+