Si ClickHouse est réputé pour sa rapidité et sa fiabilité, des performances optimales ne sont obtenues que dans certaines limites de fonctionnement. Par exemple, un nombre trop élevé de tables, de bases de données ou de parts peut nuire aux performances. Pour éviter cela, ClickHouse Cloud impose des limites selon plusieurs dimensions opérationnelles. Les valeurs par défaut de ces garde-fous sont indiquées ci-dessous. Sauf indication contraire, ces garde-fous s’appliquent au niveau du service.
| Dimension | Limite |
|---|---|
| Bases de données | 1000 |
| Tables | 5000 |
| Vues | 15000 |
| Dictionnaires | 5000 |
| Collections nommées (aperçu privé) | 1000 |
| Colonnes | ~1000 (le format wide est préférable au format compact) |
| Partitions | 50k |
| Parts | 10k (voir le paramètre max_parts_in_total) |
| Taille des parts | 150 GB |
| Services par organisation | 20 (souple) |
| Répliques par service | 20 (souple) |
| Répliques par warehouse | 50 (souple) |
| Faible cardinalité | 10k ou moins |
| Clés primaires dans une table | 4 à 5, filtrant suffisamment les données |
| Concurrence des requêtes | 1000 (par réplique) |
| Ingestion par lots | Tout volume > 1M lignes est divisé en blocs de 1M lignes |
Pour les limites relatives aux répliques et au scaling des warehouses, consultez les warehouses.
Les valeurs ci-dessus constituent des garde-fous par défaut. La limite appliquée à un service donné peut être supérieure à la valeur indiquée ici, car les services plus importants disposent d’une marge supplémentaire. La limite réellement applicable à votre service est indiquée dans l’avertissement que vous recevez à l’approche de cette limite. Pour les services dépassant déjà les limites d’utilisation ci-dessus, les limites de tables et de bases de données sont fixées au nombre actuel de tables et de bases de données du service, majoré de 25 %.
Les seuils d’avertissement et de rejet spécifiques à votre service peuvent être vérifiés en interrogeant system.server_settings. Par exemple,
SELECT *
FROM system.server_settings
WHERE name IN ('max_table_num_to_warn', 'max_table_num_to_throw', 'max_database_num_to_warn', 'max_database_num_to_throw', 'max_view_num_to_warn', 'max_view_num_to_throw', 'max_dictionary_num_to_warn', 'max_dictionary_num_to_throw', 'max_named_collection_num_to_warn', 'max_named_collection_num_to_throw')