* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
2.9 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
33 | ReplacingMergeTree |
ReplacingMergeTree
Le moteur diffère de MergeTree en ce qu'il supprime les doublons avec la même valeur de clé primaire (ou, plus précisément, avec la même clé de tri valeur).
La déduplication des données se produit uniquement lors d'une fusion. La fusion se produit en arrière-plan à un moment inconnu, vous ne pouvez donc pas le planifier. Certaines des données peuvent rester non traitées. Bien que vous puissiez exécuter une fusion imprévue en utilisant le OPTIMIZE
requête, ne comptez pas l'utiliser, parce que la OPTIMIZE
requête va lire et écrire une grande quantité de données.
Ainsi, ReplacingMergeTree
convient pour effacer les données en double en arrière-plan afin d'économiser de l'espace, mais cela ne garantit pas l'absence de doublons.
Création d'une Table
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = ReplacingMergeTree([ver])
[PARTITION BY expr]
[ORDER BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]
Pour une description des paramètres de requête, voir demande de description.
ReplacingMergeTree Paramètres
-
ver
— column with version. TypeUInt*
,Date
ouDateTime
. Paramètre facultatif.Lors de la fusion,
ReplacingMergeTree
de toutes les lignes avec la même clé primaire ne laisse qu'un:- Dernier dans la sélection, si
ver
pas ensemble. - Avec la version maximale, si
ver
défini.
- Dernier dans la sélection, si
Les clauses de requête
Lors de la création d'un ReplacingMergeTree
la table de la même clause sont nécessaires, comme lors de la création d'un MergeTree
table.
Méthode obsolète pour créer une Table
!!! attention "Attention" N'utilisez pas cette méthode dans les nouveaux projets et, si possible, remplacez les anciens projets par la méthode décrite ci-dessus.
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE [=] ReplacingMergeTree(date-column [, sampling_expression], (primary, key), index_granularity, [ver])
Tous les paramètres excepté ver
ont la même signification que dans MergeTree
.
ver
- colonne avec la version. Paramètre facultatif. Pour une description, voir le texte ci-dessus.