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>' ])
Copy

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 ou schema_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 TABLEADD 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

tableName

Nome da tabela.

searchOptimizationEnabled

true se a otimização de pesquisa estiver definida para a tabela ou qualquer coluna presente nela; caso contrário, false.

costPositions

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",
    ...
  }
]
...
Copy

A propriedade name identifica o tipo de custo representado pelo objeto. O name pode ser um dos seguintes:

name de objeto em costPositions

Descrição

BuildCosts

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.

StorageCosts

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.

Benefit

Este objeto aparece somente quando a tabela tem a otimização de pesquisa ativada. No momento, ele não contém informações.

MaintenanceCosts

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

name

Nome que identifica o tipo de informação de custo representado por este objeto.

costs

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, "MONTH" para o custo por mês).

computationMethod

Método usado para estimar os custos, caso haja vários métodos disponíveis.

comment

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.
    
    Copy

    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;
Copy
+---------------------------------------------------------------------------+
| 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;
Copy
+---------------------------------------------------------------------------+
| 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;
Copy
+---------------------------------------------------------------------------+
| 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;
Copy
+---------------------------------------------------------------------------+
| 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."  |
|   } ]                                                                     |
| }                                                                         |
+---------------------------------------------------------------------------+