J'ai eu besoin de modifier la notion "Nullable" d'une colonne, or il semble que ce soit impossible.
La table que j'ai utilisée pour les premiers tests comporte toutes les colonnes en Nullable ce qui peut gêner certains types d' opérations.
J'ai donc initialisé une nouvelle table avec les colonnes adéquates en "not null" et j'y ai inséré les lignes de l'ancienne table.
Au passage une remarque sur la syntaxe :
- Une colonne "nullable" se déclare sous la forme "Nullable(String)"
- La même en "not null" se déclare sous la forme plus classique "String not null".
La recopie est une opération simple
insert into table1 select * from table2;
J'ai donc lancé cet ordre en direct sur cette table de 540 Millions de rangs et le résultat est :
Elapsed: 817.372 sec. Processed 524.04 million rows, 200.88 GB
(641.13 thousand rows/s., 245.76 MB/s.)
Soit quand même plus de 13 minutes ...
CPU > 90 .. 130%
IO 60 .. 370 Mo/seconde la moitié du temps en lecture, l'autre moitié en écriture.
Pour se débarrasser de l'ancienne table :
- sudo touch /var/lib/clickhouse/flags/force_drop_table
- sudo chmod 666 /var/lib/clickhouse/flags/force_drop_table
- Puis, enfin dans le shell Clickhouse.
"drop ancienne_table"