Catégories :

Fonctions système (Informations système)

SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS

Renvoie les coûts estimés de l’ajout de l”optimisation de la recherche à une table donnée et de la configuration de colonnes spécifiques pour l’optimisation de la recherche.

Important

Les estimations de coûts renvoyées par la fonction SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS sont les meilleurs efforts possibles. Les coûts réels réalisés peuvent varier considérablement (jusqu’à 50 % ou, dans de rares cas, de plusieurs fois) par rapport aux coûts estimés.

  • Les estimations des coûts de construction et de stockage sont basées sur l’échantillonnage d’un sous-ensemble des lignes de la table.

  • Les estimations des coûts de maintenance sont basées sur les activités récentes de création, de suppression et de mise à jour de la table.

Syntaxe

SYSTEM$ESTIMATE_SEARCH_OPTIMIZATION_COSTS('<table_name>' [ , '<search_method_with_target>' ])
Copy

Arguments

Obligatoire :

table_name

Table pour laquelle vous souhaitez estimer les coûts d’optimisation de la recherche.

Si le nom de la table n’est pas complet (sous la forme db_name.schema_name.table_name ou schema_name.table_name), la fonction recherche la table dans le schéma actuel de la session.

Le nom entier doit être entre guillemets simples.

Facultatif :

search_method_with_target

Spécifie une méthode de recherche et une cible pour une configuration de colonne similaire à ce qui peut être spécifié dans la clause ON de la commande ALTER TABLEADD SEARCH OPTIMIZATION.

L’ensemble de cet argument doit être placé entre guillemets simples. Dans cette chaîne, utilisez des guillemets doubles autour des noms de colonnes lorsque cela est nécessaire.

Sortie

La fonction renvoie un objet JSON avec les propriétés décrites ci-dessous :

Propriété

Description

tableName

Nom de la table.

searchOptimizationEnabled

true si l’optimisation de la recherche est définie pour la table ou n’importe quelle colonne à l’intérieur ; false sinon.

costPositions

Tableau d’objets décrivant les coûts prévus de l’ajout d’une optimisation de la recherche à la table ou ses colonnes.

Chaque objet du tableau costPositions représente un type différent d’estimation des coûts :

...
"costPositions" : [
  {
    "name" : "BuildCosts",
    ...
  }, {
    "name" : "StorageCosts",
    ...
  }, {
    "name" : "Benefit",
    ...
  }, {
    "name" : "MaintenanceCosts",
    ...
  }
]
...
Copy

La propriété name identifie le type de coût représenté par l’objet. name peut être l’un des suivants :

name d’objet dans costPositions

Description

BuildCosts

Cet objet décrit les coûts prévus de création du chemin d’accès de recherche pour la table. Si l’optimisation de la recherche a déjà été ajoutée à la table ou à toutes les colonnes spécifiées, cet objet ne contient aucune information de coût.

StorageCosts

Cet objet décrit la quantité prévue d’espace de stockage (en TB) nécessaire pour le chemin d’accès à la recherche de la table. Si l’optimisation de la recherche a déjà été ajoutée à la table ou à ses colonnes, cet objet affiche la quantité d’espace actuellement utilisée par les chemins d’accès à la recherche.

Benefit

Cet objet n’apparaît que lorsque l’optimisation de la recherche est activée dans la table. Il ne contient pas d’informations pour le moment.

MaintenanceCosts

Cet objet décrit les coûts prévus de l’entretien du chemin d’accès de recherche pour la table quand des lignes sont insérées, supprimées ou modifiées. Si la table a été créée récemment, aucune information sur les coûts n’est communiquée.

Chaque objet du tableau costPositions peut avoir les propriétés suivantes :

Propriété

Description

name

Nom qui identifie le type d’informations de coût représenté par cet objet.

costs

Objet qui décrit les coûts prévus en fonction des propriétés suivantes :

value

Montant du coût prévu.

unit

Unité de mesure du coût (par exemple, « Crédits » pour les coûts de calcul, « TB » pour les coûts de stockage, etc.).

perTimeUnit

Pour les coûts de maintenance, unité de temps couverte par le coût estimé (par exemple, "MONTH" pour le coût par mois).

computationMethod

Méthode utilisée pour estimer les coûts, si plusieurs méthodes sont disponibles.

comment

Informations supplémentaires sur le coût estimé.

Notes sur l’utilisation

  • La propriété searchOptimizationEnabled est true lorsque l’optimisation de la recherche est activée pour la table ou l’une de ses colonnes.

  • Pour le coût de construction, cette fonction renvoie une approximation basée sur la construction de chemins d’accès de recherche pour un échantillon des données de la table spécifiée.

  • Pour le coût de maintenance, cette fonction base les estimations sur les changements récents apportés à la table (les changements d’octets dans le temps).

  • Pour pouvoir appeler la fonction, vous devez avoir un entrepôt en service. Si aucun entrepôt n’est actuellement utilisé, la fonction signale l’erreur suivante :

    No active warehouse selected in the current session.
    Select an active warehouse with the 'use warehouse' command.
    
    Copy

    La taille de l’entrepôt n’a aucun effet sur la vitesse et les performances de cette fonction. Vous pouvez utiliser un entrepôt X-Small.

  • Comme la fonction utilise un entrepôt, vous êtes maintenant facturé pour l’utilisation de l’entrepôt pour cette fonction.

  • L’exécution de la fonction peut durer entre 20 secondes et 10 minutes. L’utilisation d’un entrepôt plus grand ne se traduit pas par une exécution plus rapide.

Exemples

L’exemple suivant montre les coûts estimés de l’ajout d’une optimisation de recherche à une table :

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

L’exemple suivant montre la sortie de cette fonction pour une table qui a déjà une optimisation de recherche activée : Vous pouvez constater qu’aucune information sur les coûts de construction n’est disponible dans ce cas. La propriété Benefit est également incluse (mais elle ne contient aucune information).

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

L’exemple suivant montre la sortie de cette fonction pour estimer l’optimisation de la recherche sur trois colonnes spécifiques d’une table en utilisant la méthode de recherche EQUALITY (c’est-à-dire que l’estimation concerne l’activation de l’optimisation de la recherche uniquement pour les comparaisons d’égalité sur ces colonnes). Ni la table ni aucune de ses colonnes n’ont déjà été optimisées pour la recherche.

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

Si une requête similaire est exécutée sur une table où l’optimisation de la recherche est déjà activée pour l’une des colonnes spécifiées, le résultat comprend une estimation du coût de construction qui couvre l’ajout de l’optimisation de la recherche aux colonnes spécifiées où elle n’est pas encore activée. Ceci est différent de l’exemple précédent où nous estimions l’optimisation de la recherche sur une table entière où l’optimisation de la recherche était déjà activée, ce qui n’a pas donné lieu à une estimation des coûts de construction puisqu’il n’y avait pas de travail de construction à effectuer.

L’estimation du stockage ne comprend que la taille réelle du chemin d’accès à la recherche pour les colonnes où l’optimisation de la recherche est déjà activée.

Le devis de maintenance couvre toutes les colonnes spécifiées, qu’elles aient ou non déjà activé l’optimisation de la recherche.

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