Lorsque les actualisations de tables dynamiques partagent les ressources de calcul avec d'autres requêtes, la contention aux heures de pointe peut retarder les mises à jour. Le paramètre computing_resource permet d'attribuer des ressources de calcul dédiées aux actualisations, qu'elles soient planifiées ou manuelles. Vous contrôlez ainsi indépendamment l'isolation des ressources, le coût et le débit. Cette rubrique décrit les types de ressources disponibles, leur configuration et les variations de comportement selon les versions de Hologres.
Choisir un type de ressource
| Type de ressource | Fonctionnement | Cas d'utilisation idéal |
|---|---|---|
serverless (par défaut dans la version 4.0.1+) |
Utilise un pool de ressources Serverless Computing distant et entièrement géré. Le moteur détermine les ressources requises par requête, offrant une isolation au niveau de la requête et une mise à l'échelle élastique. Aucune capacité réservée n'est nécessaire. | La plupart des charges de travail. Valeur par défaut à partir de la version 4.0.1. |
local |
Utilise les ressources de l'instance actuelle (instance généraliste) ou de l'entrepôt associé à la connexion actuelle (instance d'entrepôt virtuel à partir de la version 4.0.7). Les ressources sont partagées avec d'autres requêtes ; une contention peut survenir aux heures de pointe. | Charges de travail devant rester sur les ressources réservées de l'instance. |
<warehouse_name> |
Exécute l'actualisation sur un entrepôt virtuel spécifique, offrant une isolation des ressources au niveau de l'entrepôt. Pris en charge uniquement sur les instances d'entrepôt virtuel (version 4.0.7+). | Charges de travail nécessitant des ressources de calcul dédiées et isolées sur un entrepôt spécifique. |
Pour plus d'informations sur Serverless Computing, consultez Présentation de Serverless Computing. Pour en savoir plus sur les entrepôts virtuels, reportez-vous à Premiers pas avec les entrepôts virtuels.
Référence des paramètres
Le paramètre computing_resource est facultatif. Définissez-le dans la clause WITH lors de la création d'une table dynamique, ou transmettez-le explicitement lors d'une actualisation manuelle.
| Paramètre | Obligatoire | Valeur par défaut | Description | Exemple |
|---|---|---|---|---|
computing_resource |
Non | serverless (version 4.0.1+) ; local (version 3.0) |
Type de ressource utilisé pour l'actualisation de la table dynamique. Valeurs acceptées : local, serverless ou <warehouse_name> (uniquement à partir de la version 4.0.7, sur les instances d'entrepôt virtuel uniquement). |
computing_resource='serverless' |
Syntaxe
Version 4.0.7 et ultérieure
La version 4.0.7 a introduit warehouse_name comme valeur valide, permettant l'isolation des ressources au niveau de l'entrepôt sur les instances d'entrepôt virtuel. La signification de local a également évolué : elle fait désormais référence à l'entrepôt actuellement connecté, plutôt qu'à l'entrepôt leader du groupe de tables (TG).
Créer une table dynamique avec une ressource spécifiée :
-- Specify refresh resources when creating the table.
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
freshness = '<num> {minutes | hours}', -- Required.
[computing_resource = {'local' | 'serverless' | '<warehouse_name>'},] -- Optional.
)
AS
<query>; -- Definition of the query.
Actualiser manuellement avec une ressource spécifiée :
-- Specify refresh resources during a manual refresh.
REFRESH DYNAMIC TABLE [<schema_name>.]<table_name>
WITH (computing_resource = 'local' | 'serverless' | '<warehouse_name>');
Versions 4.0.1 à 4.0.6
La version 4.0.1 a modifié la ressource d'actualisation par défaut, passant de local à serverless. La valeur warehouse_name n'est pas prise en charge dans cette plage de versions.
Créer une table dynamique :
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
freshness = '<num> {minutes | hours}', -- Required.
[computing_resource = {'local' | 'serverless'},] -- Optional.
)
AS
<query>; -- Definition of the query.
Actualiser manuellement :
REFRESH DYNAMIC TABLE [<schema_name>.]<table_name>
WITH ([computing_resource = 'local' | 'serverless']);
Versions 3.1 à 3.2
La syntaxe et les valeurs par défaut sont identiques à celles des versions 4.0.1–4.0.6. La valeur warehouse_name n'est pas prise en charge.
Créer une table dynamique :
CREATE [EXTERNAL] DYNAMIC TABLE [ IF NOT EXISTS ] [<schema_name>.]<table_name>
[ (<col_name> [, ...] ) ]
[LOGICAL PARTITION BY LIST(<partition_key>)]
WITH (
freshness = '<num> {minutes | hours}', -- Required.
[computing_resource = {'local' | 'serverless'},] -- Optional.
)
AS
<query>; -- Definition of the query.
Actualiser manuellement :
REFRESH DYNAMIC TABLE [<schema_name>.]<table_name>
WITH ([computing_resource = 'local' | 'serverless']);
Version 3.0
La version 3.0 utilise une syntaxe différente avec des paramètres distincts pour les actualisations incrémentielles et complètes, et privilégie par défaut les ressources local.
Créer une table dynamique :
CREATE DYNAMIC TABLE [IF NOT EXISTS] <schema.tablename>(
[col_name],
[col_name]
) [PARTITION BY LIST (col_name)]
WITH (
[refresh_mode='[full|incremental]',]
[incremental_auto_refresh_schd_start_time='[immediate|<timestamptz>]',]
[incremental_auto_refresh_interval='[<num> {minute|minutes|hour|hours}]',]
[incremental_guc_hg_computing_resource='[local|serverless]',]
[full_guc_hg_computing_resource='[local|serverless]',]
)
AS
<query>; -- Definition of the query.
Actualiser manuellement :
REFRESH DYNAMIC TABLE [<schema_name>.]<table_name>
WITH (
[incremental_guc_hg_computing_resource = 'local' | 'serverless',]
[full_guc_hg_computing_resource = 'local' | 'serverless']
);
Ressources d'actualisation par défaut selon la version
Valeurs par défaut pour l'actualisation automatique
Version 4.0.7 et ultérieure
| Type de table | Instance sans entrepôt virtuel | Instance d'entrepôt virtuel |
|---|---|---|
| Table dynamique | Serverless par défaut. Possibilité de spécifier local (ressources de l'instance). |
Serverless par défaut. Possibilité de spécifier warehouse_name. Si vous spécifiez local sans indiquer de warehouse_name, l'entrepôt de la connexion actuelle est utilisé. |
| Table dynamique externe | Serverless par défaut. Possibilité de spécifier local (ressources de l'instance). |
Serverless par défaut. Possibilité de spécifier warehouse_name. Si vous spécifiez local sans indiquer de warehouse_name, l'entrepôt de la connexion actuelle est utilisé. |
Versions 4.0.1 à 4.0.6
| Type de table | Instance sans entrepôt virtuel | Instance d'entrepôt virtuel |
|---|---|---|
| Table dynamique | Serverless par défaut. Possibilité de spécifier local (ressources de l'instance). |
Serverless par défaut. local utilise l'entrepôt leader du TG de la table de base et l'entrepôt leader du TG de la table dynamique ; plusieurs entrepôts peuvent être impliqués. warehouse_name n'est pas pris en charge. |
| Table dynamique externe | Serverless par défaut. Possibilité de spécifier local (ressources de l'instance). |
Serverless par défaut. local utilise l'entrepôt leader du TG par défaut de la base de données où la table dynamique externe a été créée. warehouse_name n'est pas pris en charge. |
Versions 3.1 à 3.2
| Type de table | Instance sans entrepôt virtuel | Instance d'entrepôt virtuel |
|---|---|---|
| Table dynamique | Serverless par défaut. Possibilité de spécifier local (ressources de l'instance). |
Serverless par défaut. local utilise l'entrepôt leader du TG de la table de base et l'entrepôt leader du TG de la table dynamique ; plusieurs entrepôts peuvent être impliqués. warehouse_name n'est pas pris en charge. |
Version 3.0
| Type de table | Instance sans entrepôt virtuel | Instance d'entrepôt virtuel |
|---|---|---|
| Table dynamique | local par défaut. Possibilité de spécifier serverless. |
local par défaut, utilisant l'entrepôt leader du TG de la table dynamique. Possibilité de spécifier serverless. warehouse_name n'est pas pris en charge. |
Priorité des ressources pour l'actualisation manuelle
Lorsque vous déclenchez une actualisation manuelle, la ressource utilisée suit l'ordre de priorité suivant :
Valeur définie explicitement : Si vous transmettez
computing_resourcedans l'instructionREFRESH, cette valeur s'applique, indépendamment du langage de définition de données (DDL) de la table.Valeur du DDL : Si vous ne transmettez pas
computing_resourcedans l'instructionREFRESH, la valeur issue du DDL de la table est utilisée.
Valeurs acceptées selon le type d'instance (version 4.0.7+) :
Instance d'entrepôt virtuel :
local(entrepôt actuellement connecté),serverlessou<warehouse_name>Instance sans entrepôt virtuel :
local(ressources de l'instance) ouserverless
Valeurs acceptées selon le type d'instance (versions 4.0.1–4.0.6 et 3.1–3.2) :
Instance d'entrepôt virtuel :
localouserverless.localutilise l'entrepôt leader du TG de la table de base et l'entrepôt leader du TG de la table dynamique ; plusieurs entrepôts peuvent être impliqués.Instance sans entrepôt virtuel :
local(ressources de l'instance) ouserverless
Version 3.0 :
Instance d'entrepôt virtuel :
local(entrepôt leader du TG de la table dynamique) ouserverlessInstance sans entrepôt virtuel :
local(ressources de l'instance) ouserverless
Notes d'utilisation
Si vous définissez
computing_resourceavec unwarehouse_namepuis supprimez cet entrepôt virtuel, l'actualisation échoue.Si vous définissez
computing_resourceavec unwarehouse_namepuis renommez cet entrepôt, l'actualisation se poursuit normalement. Le nouveau nom de l'entrepôt apparaît dans le DDL.-
Si vous définissez
computing_resourcesurserverlessmais que la requête de la table dynamique ne remplit pas les conditions requises pour l'exécution serverless, l'actualisation revient automatiquement aux ressourceslocal: le DDL (visible viahg_dump_script) affiche toujourscomputing_resource = 'serverless'après ce repli. Si la requête remplit ultérieurement les conditions d'exécution serverless, les actualisations suivantes utiliseront les ressources serverless. Pour vérifier quelles ressources ont été effectivement utilisées pour une actualisation spécifique, consultez le journal des requêtes lentes.Sur une instance d'entrepôt virtuel :
localfait référence à l'entrepôt leader du TG où réside la table dynamique. Pour une table dynamique externe,localfait référence à l'entrepôt par défaut de l'instance.Sur une instance sans entrepôt virtuel :
localfait référence aux ressources réservées de l'instance.
Notes relatives à la mise à niveau
Les tableaux suivants résument l'évolution du comportement des ressources d'actualisation lors de la mise à niveau de Hologres. La différence principale réside entre les tables créées avec la nouvelle syntaxe (version 3.1+) et celles qui utilisent encore l'ancienne syntaxe de la version 3.0.
Évolutions des ressources d'actualisation automatique lors de la mise à niveau
| Version source | Version cible | Type de table | Instance sans entrepôt virtuel | Instance d'entrepôt virtuel |
|---|---|---|---|---|
| 3.0 | 3.1, 3.2 ou 4.0.1–4.0.6 | Table dynamique |
Nouvelles tables : La valeur par défaut passe de Legacy V3.0 tables: La valeur par défaut reste |
Nouvelles tables : La valeur par défaut passe de Tables héritées de la version 3.0 : La valeur par défaut reste |
| 3.0 | 4.0.7 et ultérieure | Table dynamique |
Nouvelles tables : La valeur par défaut passe de Legacy V3.0 tables: La valeur par défaut reste |
Nouvelles tables : La valeur par défaut passe de Tables héritées de la version 3.0 : La valeur par défaut reste |
| 3.1, 3.2 ou 4.0.1–4.0.6 | 4.0.7 et ultérieure | Table dynamique |
Nouvelles tables : La valeur par défaut reste Legacy V3.0 tables: La valeur par défaut reste |
Nouvelles tables : La valeur par défaut reste Tables héritées de la version 3.0 : La valeur par défaut reste |
| 4.0.1–4.0.6 | 4.0.7 et ultérieure | Table dynamique externe | Nouvelles tables : La valeur par défaut reste serverless. Possibilité de définir local. |
Nouvelles tables : La valeur par défaut reste Anciennes tables (créées dans les versions 4.0.1–4.0.6) : La valeur par défaut reste |
Évolutions des ressources d'actualisation manuelle lors de la mise à niveau
| Version source | Version cible | Type de table | Instance sans entrepôt virtuel | Instance d'entrepôt virtuel |
|---|---|---|---|---|
| 3.0 | 3.1, 3.2 ou 4.0.1–4.0.6 | Table dynamique | La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. | La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. Pour les tables utilisant la nouvelle syntaxe :local passe de l'entrepôt leader du TG de la table dynamique à l'entrepôt leader du TG de la table de base et à celui du TG de la table dynamique (plusieurs entrepôts peuvent être impliqués). Pour les tables héritées de la version 3.0 :local reste l'entrepôt leader du TG de la table dynamique. |
| 3.0 | 4.0.7 et ultérieure | Table dynamique | La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. Possibilité de spécifier local ou serverless. |
La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. Possibilité de spécifier local, serverless ou warehouse_name. Pour les tables utilisant la nouvelle syntaxe :local passe à l'entrepôt actuellement connecté. Pour les tables héritées de la version 3.0 :local reste l'entrepôt leader du TG de la table dynamique. |
| 3.1, 3.2 ou 4.0.1–4.0.6 | 4.0.7 et ultérieure | Table dynamique | La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. Possibilité de spécifier local ou serverless. |
La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. Possibilité de spécifier local, serverless ou warehouse_name. Pour les tables utilisant la nouvelle syntaxe :local passe de l'entrepôt leader du TG de la table de base et de celui du TG de la table dynamique à l'entrepôt actuellement connecté. Pour les tables héritées de la version 3.0 :local reste l'entrepôt leader du TG de la table dynamique. |
| 4.0.1–4.0.6 | 4.0.7 et ultérieure | Table dynamique externe | La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. Possibilité de spécifier local ou serverless. |
La ressource explicite est prioritaire. À défaut de paramétrage explicite, la valeur du DDL est utilisée. Possibilité de spécifier local, serverless ou warehouse_name. local fait référence à l'entrepôt actuellement connecté. |