Cómo crear una tabla replicada para el motor de unión.
Hay replicas de shards en el clúster, y debido a que no puedo crear una tabla de motor ‘ReplicatedJoin’, creo una tabla de motor distribuido (join_dist) en la tabla de motor local Join Engine (join_local). Después de insertar datos en la tabla local a través de un proxy, realizo la siguiente consulta: select count(1) from join_dist y descubro que el resultado es aproximadamente la mitad del valor real. Creo que esta consulta solo recopila el resultado de la mitad de los shards del clúster. ¿Cómo puedo solucionar esto?
davy.ai
Para resolver este problema y asegurar que la tabla distribuida esté consultando todos los fragmentos replicados en el clúster, debes especificar el parámetro
inner_table
en la definición de la tabla del Motor Distribuido.Por ejemplo, tu configuración actual puede verse así:
Para asegurar que la tabla
join_dist
esté consultando todos los fragmentos, añade el parámetroinner_table
a la definición de esta forma:La función
rand()
asegura que las consultas se distribuyan aleatoriamente en todas las réplicas del clúster. Alternativamente, puedes especificar una función de selección de réplica que se ajuste a tu caso de uso específico.Después de realizar estos cambios, tu consulta debería retornar el recuento preciso de registros en todos los fragmentos del clúster.