max_temporary_columns
Le nombre maximal de colonnes temporaires à conserver simultanément en RAM lors de l’exécution d’une requête, y compris les colonnes constantes. Si une requête génère, à la suite d’un calcul intermédiaire, plus de colonnes temporaires en mémoire que le nombre spécifié, une exception est levée. La valeur0 signifie qu’il n’y a pas de limite.
max_temporary_data_on_disk_size_for_query
La quantité maximale de données, en octets, consommée sur disque par les fichiers temporaires pour l’ensemble des requêtes exécutées simultanément. Valeurs possibles :- Entier positif.
0— illimité (par défaut)
max_temporary_data_on_disk_size_for_user
La quantité maximale de données consommée par les fichiers temporaires sur disque, en octets, pour l’ensemble des requêtes utilisateur exécutées simultanément. Valeurs possibles :- Entier positif.
0— illimité (par défaut)
max_temporary_non_const_columns
Commemax_temporary_columns, il s’agit du nombre maximal de colonnes temporaires qui doivent
être conservées simultanément en RAM pendant l’exécution d’une requête, sans compter les
colonnes constantes.
Des colonnes constantes sont assez souvent générées lors de l’exécution d’une requête, mais elles ne nécessitent
pratiquement aucune ressource de calcul.
max_temporary_table_memory_usage
Nombre maximal d’octets de mémoire que peut occuper une table temporaire utilisant le moteurMemory.
Ce paramètre s’applique aux tables créées avec CREATE TEMPORARY TABLE, y compris avec le moteur de table temporaire par défaut
(voir default_temporary_table_engine), et la mémoire est comptabilisée de la même manière que total_bytes dans system.tables.
La limite est vérifiée à chaque INSERT dans la table (y compris CREATE TEMPORARY TABLE ... AS SELECT), pendant la réception
des données puis de nouveau avant leur ajout : si la table risque de la dépasser, l’INSERT lève une exception avec le
code d’erreur TOO_MANY_BYTES et les données ne sont pas ajoutées. Un INSERT qui écrit avec plusieurs threads (voir
max_insert_threads) ajoute les données de chaque thread séparément ; les données de certains threads peuvent donc déjà avoir été ajoutées lorsqu’un
autre lève une exception, mais la table ne dépasse jamais la limite. La valeur utilisée est celle des paramètres de la requête INSERT.
La limite est également vérifiée après une mutation (ALTER TABLE ... UPDATE, MATERIALIZE COLUMN, etc.), avec la valeur issue
des paramètres de la requête ALTER : si les données mutées risquent de la dépasser, la mutation lève une exception avec le
code d’erreur TOO_MANY_BYTES et les données restent inchangées.
Notez que le paramètre max_bytes_to_keep du moteur Memory fonctionne différemment : il évince les données les plus anciennes au lieu de
rejeter les nouvelles. Si les deux paramètres sont définis, l’éviction s’applique en premier.
Valeurs possibles :
- Entier positif.
0— illimité (par défaut)
max_temporary_table_size_bytes_compressed
Taille maximale en octets des données sur disque (compressées) d’une table temporaire utilisant un moteur de la familleMergeTree.
Elle s’applique aux tables créées avec CREATE TEMPORARY TABLE et est calculée de la même manière que total_bytes dans system.tables,
c’est-à-dire comme la somme des tailles des parts actives.
La limite est vérifiée lors de chaque INSERT dans la table (y compris CREATE TEMPORARY TABLE ... AS SELECT) avant la validation de chaque nouvelle
part : si la table devait la dépasser, l’INSERT lève une exception avec le code d’erreur TOO_MANY_BYTES
et la part n’est pas ajoutée. Les parts déjà validées par le même INSERT restent dans la table, comme pour toute autre
erreur survenant lors d’un INSERT de plusieurs blocs. La valeur utilisée est celle des paramètres de la requête INSERT.
Les opérations qui ajoutent des parts existantes à la table sont soumises à la même limite, la valeur étant celle des paramètres de
leur requête : ATTACH PART, ATTACH PARTITION, ATTACH PARTITION ... FROM, REPLACE PARTITION ... FROM
et CREATE TEMPORARY TABLE ... CLONE AS. Elles sont rejetées dans leur intégralité, sauf si elles
n’augmentent pas la taille de la table. Pour ATTACH PARTITION, la vérification est effectuée une seule fois pour l’ensemble de ses parts avant leur
rattachement ; des écritures exécutées simultanément peuvent donc entraîner un léger dépassement de la limite.
Les parts écrites par les fusions et mutations en arrière-plan (ALTER TABLE ... UPDATE,
MATERIALIZE COLUMN, etc.) ne sont pas vérifiées : une mutation qui augmente la taille des données peut donc entraîner un dépassement de la limite.
Valeurs possibles :
- Entier positif.
0— illimité (par défaut)
max_temporary_table_size_bytes_uncompressed
Taille maximale, en octets, des données décompressées d’une table temporaire utilisant un moteur de la familleMergeTree.
Ce paramètre s’applique aux tables créées avec CREATE TEMPORARY TABLE, et la taille est calculée de la même manière que total_bytes_uncompressed
dans system.tables.
La limite est vérifiée de la même manière que pour max_temporary_table_size_bytes_compressed.
Valeurs possibles :
- Entier positif.
0— illimité (par défaut)
max_temporary_tables
Nombre maximal de tables temporaires pouvant exister simultanément dans une même session. Seules les tables créées avecCREATE TEMPORARY TABLE sont comptabilisées : les tables de données externes envoyées avec une requête ainsi que les
tables temporaires créées en interne pour GLOBAL IN / GLOBAL JOIN ou pour les CTE matérialisées ne le sont pas.
La limite est vérifiée à la création de chaque nouvelle table temporaire, et une exception avec le code d’erreur TOO_MANY_TABLES est
levée si la session a déjà atteint ce nombre de tables temporaires. Remplacer une table temporaire existante avec
CREATE OR REPLACE TEMPORARY TABLE n’augmente pas le nombre de tables et reste toujours autorisé.
Valeurs possibles :
- Entier positif.
0— illimité (par défaut)