Família de motores de tabela Log
Os motores de tabela da família
Log podem armazenar dados em sistemas de arquivos distribuídos HDFS ou S3.
Propriedades comuns
- 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
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.