Esses motores foram desenvolvidos para cenários em que você precisa gravar rapidamente muitas tabelas pequenas (com até cerca de 1 milhão de linhas) e lê-las depois por completo.
Motores da família:
Os motores de tabela da família Log podem armazenar dados em sistemas de arquivos distribuídos HDFS ou S3.
Propriedades comuns
Motores:
-
Armazenam dados em disco.
-
Acrescentam dados ao final do arquivo ao gravar.
-
Oferecem suporte a bloqueios para acesso concorrente aos dados.
Durante consultas
INSERT, a tabela é bloqueada, e outras consultas de leitura e gravação de dados aguardam até que a tabela seja desbloqueada. Se não houver consultas de gravação de dados, qualquer número de consultas de leitura de dados poderá ser executado concorrentemente. -
Não oferecem suporte a mutações.
-
Não oferecem suporte a índices.
Isso significa que consultas
SELECTpara intervalos de dados não são eficientes. -
Não gravam dados de forma atômica.
Você pode acabar com uma tabela com dados corrompidos se algo interromper a operação de gravação, por exemplo, um desligamento anormal do servidor.
Diferenças
O motor TinyLog é o mais simples da família e oferece os recursos mais limitados e a menor eficiência. O motor TinyLog não oferece suporte à leitura paralela de dados por várias threads em uma única consulta. Ele lê os dados mais lentamente do que outros motores da família que oferecem suporte à leitura paralela em uma única consulta e usa quase tantos descritores de arquivo quanto o motor Log, porque armazena cada coluna em um arquivo separado. Use-o apenas em cenários simples.
Os motores Log e StripeLog oferecem suporte à leitura paralela de dados. Ao ler os dados, o ClickHouse usa várias threads. Cada thread processa um bloco de dados separado. O motor Log usa um arquivo separado para cada coluna da tabela. O StripeLog armazena todos os dados em um único arquivo. Como resultado, o motor StripeLog usa menos descritores de arquivo, mas o motor Log oferece maior eficiência na leitura de dados.