Saltar al contenido principal
Al usar el motor de tabla Memory en ClickHouse Cloud, los datos no se replican en todos los nodos (por diseño). Para garantizar que todas las consultas se enruten al mismo nodo y que el motor de tabla Memory funcione como se espera, puede hacer una de las siguientes cosas:
  • Ejecutar todas las operaciones en la misma sesión
  • Usar un cliente que utilice TCP o la interfaz nativa (lo que habilita la compatibilidad con conexiones persistentes), como clickhouse-client
El motor Memory almacena los datos en RAM, sin comprimir. Los datos se almacenan exactamente en la misma forma en que se reciben al leerlos. En otras palabras, leer de esta tabla no tiene coste. El acceso concurrente a los datos está sincronizado. Los bloqueos son breves: las operaciones de lectura y escritura no se bloquean entre sí. No se admiten índices. La lectura se paraleliza. La productividad máxima (más de 10 GB/s) se alcanza en consultas simples, porque no hay lectura desde el disco, ni descompresión, ni deserialización de datos. (Cabe señalar que, en muchos casos, la productividad del motor MergeTree es casi igual de alta). Al reiniciar el servidor, los datos desaparecen de la tabla y esta queda vacía. Normalmente, no se justifica el uso de este motor de tabla. Sin embargo, puede utilizarse para pruebas y para tareas en las que se requiere la máxima velocidad con un número relativamente pequeño de filas (hasta aproximadamente 100.000.000). El motor Memory es utilizado por el sistema para tablas temporales con datos externos de consulta (consulte la sección “Datos externos para procesar una consulta”), y para implementar GLOBAL IN (consulte la sección “Operadores IN”). Se pueden especificar límites superior e inferior para limitar el tamaño de la tabla del motor Memory, lo que le permite actuar de forma efectiva como un búfer circular (consulte Parámetros del motor).

Parámetros del motor

  • min_bytes_to_keep — Cantidad mínima de bytes que se deben conservar cuando la tabla en memoria tiene un límite de tamaño.
    • Valor predeterminado: 0
    • Requiere max_bytes_to_keep
  • max_bytes_to_keep — Cantidad máxima de bytes que se deben conservar en la tabla en memoria, donde las filas más antiguas se eliminan en cada inserción (es decir, como un búfer circular). La cantidad máxima de bytes puede superar el límite indicado si el lote más antiguo de filas que debe eliminarse queda por debajo del límite de min_bytes_to_keep al añadir un bloque grande.
    • Valor predeterminado: 0
  • min_rows_to_keep — Cantidad mínima de filas que se deben conservar cuando la tabla en memoria tiene un límite de tamaño.
    • Valor predeterminado: 0
    • Requiere max_rows_to_keep
  • max_rows_to_keep — Cantidad máxima de filas que se deben conservar en la tabla en memoria, donde las filas más antiguas se eliminan en cada inserción (es decir, como un búfer circular). La cantidad máxima de filas puede superar el límite indicado si el lote más antiguo de filas que debe eliminarse queda por debajo del límite de min_rows_to_keep al añadir un bloque grande.
    • Valor predeterminado: 0
  • compress - Si los datos en memoria deben comprimirse.
    • Valor predeterminado: false

Uso

Inicializar la configuración
Modificar la configuración
Nota: Los parámetros de límite para bytes y rows pueden establecerse al mismo tiempo; sin embargo, se aplicarán los límites inferiores de max y min.

Ejemplos

además, para las filas:
Última modificación el 2 de julio de 2026