- Mayor rendimiento de inserción
- Mayor rendimiento de las fusiones en segundo plano
- Mayor rendimiento de las mutaciones
- Operaciones de escalado y reducción de escala más rápidas
- Consistencia fuerte con menor sobrecarga para las consultas SELECT
Introspección
La mayoría de las tablas del sistema usadas para la introspección de ReplicatedMergeTree también existen en SharedMergeTree, exceptosystem.replication_queue y system.replicated_fetches, ya que no se produce replicación de datos ni de metadatos. Sin embargo, SharedMergeTree tiene alternativas equivalentes para estas dos tablas.
system.virtual_parts
Esta tabla sirve como alternativa a system.replication_queue para SharedMergeTree. Almacena información sobre el conjunto más reciente de partes actuales, así como sobre partes futuras en proceso, como fusiones, mutaciones y particiones eliminadas.
system.shared_merge_tree_fetches
Esta tabla es la alternativa a system.replicated_fetches para SharedMergeTree. Contiene información sobre los fetches actualmente en curso de claves primarias y checksums en memoria.
Activación de SharedMergeTree
SharedMergeTree está habilitado de forma predeterminada.
En los servicios que admiten el motor de tabla SharedMergeTree, no necesita habilitar nada manualmente. Puede crear tablas de la misma forma que antes, y se utilizará automáticamente un motor de tabla basado en SharedMergeTree correspondiente al motor especificado en su consulta CREATE TABLE.
my_table con el motor de tabla SharedMergeTree.
No es necesario especificar ENGINE=MergeTree, ya que en ClickHouse Cloud default_table_engine=MergeTree. La siguiente consulta es idéntica a la anterior.
CREATE TABLE con SHOW CREATE TABLE:
Configuración
El comportamiento de algunas opciones de configuración cambia de forma significativa:insert_quorum— todas las inserciones en SharedMergeTree son inserciones con cuórum (se escriben en almacenamiento compartido), por lo que esta configuración no es necesaria al usar el motor de tabla SharedMergeTree.insert_quorum_parallel— todas las inserciones en SharedMergeTree son inserciones con cuórum (se escriben en almacenamiento compartido), por lo que esta configuración no es necesaria al usar el motor de tabla SharedMergeTree.select_sequential_consistency— no requiere inserciones con cuórum y generará carga adicional en clickhouse-keeper en las consultasSELECT
Consistencia
SharedMergeTree proporciona una consistencia ligera mejor que ReplicatedMergeTree. Al insertar en SharedMergeTree, no es necesario especificar ajustes comoinsert_quorum o insert_quorum_parallel. Las inserciones se realizan con cuórum, lo que significa que los metadatos se almacenan en ClickHouse-Keeper y se replican al menos al cuórum de nodos de ClickHouse-Keeper. Cada réplica del clúster recuperará de forma asíncrona la información nueva desde ClickHouse-Keeper.
La mayoría de las veces, no debería usar select_sequential_consistency ni SYSTEM SYNC REPLICA LIGHTWEIGHT. La replicación asíncrona debería cubrir la mayoría de los escenarios y tiene una latencia muy baja. En el caso poco frecuente de que necesite evitar por completo las lecturas obsoletas, siga estas recomendaciones en este orden de preferencia:
-
Si ejecuta sus consultas en la misma sesión o en el mismo nodo para las lecturas y escrituras, no es necesario usar
select_sequential_consistency, porque su réplica ya tendrá los metadatos más recientes. -
Si escribe en una réplica y lee desde otra, puede usar
SYSTEM SYNC REPLICA LIGHTWEIGHTpara forzar a la réplica a recuperar los metadatos desde ClickHouse-Keeper. -
Use
select_sequential_consistencycomo ajuste de la consulta.
Visibilidad de ALTER y de las mutaciones
SharedMergeTree coordina los cambios de metadata a través de ClickHouse Keeper. Las réplicas obtienen la metadata modificada de forma asíncrona, por lo que un cambio de metadata no tiene por qué ser visible de inmediato en todas las réplicas. Las lecturas realizadas en la misma sesión y en el mismo nodo ya utilizan la metadata actualizada. Si una lectura debe ejecutarse en otra réplica justo después de un cambio de metadata, utilice SYSTEM SYNC REPLICA LIGHTWEIGHT para que esa réplica obtenga la metadata desde ClickHouse Keeper.
Las operaciones ALTER que generan mutaciones ejecutan en segundo plano un proceso que crea nuevas partes en el almacenamiento compartido y coordina su visibilidad a través de ClickHouse Keeper. No se trata de un proceso de reescritura o de transferencia de datos por réplica, como ocurre en ReplicatedMergeTree.
En ClickHouse Cloud, alter_sync tiene el valor predeterminado 0; configúrelo cuando un client deba esperar a que finalicen las operaciones de metadata o una reescritura MODIFY COLUMN que no afecte únicamente a la metadata. Para las operaciones UPDATE, DELETE y MATERIALIZE ..., utilice mutations_sync para controlar la espera y supervise el progreso en system.mutations.