Mutaciones sobre la marcha
SELECT posteriores devolverán automáticamente los valores modificados. Cuando las mutaciones sobre la marcha no están habilitadas, es posible que tenga que esperar a que las mutaciones se apliquen mediante un proceso en segundo plano para ver los valores modificados.
Las mutaciones sobre la marcha pueden habilitarse para las tablas de la familia MergeTree activando la configuración a nivel de consulta apply_mutations_on_fly.
Ejemplo
SELECT:
SELECT ahora devuelve el resultado correcto de inmediato, sin tener que esperar a que se apliquen las mutaciones:
Impacto en el rendimiento
SELECT. Sin embargo, tenga en cuenta que las mutaciones siguen materializándose de forma asíncrona en segundo plano, lo cual es un proceso costoso.
Si el número de mutaciones enviadas supera constantemente, durante cierto intervalo de tiempo, el número de mutaciones que se procesan en segundo plano, la cola de mutaciones no materializadas pendientes de aplicar seguirá creciendo. Esto acabará degradando el rendimiento de las consultas SELECT.
Sugerimos habilitar la configuración apply_mutations_on_fly junto con otras configuraciones a nivel de MergeTree, como number_of_mutations_to_throw y number_of_mutations_to_delay, para limitar el crecimiento indefinido de las mutaciones no materializadas.
Compatibilidad con subconsultas y funciones no deterministas
mutations_max_literal_size_to_replace). Solo se admiten funciones no deterministas constantes (p. ej., la función now()).
Estos comportamientos se controlan mediante las siguientes configuraciones:
mutations_execute_nondeterministic_on_initiator- si es true, las funciones no deterministas se ejecutan en la réplica iniciadora y se reemplazan por literales en las consultasUPDATEyDELETE. Valor predeterminado:false.mutations_execute_subqueries_on_initiator- si es true, las subconsultas escalares se ejecutan en la réplica iniciadora y se reemplazan por literales en las consultasUPDATEyDELETE. Valor predeterminado:false.mutations_max_literal_size_to_replace- El tamaño máximo, en bytes, de los literales serializados que se reemplazarán en las consultasUPDATEyDELETE. Valor predeterminado:16384(16 KiB).