mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-17 05:03:20 +00:00
23 KiB
23 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | f865c9653f |
79 | 2017 |
Clickhouse version 1.1.54327, 2017-12-21
Cette version contient des corrections de bugs pour la version précédente 1.1.54318:
- Correction d'un bug avec condition de concurrence possible dans la réplication qui pourrait conduire à la perte de données. Ce problème affecte les versions 1.1.54310 et 1.1.54318. Si vous utilisez l'une de ces versions avec des tables répliquées, la mise à jour est fortement recommandée. Ce problème apparaît dans les journaux dans les messages d'avertissement comme
Part ... from own log doesn't exist.
Le problème est pertinent même si vous ne voyez pas ces messages dans les journaux.
Clickhouse version 1.1.54318, 2017-11-30
Cette version contient des corrections de bugs pour la version précédente 1.1.54310:
- Correction de suppressions de ligne incorrectes lors des fusions dans le moteur SummingMergeTree
- Correction d'une fuite de mémoire dans les moteurs mergetree non compliqués
- Correction de la dégradation des performances avec des inserts fréquents dans les moteurs MergeTree
- Correction d'un problème qui causait la file d'attente de réplication pour arrêter l'exécution
- Rotation fixe et archivage des journaux du serveur
Clickhouse version 1.1.54310, 2017-11-01
Nouveauté:
- Clé de partitionnement personnalisée pour la famille MergeTree des moteurs de table.
- Kafka tableau moteur.
- Ajout du support pour le chargement CatBoost modèles et les appliquer aux données stockées dans ClickHouse.
- Ajout du support pour les fuseaux horaires avec des décalages non entiers de UTC.
- Ajout du support pour les opérations arithmétiques avec des intervalles de temps.
- La plage de valeurs pour les types Date et DateTime est étendue à l'année 2105.
- Ajouté le
CREATE MATERIALIZED VIEW x TO y
requête (spécifie une table pour stocker les données d'une vue matérialisée). - Ajouté le
ATTACH TABLE
requête sans arguments. - La logique de traitement des colonnes imbriquées avec des noms se terminant par-Map dans une table SummingMergeTree a été extraite dans la fonction d'agrégat sumMap. Vous pouvez maintenant spécifier ces colonnes explicitement.
- La taille maximale du dictionnaire IP trie est augmentée à 128M entrées.
- Ajout de la fonction getSizeOfEnumType.
- Ajout de la fonction d'agrégat sumWithOverflow.
- Ajout du support pour le format D'entrée Cap'n Proto.
- Vous pouvez maintenant personnaliser le niveau de compression lors de l'utilisation de l'algorithme zstd.
Modifications incompatibles en arrière:
- Création de tables temporaires avec un moteur autre que la Mémoire n'est pas autorisé.
- La création explicite de tables avec le moteur View ou MaterializedView n'est pas autorisée.
- Lors de la création de la table, une nouvelle vérification vérifie que l'expression de clé d'échantillonnage est incluse dans la clé primaire.
Corrections de bugs:
- Correction des accrochages lors de l'insertion synchrone dans une table distribuée.
- Ajout et retrait non atomiques fixes de pièces dans des tables répliquées.
- Les données insérées dans une vue matérialisée ne sont pas soumises à une déduplication inutile.
- L'exécution d'une requête vers une table distribuée pour laquelle le réplica local est en retard et les réplicas distants ne sont pas disponibles n'entraîne plus d'erreur.
- Les utilisateurs n'ont pas besoin d'autorisations d'accès au
default
base de données pour créer des tables temporaires plus. - Correction d'un plantage lors de la spécification du type de tableau sans arguments.
- Correction des interruptions lorsque le volume du disque contenant les journaux du serveur est plein.
- Correction d'un débordement dans la fonction toRelativeWeekNum pour la première semaine de L'époque Unix.
Construire des améliorations:
- Plusieurs bibliothèques tierces (notamment Poco) ont été mises à jour et converties en sous-modules git.
Clickhouse version 1.1.54304, 2017-10-19
Nouveauté:
- Prise en charge TLS dans le protocole natif (pour activer, définir
tcp_ssl_port
dansconfig.xml
).
Corrections de bugs:
ALTER
pour les tables répliquées essaie maintenant de commencer à s'exécuter dès que possible.- Fixe plante lors de la lecture des données avec le paramètre
preferred_block_size_bytes=0.
- Plantages fixes de
clickhouse-client
lorsque vous appuyez surPage Down
- L'interprétation correcte de certaines requêtes complexes avec
GLOBAL IN
etUNION ALL
FREEZE PARTITION
fonctionne toujours atomiquement maintenant.- Les requêtes POST vides renvoient maintenant une réponse avec le code 411.
- Correction d'erreurs d'interprétation pour des expressions comme
CAST(1 AS Nullable(UInt8)).
- Correction d'une erreur lors de la lecture
Array(Nullable(String))
les colonnes deMergeTree
table. - Fixe s'écraser lors de l'analyse des requêtes comme
SELECT dummy AS dummy, dummy AS b
- Les utilisateurs sont mis à jour correctement avec invalide
users.xml
- Manipulation correcte lorsqu'un dictionnaire exécutable renvoie un code de réponse différent de zéro.
Clickhouse version 1.1.54292, 2017-09-20
Nouveauté:
- Ajouté le
pointInPolygon
fonction pour travailler avec des coordonnées sur un plan de coordonnées. - Ajouté le
sumMap
fonction d'agrégation pour calculer la somme des tableaux, similaire àSummingMergeTree
. - Ajouté le
trunc
fonction. Amélioration des performances des fonctions d'arrondi (round
,floor
,ceil
,roundToExp2
) et corrigé la logique de la façon dont ils fonctionnent. Changé la logique de laroundToExp2
fonction pour les fractions et les nombres négatifs. - Le fichier exécutable ClickHouse dépend maintenant moins de la version libc. Le même fichier exécutable ClickHouse peut fonctionner sur une grande variété de systèmes Linux. Il existe toujours une dépendance lors de l'utilisation de requêtes compilées (avec le paramètre
compile = 1
qui n'est pas utilisé par défaut). - Réduit le temps nécessaire à la compilation dynamique des requêtes.
Corrections de bugs:
- Correction d'une erreur qui produisait parfois
part ... intersects previous part
messages et cohérence des répliques affaiblies. - Correction d'une erreur qui a provoqué le verrouillage du serveur si ZooKeeper n'était pas disponible pendant l'arrêt.
- Suppression de la journalisation excessive lors de la restauration des répliques.
- Correction d'une erreur dans L'Union toute la mise en œuvre.
- Correction d'une erreur dans la fonction concat qui s'est produite si la première colonne d'un bloc a le type de tableau.
- La progression est maintenant affichée correctement dans le système.fusionne table.
Clickhouse version 1.1.54289, 2017-09-13
Nouveauté:
SYSTEM
les requêtes pour l'administration du serveur:SYSTEM RELOAD DICTIONARY
,SYSTEM RELOAD DICTIONARIES
,SYSTEM DROP DNS CACHE
,SYSTEM SHUTDOWN
,SYSTEM KILL
.- Ajout de fonctions pour travailler avec des tableaux:
concat
,arraySlice
,arrayPushBack
,arrayPushFront
,arrayPopBack
,arrayPopFront
. - Ajouter
root
etidentity
paramètres pour la configuration de ZooKeeper. Cela vous permet d'isoler des utilisateurs individuels sur le même cluster ZooKeeper. - Fonctions d'agrégation ajoutées
groupBitAnd
,groupBitOr
, etgroupBitXor
(pour la compatibilité, ils sont également disponibles sous les noms deBIT_AND
,BIT_OR
, etBIT_XOR
). - Les dictionnaires externes peuvent être chargés à partir de MySQL en spécifiant un socket dans le système de fichiers.
- Les dictionnaires externes peuvent être chargés à partir de MySQL sur SSL (
ssl_cert
,ssl_key
,ssl_ca
paramètre). - Ajouté le
max_network_bandwidth_for_user
paramètre pour limiter l'utilisation globale de la bande passante pour les requêtes par utilisateur. - Soutien pour
DROP TABLE
pour les tables temporaires. - Support pour la lecture
DateTime
valeurs au format d'horodatage Unix deCSV
etJSONEachRow
format. - Les répliques en retard dans les requêtes distribuées sont maintenant exclues par défaut (le seuil par défaut est de 5 minutes).
- Le verrouillage FIFO est utilisé pendant ALTER: une requête ALTER n'est pas bloquée indéfiniment pour les requêtes en cours d'exécution en continu.
- Option à définir
umask
dans le fichier de configuration. - Amélioration des performances pour les requêtes avec
DISTINCT
.
Corrections de bugs:
- Amélioration du processus de suppression des anciens nœuds dans ZooKeeper. Auparavant, les anciens nœuds n'étaient parfois pas supprimés s'il y avait des insertions très fréquentes, ce qui faisait que le serveur était lent à s'arrêter, entre autres choses.
- Correction de la randomisation lors du choix des hôtes pour la connexion à ZooKeeper.
- Correction de l'exclusion des répliques en retard dans les requêtes distribuées si la réplique est localhost.
- Correction d'une erreur où une partie des données dans un
ReplicatedMergeTree
table pourrait être cassé après l'exécutionALTER MODIFY
sur un élément dans unNested
structure. - Correction d'une erreur qui pourrait provoquer des requêtes SELECT “hang”.
- Améliorations apportées aux requêtes DDL distribuées.
- Correction de la requête
CREATE TABLE ... AS <materialized view>
. - Résolu à l'impasse dans l'
ALTER ... CLEAR COLUMN IN PARTITION
requête pourBuffer
table. - Correction de la valeur par défaut invalide pour
Enum
s (0 au lieu du minimum) lors de l'utilisation duJSONEachRow
etTSKV
format. - Résolu l'apparition de processus zombies lors de l'utilisation d'un dictionnaire avec un
executable
source. - Correction de segfault pour la requête HEAD.
Workflow amélioré pour développer et assembler ClickHouse:
- Vous pouvez utiliser
pbuilder
pour construire ClickHouse. - Vous pouvez utiliser
libc++
plutôtlibstdc++
pour construit sur Linux. - Ajout d'instructions pour l'utilisation d'outils d'analyse de code statique:
Coverage
,clang-tidy
,cppcheck
.
Veuillez noter lors de la mise à niveau:
- Il y a maintenant une valeur par défaut plus élevée pour le paramètre MergeTree
max_bytes_to_merge_at_max_space_in_pool
(la taille totale maximale des parties de données à fusionner, en octets): elle est passée de 100 GiB à 150 GiB. Cela peut entraîner de grandes fusions s'exécutant après la mise à niveau du serveur, ce qui pourrait entraîner une charge accrue sur le sous-système de disque. Si l'espace libre disponible sur le serveur est inférieur au double de la quantité totale des fusions en cours d'exécution, toutes les autres fusions s'arrêteront, y compris les fusions de petites parties de données. Par conséquent, les requêtes D'insertion échoueront avec le message “Merges are processing significantly slower than inserts.” L'utilisation de laSELECT * FROM system.merges
requête pour surveiller la situation. Vous pouvez également vérifier leDiskSpaceReservedForMerge
métrique dans l'system.metrics
table, ou en Graphite. Vous n'avez rien à faire pour résoudre ce problème, car le problème se résoudra une fois les grandes fusions terminées. Si vous trouvez cela inacceptable, vous pouvez restaurer la valeur précédente pour lemax_bytes_to_merge_at_max_space_in_pool
paramètre. Pour ce faire, allez à l' <merge_tree> section dans config.xml, ensemble<merge_tree>``<max_bytes_to_merge_at_max_space_in_pool>107374182400</max_bytes_to_merge_at_max_space_in_pool>
et redémarrer le serveur.
Clickhouse version 1.1.54284, 2017-08-29
- C'est une version de correction de la précédente 1.1.54282 libération. Il corrige les fuites dans le répertoire des pièces dans ZooKeeper.
Clickhouse version 1.1.54282, 2017-08-23
Cette version contient des corrections de bugs pour la version précédente 1.1.54276:
- Fixe
DB::Exception: Assertion violation: !_path.empty()
lors de l'insertion dans une table distribuée. - Correction de l'analyse lors de l'insertion au format RowBinary si les données d'entrée commencent par';'.
- Errors during runtime compilation of certain aggregate functions (e.g.
groupArray()
).
Clickhouse Version 1.1.54276, 2017-08-16
Nouveauté:
- Ajout d'une section facultative avec pour une requête SELECT. Exemple de requête:
WITH 1+1 AS a SELECT a, a*a
- INSERT peut être effectué de manière synchrone dans une table distribuée: OK n'est retourné qu'une fois toutes les données enregistrées sur tous les fragments. Ceci est activé par le paramètre insert_distributed_sync = 1.
- Ajout du type de données UUID pour travailler avec des identifiants de 16 octets.
- Ajout D'alias de CHAR, FLOAT et d'autres types pour la compatibilité avec Tableau.
- Ajout des fonctions toYYYYMM, toYYYYMMDD et toYYYYMMDDhhmmss pour convertir le temps en nombres.
- Vous pouvez utiliser les adresses IP (avec le nom d'hôte) pour identifier les serveurs pour les requêtes DDL en cluster.
- Ajout du support pour les arguments non constants et les décalages négatifs dans la fonction
substring(str, pos, len).
- Ajout du paramètre max_size pour
groupArray(max_size)(column)
fonction d'agrégation, et optimisé ses performances.
Les principaux changements:
- Améliorations de la sécurité: tous les fichiers du serveur sont créés avec des autorisations 0640 (peuvent être modifiés via paramètre de configuration).
- Amélioration des messages d'erreur pour les requêtes avec une syntaxe invalide.
- Réduction significative de la consommation de mémoire et amélioration des performances lors de la fusion de grandes sections de données MergeTree.
- Augmentation significative des performances des fusions de données pour le Remplacementmergetree engine.
- Amélioration des performances pour les insertions asynchrones à partir d'une table distribuée en combinant plusieurs insertions sources. Pour activer cette fonctionnalité, utilisez le paramètre distributed_directory_monitor_batch_inserts=1.
Modifications incompatibles en arrière:
- Modification du format binaire des états agrégés de
groupArray(array_column)
fonctions pour les tableaux.
Liste complète des modifications:
- Ajouté le
output_format_json_quote_denormals
paramètre, qui permet la sortie des valeurs NaN et inf au format JSON. - Allocation de flux optimisée lors de la lecture à partir d'une table distribuée.
- Les paramètres peuvent être configurés en mode Lecture seule si la valeur ne change pas.
- Ajout de la possibilité de récupérer des granules non entiers du moteur MergeTree afin de respecter les restrictions sur la taille de bloc spécifiée dans le paramètre preferred_block_size_bytes. Le but est de réduire la consommation de RAM et d'augmenter la localisation du cache lors du traitement des requêtes à partir de tables avec de grandes colonnes.
- Utilisation efficace des index qui contiennent des expressions comme
toStartOfHour(x)
pour des conditions commetoStartOfHour(x) op сonstexpr.
- Ajout de nouveaux paramètres pour les moteurs MergeTree (la section merge_tree dans config.XML):
- replicated_deduplication_window_seconds définit le nombre de secondes autorisé pour la déduplication des insertions dans les tables répliquées.
- cleanup_delay_period définit la fréquence de démarrage du nettoyage pour supprimer les données obsolètes.
- replicated_can_become_leader peut empêcher une réplique de devenir le leader (et d'affecter des fusions).
- Nettoyage accéléré pour supprimer les données obsolètes de ZooKeeper.
- Plusieurs améliorations et corrections pour les requêtes ddl en cluster. Un intérêt particulier est le nouveau paramètre distributed_ddl_task_timeout, qui limite le temps d'attente d'une réponse des serveurs du cluster. Si une requête ddl n'a pas été effectuée sur tous les hôtes, une réponse contiendra une erreur de délai d'attente et une requête sera exécutée en mode asynchrone.
- Amélioration de l'affichage des traces de pile dans les journaux du serveur.
- Ajouté le “none” valeur pour la méthode de compression.
- Vous pouvez utiliser plusieurs sections dictionaries_config dans config.XML.
- Il est possible de se connecter à MySQL via un socket dans le système de fichiers.
- Système.table de pièces a une nouvelle colonne avec des informations sur la taille des marques, en octets.
Corrections de bugs:
- Les tables distribuées utilisant une table de fusion fonctionnent maintenant correctement pour une requête SELECT avec une condition sur le
_table
champ. - Correction d'une condition de course rare dans ReplicatedMergeTree lors de la vérification des pièces de données.
- Fixe le gel sur “leader election” lors du démarrage d'un serveur.
- Le paramètre max_replica_delay_for_distributed_queries a été ignoré lors de l'utilisation d'une réplique locale de la source de données. Ce problème a été corrigé.
- Correction d'un comportement incorrect de
ALTER TABLE CLEAR COLUMN IN PARTITION
lorsque vous tentez de nettoyer une colonne non existante. - Correction d'une exception dans la fonction multiIf lors de l'utilisation de tableaux ou de chaînes vides.
- Correction d'allocations de mémoire excessives lors de la désérialisation du format natif.
- Correction d'une mise à jour automatique incorrecte des dictionnaires Trie.
- Correction d'une exception lors de l'exécution de requêtes avec une clause GROUP BY à partir d'une table de fusion lors de l'utilisation D'un exemple.
- Correction d'un plantage de GROUP BY lors de l'utilisation de distributed_aggregation_memory_efficient=1.
- Vous pouvez maintenant spécifier la base de données.table dans le côté droit de IN et JOIN.
- Trop de threads ont été utilisés pour l'agrégation parallèle. Ce problème a été corrigé.
- Correction de la façon dont le “if” fonction fonctionne avec des arguments FixedString.
- SELECT a mal fonctionné à partir d'une table distribuée pour les fragments avec un poids de 0. Ce problème a été corrigé.
- Exécuter
CREATE VIEW IF EXISTS no longer causes crashes.
- Correction d'un comportement incorrect lorsque input_format_skip_unknown_fields = 1 est défini et qu'il existe des nombres négatifs.
- Correction d'une boucle infinie dans le
dictGetHierarchy()
fonction s'il y a des données non valides dans le dictionnaire. - Fixe
Syntax error: unexpected (...)
erreurs lors de l'exécution de requêtes distribuées avec des sous-requêtes dans une clause IN ou JOIN et des tables de fusion. - Correction d'une interprétation incorrecte D'une requête SELECT à partir de tables de dictionnaire.
- Correction de l' “Cannot mremap” erreur lors de l'utilisation de tableaux dans In et JOIN clauses avec plus de 2 milliards d'éléments.
- Correction du basculement pour les dictionnaires avec MySQL comme source.
Workflow amélioré pour développer et assembler ClickHouse:
- Construit peuvent être assemblés en Arcadie.
- Vous pouvez utiliser gcc 7 pour compiler ClickHouse.
- Les builds parallèles utilisant ccache + distcc sont plus rapides maintenant.
Clickhouse version 1.1.54245, 2017-07-04
Nouveauté:
- DDL distribué (par exemple,
CREATE TABLE ON CLUSTER
) - La réplication de la requête
ALTER TABLE CLEAR COLUMN IN PARTITION.
- Le moteur pour les tables de dictionnaire (accès aux données du dictionnaire sous la forme d'une table).
- Moteur de base de données de dictionnaire (ce type de base de données a automatiquement des tables de dictionnaire disponibles pour tous les dictionnaires externes connectés).
- Vous pouvez vérifier les mises à jour du dictionnaire en envoyant une demande à la source.
- Noms de colonnes qualifiés
- Les identificateurs entre des guillemets doubles.
- Sessions dans L'interface HTTP.
- La requête OPTIMIZE pour une table répliquée peut s'exécuter non seulement sur le leader.
Modifications incompatibles en arrière:
- Supprimé ensemble GLOBAL.
Des modifications mineures:
- Maintenant, après le déclenchement d'une alerte, le journal imprime la trace complète de la pile.
- Détendu la vérification du nombre de pièces de données endommagées/supplémentaires au démarrage (il y avait trop de faux positifs).
Corrections de bugs:
- Correction d'une mauvaise connexion “sticking” lors de l'insertion dans une table distribuée.
- GLOBAL in fonctionne maintenant pour une requête à partir d'une table de fusion qui regarde une table distribuée.
- Le nombre incorrect de cœurs a été détecté sur une machine virtuelle Google Compute Engine. Ce problème a été corrigé.
- Changements dans le fonctionnement d'une source exécutable de dictionnaires externes mis en cache.
- Correction de la comparaison des chaînes contenant des caractères nuls.
- Correction de la comparaison des champs de clé primaire Float32 avec des constantes.
- Auparavant, une estimation incorrecte de la taille d'un champ pouvait entraîner des allocations trop importantes.
- Correction d'un plantage lors de l'interrogation d'une colonne Nullable ajoutée à une table en utilisant ALTER.
- Correction d'un plantage lors du tri par une colonne Nullable, si le nombre de lignes est inférieur à la limite.
- Correction d'une commande par sous-requête composée uniquement de valeurs constantes.
- Auparavant, une table répliquée pouvait rester dans l'état non valide après l'échec d'une table de suppression.
- Les alias des sous-requêtes scalaires avec des résultats vides ne sont plus perdus.
- Maintenant, une requête qui a utilisé la compilation n'échoue pas avec une erreur si le fichier. so est endommagé.