о настройке mutations_sync. Задача - перезалить часть данных, сначала нужно все данные по предикату удалить, а после вставить новые. После прочтения документации мне показалось, что при установке mutations_sync=2, команда ALTER DELETE завершается после того, как все данные удалены на всех репликах и партиции перезаписаны.
                  
                  
                  
                  
                  
                  Выполняю в clickhouse-client
                  
                  
                  set mutations_sync = 2;
                  
                  
                  
                  
                  
                  ALTER TABLE mytable ON CLUSTER mycluster
                  
                  
                      DELETE WHERE device_id = 42540
                  
                  
                  SETTINGS mutations_sync = 2
                  
                  
                  
                  
                  
                  Query id: d2cd632a-0848-461b-bc1c-d18659b70d59
                  
                  
                  
                  
                  
                  ┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
                  
                  
                  │ ch_server_1 │ 9000 │      0 │       │                   1 │                0 │
                  
                  
                  │ ch_server_2 │ 9000 │      0 │       │                   0 │                0 │
                  
                  
                  └─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
                  
                  
                  
                  
                  
                  2 rows in set. Elapsed: 0.638 sec.
                  
                  
                  Следом выполняю count(*) WHERE device_id = 42540 и получаю не нулевое количество.
                  
                  
                  
                  
                  
                  Я что-то не так понял или сделал?
                  
                  
                
а что в system.mutations для этой мутации?
в mutations присутствует запись. parts_to_do постепенно уменьшается. но я ожидал что команда ALTER TABLE вернет управление только когда все партиции перезапишутся. возможно есть разница в выполнении из clickhouse-client и по jdbc? Я выполняю из client, но это исключительно для тестирования. по факту на prod нужно будет выполнять по jdbc и было бы удобно написать в коде что-то типа client.execute("ALTER TABLE DELETE ....) client.execute("INSERT ...") т.е. я хочу записывать новые данные только после того, как удалены старые
странно, таблица replicated?
Обсуждают сегодня