mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-07 16:14:52 +00:00
9a26d48ad0
* Basic blog similar to docs * rename post * no post content in post_meta * update readme and template * more "en" content * complete "en" content * build blog redirects * redirects for migration * link sitemaps * update po * add "ru" content * ru redirects * remove old domain mentions * adjust styles * content improvements * +1 alt * use main images from CDN * use re-hosted in-content images * extra vertical margin around embedded youtube * minor improvements * adjust post page * adjust html meta * adjust post page * improve blog rendering
22 KiB
22 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
79 | 2017 |
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Esta versión contiene correcciones de errores para la versión anterior 1.1.54318:
- Se corrigió un error con una posible condición de carrera en la replicación que podría conducir a la pérdida de datos. Este problema afecta a las versiones 1.1.54310 y 1.1.54318. Si utiliza una de estas versiones con tablas replicadas, se recomienda encarecidamente la actualización. Este problema se muestra en los registros en mensajes de advertencia como
Part ... from own log doesn't exist.
El problema es relevante incluso si no ve estos mensajes en los registros.
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Esta versión contiene correcciones de errores para la versión anterior 1.1.54310:
- Se corrigieron las eliminaciones de filas incorrectas durante las fusiones en el motor SummingMergeTree
- Se corrigió una pérdida de memoria en los motores MergeTree no duplicados
- Se corrigió la degradación del rendimiento con inserciones frecuentes en los motores MergeTree
- Se corrigió un problema que provocaba que la cola de replicación dejara de ejecutarse
- Rotación y archivado fijos de los registros del servidor
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Novedad:
- Clave de partición personalizada para la familia MergeTree de motores de tabla.
- Kafka motor de mesa.
- Se agregó soporte para cargar CatBoost modelos y aplicarlos a los datos almacenados en ClickHouse.
- Se agregó soporte para zonas horarias con desplazamientos no enteros de UTC.
- Se agregó soporte para operaciones aritméticas con intervalos de tiempo.
- El intervalo de valores para los tipos Date y DateTime se extiende hasta el año 2105.
- Se agregó el
CREATE MATERIALIZED VIEW x TO y
consulta (especifica una tabla existente para almacenar los datos de una vista materializada). - Se agregó el
ATTACH TABLE
consulta sin argumentos. - La lógica de procesamiento para columnas anidadas con nombres que terminan en -Map en una tabla SummingMergeTree se extrajo a la función de agregado sumMap. Ahora puede especificar dichas columnas explícitamente.
- El tamaño máximo del diccionario IP trie se incrementa a 128M entradas.
- Se agregó la función getSizeOfEnumType.
- Se agregó la función agregada sumWithOverflow.
- Se agregó soporte para el formato de entrada Cap'n Proto.
- Ahora puede personalizar el nivel de compresión al usar el algoritmo zstd.
Cambios incompatibles hacia atrás:
- No se permite la creación de tablas temporales con un motor que no sea Memoria.
- No se permite la creación explícita de tablas con el motor View o MaterializedView.
- Durante la creación de la tabla, una nueva comprobación comprueba que la expresión de clave de muestreo está incluida en la clave principal.
Corrección de errores:
- Se corrigieron bloqueos al insertar sincrónicamente en una tabla distribuida.
- Se corrigió la adición y eliminación no atómica de partes en tablas replicadas.
- Los datos insertados en una vista materializada no están sujetos a una deduplicación innecesaria.
- La ejecución de una consulta en una tabla distribuida para la que la réplica local está rezagada y las réplicas remotas no están disponibles ya no genera ningún error.
- Los usuarios no necesitan permisos de acceso
default
base de datos para crear tablas temporales más. - Se corrigió el bloqueo al especificar el tipo de matriz sin argumentos.
- Se corrigieron bloqueos cuando el volumen del disco que contiene los registros del servidor está lleno.
- Se corrigió un desbordamiento en la función toRelativeWeekNum para la primera semana de la época de Unix.
Mejoras de construcción:
- Varias bibliotecas de terceros (especialmente Poco) se actualizaron y convirtieron a submódulos de git.
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Novedad:
- Soporte TLS en el protocolo nativo (para habilitar, establecer
tcp_ssl_port
enconfig.xml
).
Corrección de errores:
ALTER
para tablas replicadas ahora intenta comenzar a ejecutarse tan pronto como sea posible.- Se corrigió el bloqueo al leer datos con la configuración
preferred_block_size_bytes=0.
- Se corrigieron los bloqueos de
clickhouse-client
al presionarPage Down
- Interpretación correcta de ciertas consultas complejas con
GLOBAL IN
yUNION ALL
FREEZE PARTITION
siempre funciona atómicamente ahora.- Las solicitudes POST vacías ahora devuelven una respuesta con el código 411.
- Se corrigieron errores de interpretación para expresiones como
CAST(1 AS Nullable(UInt8)).
- Se ha corregido un error al leer
Array(Nullable(String))
las columnas deMergeTree
tabla. - Se corrigió el bloqueo al analizar consultas como
SELECT dummy AS dummy, dummy AS b
- Los usuarios se actualizan correctamente
users.xml
- Control correcto cuando un diccionario ejecutable devuelve un código de respuesta distinto de cero.
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Novedad:
- Se agregó el
pointInPolygon
función para trabajar con coordenadas en un plano de coordenadas. - Se agregó el
sumMap
función de agregado para calcular la suma de matrices, similar aSummingMergeTree
. - Se agregó el
trunc
función. Rendimiento mejorado de las funciones de redondeo (round
,floor
,ceil
,roundToExp2
) y corrigió la lógica de cómo funcionan. Cambió la lógica delroundToExp2
función para fracciones y números negativos. - El archivo ejecutable ClickHouse ahora depende menos de la versión de libc. El mismo archivo ejecutable ClickHouse se puede ejecutar en una amplia variedad de sistemas Linux. Todavía hay una dependencia al usar consultas compiladas (con la configuración
compile = 1
, que no se usa por defecto). - Se ha reducido el tiempo necesario para la compilación dinámica de consultas.
Corrección de errores:
- Se corrigió un error que a veces producía
part ... intersects previous part
mensajes y la coherencia de réplica debilitada. - Se corrigió un error que causaba que el servidor se bloqueara si ZooKeeper no estaba disponible durante el apagado.
- Se eliminó el registro excesivo al restaurar réplicas.
- Se corrigió un error en la implementación de UNION ALL.
- Se ha corregido un error en la función concat que se producía si la primera columna de un bloque tiene el tipo Array.
- El progreso ahora se muestra correctamente en el sistema.fusiones tabla.
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Novedad:
SYSTEM
consultas para la administración del servidor:SYSTEM RELOAD DICTIONARY
,SYSTEM RELOAD DICTIONARIES
,SYSTEM DROP DNS CACHE
,SYSTEM SHUTDOWN
,SYSTEM KILL
.- Funciones añadidas para trabajar con matrices:
concat
,arraySlice
,arrayPushBack
,arrayPushFront
,arrayPopBack
,arrayPopFront
. - Añadir
root
yidentity
parámetros para la configuración de ZooKeeper. Esto le permite aislar usuarios individuales en el mismo clúster de ZooKeeper. - Funciones agregadas añadidas
groupBitAnd
,groupBitOr
, ygroupBitXor
(por compatibilidad, también están disponibles bajo los nombresBIT_AND
,BIT_OR
, yBIT_XOR
). - Los diccionarios externos se pueden cargar desde MySQL especificando un socket en el sistema de archivos.
- Los diccionarios externos se pueden cargar desde MySQL a través de SSL (
ssl_cert
,ssl_key
,ssl_ca
parámetros). - Se agregó el
max_network_bandwidth_for_user
para restringir el uso general del ancho de banda para consultas por usuario. - Soporte para
DROP TABLE
para tablas temporales. - Soporte para lectura
DateTime
valores en formato de marca de tiempo Unix desde elCSV
yJSONEachRow
formato. - Las réplicas rezagadas en las consultas distribuidas ahora se excluyen de forma predeterminada (el umbral predeterminado es de 5 minutos).
- El bloqueo FIFO se usa durante ALTER: una consulta ALTER no se bloquea indefinidamente para consultas que se ejecutan continuamente.
- Opción para establecer
umask
en el archivo de configuración. - Rendimiento mejorado para consultas con
DISTINCT
.
Corrección de errores:
- Se ha mejorado el proceso de eliminación de nodos antiguos en ZooKeeper. Anteriormente, los nodos antiguos a veces no se eliminaban si había inserciones muy frecuentes, lo que hacía que el servidor tardara en apagarse, entre otras cosas.
- Se corrigió la aleatorización al elegir hosts para la conexión a ZooKeeper.
- Se corrigió la exclusión de réplicas rezagadas en consultas distribuidas si la réplica es localhost.
- Se corrigió un error por el que una parte de datos en un
ReplicatedMergeTree
la tabla podría estar rota después de correrALTER MODIFY
en un elemento en unNested
estructura. - Se corrigió un error que podía causar que las consultas SELECT “hang”.
- Mejoras en las consultas DDL distribuidas.
- Se corrigió la consulta
CREATE TABLE ... AS <materialized view>
. - Se resolvió el punto muerto en el
ALTER ... CLEAR COLUMN IN PARTITION
consulta paraBuffer
tabla. - Se corrigió el valor predeterminado no válido para
Enum
s (0 en lugar del mínimo) cuando se utiliza elJSONEachRow
yTSKV
formato. - Se resolvió la aparición de procesos zombis al usar un diccionario con un
executable
fuente. - Se corrigió el segfault para la consulta HEAD.
Flujo de trabajo mejorado para desarrollar y ensamblar ClickHouse:
- Usted puede utilizar
pbuilder
para construir ClickHouse. - Usted puede utilizar
libc++
en lugar delibstdc++
para construir en Linux. - Se agregaron instrucciones para usar herramientas de análisis de código estático:
Coverage
,clang-tidy
,cppcheck
.
Tenga en cuenta al actualizar:
- Ahora hay un valor predeterminado más alto para la configuración MergeTree
max_bytes_to_merge_at_max_space_in_pool
(el tamaño total máximo de las partes de datos a fusionar, en bytes): ha aumentado de 100 GiB a 150 GiB. Esto podría dar lugar a grandes fusiones que se ejecutan después de la actualización del servidor, lo que podría provocar una mayor carga en el subsistema de disco. Si el espacio libre disponible en el servidor es inferior al doble de la cantidad total de las fusiones que se están ejecutando, esto hará que todas las demás fusiones dejen de ejecutarse, incluidas las fusiones de pequeñas partes de datos. Como resultado, las consultas INSERT fallarán con el mensaje “Merges are processing significantly slower than inserts.” Utilice elSELECT * FROM system.merges
consulta para supervisar la situación. También puede comprobar elDiskSpaceReservedForMerge
métrica en elsystem.metrics
mesa, o en Grafito. No necesita hacer nada para solucionar esto, ya que el problema se resolverá solo una vez que finalicen las fusiones grandes. Si encuentra esto inaceptable, puede restaurar el valor anterior para elmax_bytes_to_merge_at_max_space_in_pool
configuración. Para hacer esto, vaya al<merge_tree>
sección en config.xml, establecer<merge_tree>``<max_bytes_to_merge_at_max_space_in_pool>107374182400</max_bytes_to_merge_at_max_space_in_pool>
y reinicie el servidor.
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
- Esta es una versión de corrección de errores para la versión anterior 1.1.54282. Corrige fugas en el directorio de piezas en ZooKeeper.
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Esta versión contiene correcciones de errores para la versión anterior 1.1.54276:
- Fijo
DB::Exception: Assertion violation: !_path.empty()
cuando se inserta en una tabla distribuida. - Se corrigió el análisis al insertar en formato RowBinary si los datos de entrada comienzan con';'.
- Errors during runtime compilation of certain aggregate functions (e.g.
groupArray()
).
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Novedad:
- Se agregó una sección WITH opcional para una consulta SELECT. Consulta de ejemplo:
WITH 1+1 AS a SELECT a, a*a
- INSERT se puede realizar de forma sincrónica en una tabla distribuida: se devuelve OK solo después de guardar todos los datos en todos los fragmentos. Esto se activa mediante la configuración insert_distributed_sync=1.
- Se agregó el tipo de datos UUID para trabajar con identificadores de 16 bytes.
- Se agregaron alias de CHAR, FLOAT y otros tipos para compatibilidad con Tableau.
- Se agregaron las funciones aYYYYMM, aYYYYMMDD y aYYYYMMDDhhmmss para convertir el tiempo en números.
- Puede utilizar direcciones IP (junto con el nombre de host) para identificar servidores para consultas DDL en clúster.
- Se agregó soporte para argumentos no constantes y compensaciones negativas en la función
substring(str, pos, len).
- Se agregó el parámetro max_size para el
groupArray(max_size)(column)
función agregada, y optimizó su funcionamiento.
Principales cambios:
- Mejoras de seguridad: todos los archivos del servidor se crean con permisos 0640 (se pueden cambiar a través de
<umask>
parámetro de configuración). - Mensajes de error mejorados para consultas con sintaxis no válida.
- Se ha reducido significativamente el consumo de memoria y se ha mejorado el rendimiento al combinar grandes secciones de datos de MergeTree.
- Aumentó significativamente el rendimiento de las fusiones de datos para el motor ReplacingMergeTree.
- Mejora del rendimiento de las inserciones asincrónicas de una tabla distribuida mediante la combinación de varias inserciones de origen. Para habilitar esta funcionalidad, utilice la configuración de directorio_distribuido_monitor_batch_inserts=1.
Cambios incompatibles hacia atrás:
- Se ha cambiado el formato binario de los estados agregados de
groupArray(array_column)
funciones para matrices.
Lista completa de cambios:
- Se agregó el
output_format_json_quote_denormals
configuración, que permite generar valores nan e inf en formato JSON. - Asignación de secuencias optimizada al leer desde una tabla distribuida.
- Los ajustes se pueden configurar en modo de solo lectura si el valor no cambia.
- Se agregó la capacidad de recuperar gránulos no enteros del motor MergeTree para cumplir con las restricciones en el tamaño de bloque especificado en la configuración preferred_block_size_bytes. El propósito es reducir el consumo de RAM y aumentar la localidad de caché al procesar consultas desde tablas con columnas grandes.
- Uso eficiente de índices que contienen expresiones como
toStartOfHour(x)
para condiciones comotoStartOfHour(x) op сonstexpr.
- Se agregaron nuevas configuraciones para los motores MergeTree (la sección merge_tree en config.XML):
- replicated_deduplication_window_seconds establece el número de segundos permitidos para la deduplicación de inserciones en tablas replicadas.
- cleanup_delay_period establece con qué frecuencia iniciar la limpieza para eliminar datos obsoletos.
- replicated_can_become_leader puede evitar que una réplica se convierta en el líder (y asigne fusiones).
- Limpieza acelerada para eliminar datos obsoletos de ZooKeeper.
- Múltiples mejoras y correcciones para consultas DDL en clúster. De particular interés es la nueva configuración distribut_ddl_task_timeout, que limita el tiempo de espera para una respuesta de los servidores en el clúster. Si no se ha realizado una solicitud ddl en todos los hosts, una respuesta contendrá un error de tiempo de espera y una solicitud se ejecutará en modo asíncrono.
- Mejora de la visualización de los rastros de pila en los registros del servidor.
- Se agregó el “none” valor para el método de compresión.
- Puede usar varias secciones dictionaries_config en config.XML.
- Es posible conectarse a MySQL a través de un socket en el sistema de archivos.
- Sistema.partes tiene una nueva columna con información sobre el tamaño de las marcas, en bytes.
Corrección de errores:
- Las tablas distribuidas que utilizan una tabla Merge ahora funcionan correctamente para una consulta SELECT con una condición
_table
campo. - Se corrigió una rara condición de carrera en ReplicatedMergeTree al verificar partes de datos.
- Se corrigió la posible congelación en “leader election” al iniciar un servidor.
- El valor max_replica_delay_for_distributed_queries se omitió al usar una réplica local del origen de datos. Esto ha sido solucionado.
- Comportamiento incorrecto fijo de
ALTER TABLE CLEAR COLUMN IN PARTITION
al intentar limpiar una columna no existente. - Se ha corregido una excepción en la función multiIf al usar matrices o cadenas vacías.
- Se corrigieron asignaciones de memoria excesivas al deserializar el formato nativo.
- Se corrigió la actualización automática incorrecta de los diccionarios Trie.
- Se ha corregido una excepción al ejecutar consultas con una cláusula GROUP BY desde una tabla Merge cuando se usa SAMPLE.
- Se corrigió un bloqueo de GROUP BY cuando se usabaributed_aggregation_memory_efficient = 1.
- Ahora puede especificar la base de datos.en el lado derecho de IN y JOIN.
- Se usaron demasiados subprocesos para la agregación paralela. Esto ha sido solucionado.
- Corregido cómo el “if” funciona con argumentos FixedString.
- SELECT funcionó incorrectamente desde una tabla distribuida para fragmentos con un peso de 0. Esto ha sido solucionado.
- Ejecutar
CREATE VIEW IF EXISTS no longer causes crashes.
- Se corrigió el comportamiento incorrecto cuando input_format_skip_unknown_fields = 1 se establece y hay números negativos.
- Se corrigió un bucle infinito en el
dictGetHierarchy()
función si hay algunos datos no válidos en el diccionario. - Fijo
Syntax error: unexpected (...)
errores al ejecutar consultas distribuidas con subconsultas en una cláusula IN o JOIN y tablas Merge. - Se corrigió una interpretación incorrecta de una consulta SELECT de tablas de diccionario.
- Se corrigió el “Cannot mremap” error al usar matrices en las cláusulas IN y JOIN con más de 2 mil millones de elementos.
- Se corrigió la conmutación por error para los diccionarios con MySQL como fuente.
Flujo de trabajo mejorado para desarrollar y ensamblar ClickHouse:
- Las construcciones se pueden ensamblar en Arcadia.
- Puedes usar gcc 7 para compilar ClickHouse.
- Las compilaciones paralelas que usan ccache + distcc son más rápidas ahora.
Somos una empresa especializada en el desarrollo de soluciones tecnológicas
Novedad:
- DDL distribuido (por ejemplo,
CREATE TABLE ON CLUSTER
) - La consulta replicada
ALTER TABLE CLEAR COLUMN IN PARTITION.
- El motor para las tablas del diccionario (acceso a los datos del diccionario en forma de tabla).
- Motor de base de datos de diccionario (este tipo de base de datos tiene automáticamente tablas de diccionario disponibles para todos los diccionarios externos conectados).
- Puede comprobar si hay actualizaciones en el diccionario enviando una solicitud al origen.
- Nombres de columna cualificados
- Citando identificadores usando comillas dobles.
- Sesiones en la interfaz HTTP.
- La consulta OPTIMIZE para una tabla replicada puede ejecutarse no solo en el líder.
Cambios incompatibles hacia atrás:
- Eliminado SET GLOBAL.
Cambios menores:
- Ahora, después de activar una alerta, el registro imprime el seguimiento completo de la pila.
- Se relajó la verificación del número de partes de datos dañadas / adicionales al inicio (hubo demasiados falsos positivos).
Corrección de errores:
- Se corrigió una mala conexión “sticking” cuando se inserta en una tabla distribuida.
- GLOBAL IN ahora funciona para una consulta de una tabla de combinación que mira a una tabla distribuida.
- Se detectó el número incorrecto de núcleos en una máquina virtual de Google Compute Engine. Esto ha sido solucionado.
- Cambios en el funcionamiento de una fuente ejecutable de diccionarios externos en caché.
- Se corrigió la comparación de cadenas que contenían caracteres nulos.
- Se corrigió la comparación de los campos de clave primaria Float32 con constantes.
- Anteriormente, una estimación incorrecta del tamaño de un campo podía conducir a asignaciones demasiado grandes.
- Se corrigió un bloqueo al consultar una columna Nullable agregada a una tabla usando ALTER.
- Se corrigió un bloqueo al ordenar por una columna Nullable, si el número de filas es menor que LIMIT.
- Se corrigió una subconsulta ORDER BY que consistía solo en valores constantes.
- Anteriormente, una tabla replicada podía permanecer en el estado no válido después de un error DROP TABLE.
- Los alias para subconsultas escalares con resultados vacíos ya no se pierden.
- Ahora una consulta que usó compilación no falla con un error si el archivo .so se daña.