ClickHouse/docs/fr/whats_new/changelog/2017.md
2020-04-04 12:15:31 +03:00

23 KiB
Raw Blame History

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 dans config.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 sur Page Down
  • L'interprétation correcte de certaines requêtes complexes avec GLOBAL IN et UNION 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 de MergeTree 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 la roundToExp2 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 et identity 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, et groupBitXor (pour la compatibilité, ils sont également disponibles sous les noms de BIT_AND, BIT_OR, et BIT_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 de CSV et JSONEachRow 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écution ALTER MODIFY sur un élément dans un Nested 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 pour Buffer table.
  • Correction de la valeur par défaut invalide pour Enum s (0 au lieu du minimum) lors de l'utilisation du JSONEachRow et TSKV 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ôt libstdc++ 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 la SELECT * FROM system.merges requête pour surveiller la situation. Vous pouvez également vérifier le DiskSpaceReservedForMerge 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 le max_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 comme toStartOfHour(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é.