缓冲数据以写入内存,并定期将其刷新到另一个表。在读取操作期间,同时从缓冲区和另一个表读取数据。
Buffer(database, table, num_layers, min_time, max_time, min_rows, max_rows, min_bytes, max_bytes)
引擎参数:
database- 数据库名称。可以使用返回字符串的常量表达式来代替数据库名称。
table –将数据刷新到的表。
num_layers–并行层。在物理上,该表将表示为num_layers独立的缓冲区。建议值:16。
min_time,max_time,min_rows,max_rows,min_bytes,和max_bytes-条件从缓冲区刷新数据。
如果满足所有min条件或至少一个max条件,则从缓冲区刷新数据并将其写入目标表。
min_time,max_time–从第一次写入缓冲区起的时间(以秒为单位)。
min_rows,max_rows–缓冲区中的行数条件。
min_bytes,max_bytes–缓冲区中字节数的条件。
在写操作期间,数据被插入到num_layers许多随机缓冲区中。或者,如果要插入的数据部分足够大(大于max_rows或max_bytes),则将其直接写入目标表,而忽略缓冲区。
对于每个num_layers缓冲区,分别计算刷新数据的条件。例如,如果num_layers = 16和max_bytes = 100000000,则最大RAM消耗为1.6 GB。
例:
CREATE TABLE merge.hits_buffer AS merge.