ClickHouse/CHANGELOG_RU.md
2017-09-29 01:46:52 +03:00

22 KiB
Raw Blame History

Релиз ClickHouse 1.1.54292

Новые возможности:

  • Добавлена функция pointInPolygon для работы с координатами на плоскости.
  • Добавлена агрегатная функция sumMap, обеспечивающая суммирование массивов аналогично SummingMergeTree.
  • Добавлена функция trunc. Увеличена производительность функций округления round, floor, ceil, roundToExp2. Исправлена логика работы функций округления. Изменена логика работы функции roundToExp2 для дробных и отрицательных чисел.
  • Ослаблена зависимость исполняемого файла ClickHouse от версии libc. Один и тот же исполняемый файл ClickHouse может запускаться и работать на широком множестве Linux систем. Замечание: зависимость всё ещё присутствует при использовании скомпилированных запросов (настройка compile = 1, по-умолчанию не используется).
  • Уменьшено время динамической компиляции запросов.

Исправления ошибок:

  • Исправлена ошибка, которая могла приводить к сообщениям part ... intersects previous part и нарушению консистентности реплик.
  • Исправлена ошибка, приводящая к блокировке при завершении работы сервера, если в это время ZooKeeper недоступен.
  • Удалено избыточное логгирование при восстановлении реплик.
  • Исправлена ошибка в реализации UNION ALL.
  • Исправлена ошибка в функции concat, возникающая в случае, если первый столбец блока имеет тип Array.
  • Исправлено отображение прогресса в таблице system.merges.

Релиз ClickHouse 1.1.54289

Новые возможности:

  • Запросы SYSTEM для административных действий с сервером: SYSTEM RELOAD DICTIONARY, SYSTEM RELOAD DICTIONARIES, SYSTEM DROP DNS CACHE, SYSTEM SHUTDOWN, SYSTEM KILL.
  • Добавлены функции для работы с массивами: concat, arraySlice, arrayPushBack, arrayPushFront, arrayPopBack, arrayPopFront.
  • Добавлены параметры root и identity для конфигурации ZooKeeper. Это позволяет изолировать разных пользователей одного ZooKeeper кластера.
  • Добавлены агрегатные функции groupBitAnd, groupBitOr, groupBitXor (для совместимости доступны также под именами BIT_AND, BIT_OR, BIT_XOR).
  • Возможность загрузки внешних словарей из MySQL с указанием сокета на файловой системе.
  • Возможность загрузки внешних словарей из MySQL через SSL соединение (параметры ssl_cert, ssl_key, ssl_ca).
  • Добавлена настройка max_network_bandwidth_for_user для ограничения общего потребления сети для всех запросов одного пользователя.
  • Поддержка DROP TABLE для временных таблиц.
  • Поддержка чтения значений типа DateTime в формате unix timestamp из форматов CSV и JSONEachRow.
  • Включено по-умолчанию отключение отстающих реплик при распределённых запросах (по-умолчанию порог равен 5 минутам).
  • Используются FIFO блокировки при ALTER: выполнение ALTER не будет неограниченно блокироваться при непрерывно выполняющихся запросах.
  • Возможность задать umask в конфигурационном файле.
  • Увеличена производительность запросов с DISTINCT.

Исправления ошибок:

  • Более оптимальная процедура удаления старых нод в ZooKeeper. Ранее в случае очень частых вставок, старые ноды могли не успевать удаляться, что приводило, в том числе, к очень долгому завершению сервера.
  • Исправлена рандомизация при выборе хостов для соединения с ZooKeeper.
  • Исправлено отключение отстающей реплики при распределённых запросах, если реплика является localhost.
  • Исправлена ошибка, в связи с которой кусок данных таблицы типа ReplicatedMergeTree мог становиться битым после выполнения ALTER MODIFY элемента Nested структуры.
  • Исправлена ошибка приводящая к возможному зависанию SELECT запросов.
  • Доработки распределённых DDL запросов.
  • Исправлен запрос CREATE TABLE ... AS <materialized view>.
  • Исправлен дедлок при запросе ALTER ... CLEAR COLUMN IN PARTITION для Buffer таблиц.
  • Исправлено использование неправильного значения по-умолчанию для Enum-ов (0 вместо минимального) при использовании форматов JSONEachRow и TSKV.
  • Исправлено появление zombie процессов при работе со словарём с источником executable.
  • Исправлен segfault при запросе HEAD.

Улучшения процесса разработки и сборки ClickHouse:

  • Возможность сборки с помощью pbuilder.
  • Возможность сборки с использованием libc++ вместо libstdc++ под Linux.
  • Добавлены инструкции для использования статических анализаторов кода Coverity, clang-tidy, cppcheck.

На что обратить внимание при обновлении:

  • Увеличено значение по-умолчанию для настройки MergeTree max_bytes_to_merge_at_max_space_in_pool (максимальный суммарный размер кусков в байтах для мержа) со 100 GiB до 150 GiB. Это может привести к запуску больших мержей после обновления сервера, что может вызвать повышенную нагрузку на дисковую подсистему. Если же на серверах, где это происходит, количество свободного места менее чем в два раза больше суммарного объёма выполняющихся мержей, то в связи с этим перестанут выполняться какие-либо другие мержи, включая мержи мелких кусков. Это приведёт к тому, что INSERT-ы будут отклоняться с сообщением "Merges are processing significantly slower than inserts". Для наблюдения, используйте запрос SELECT * FROM system.merges. Вы также можете смотреть на метрику DiskSpaceReservedForMerge в таблице system.metrics или в Graphite. Для исправления этой ситуации можно ничего не делать, так как она нормализуется сама после завершения больших мержей. Если же вас это не устраивает, вы можете вернуть настройку max_bytes_to_merge_at_max_space_in_pool в старое значение, прописав в config.xml в секции <merge_tree> <max_bytes_to_merge_at_max_space_in_pool>107374182400</max_bytes_to_merge_at_max_space_in_pool> и перезапустить сервер.

Релиз ClickHouse 1.1.54284

  • Релиз содержит изменения к предыдущему релизу 1.1.54282, которые исправляют утечку записей о кусках в ZooKeeper

Релиз ClickHouse 1.1.54282

Релиз содержит исправления к предыдущему релизу 1.1.54276:

  • Исправлена ошибка DB::Exception: Assertion violation: !_path.empty() при вставке в Distributed таблицу.
  • Исправлен парсинг при вставке в формате RowBinary, если входные данные начинаются с ';'.
  • Исправлена ошибка при рантайм-компиляции некоторых агрегатных функций (например, groupArray()).

Релиз ClickHouse 1.1.54276

Новые возможности:

  • Добавлена опциональная секция WITH запроса SELECT. Пример запроса: WITH 1+1 AS a SELECT a, a*a
  • Добавлена возможность синхронной вставки в Distributed таблицу: выдается Ok только после того как все данные записались на все шарды. Активируется настройкой insert_distributed_sync=1
  • Добавлен тип данных UUID для работы с 16-байтовыми идентификаторами
  • Добавлены алиасы типов CHAR, FLOAT и т.д. для совместимости с Tableau
  • Добавлены функции toYYYYMM, toYYYYMMDD, toYYYYMMDDhhmmss для перевода времени в числа
  • Добавлена возможность использовать IP адреса (совместно с hostname) для идентификации сервера при работе с кластерными DDL запросами
  • Добавлена поддержка неконстантных аргументов и отрицательных смещений в функции substring(str, pos, len)
  • Добавлен параметр max_size для агрегатной функции groupArray(max_size)(column), и оптимизирована её производительность

Основные изменения:

  • Улучшение безопасности: все файлы сервера создаются с правами 0640
  • Улучшены сообщения об ошибках в случае синтаксически неверных запросов
  • Значительно уменьшен расход оперативной памяти и улучшена производительность слияний больших MergeTree-кусков данных
  • Значительно увеличена производительность слияний данных для движка ReplacingMergeTree
  • Улучшена производительность асинхронных вставок из Distributed таблицы за счет объединения нескольких исходных вставок. Функциональность включается настройкой distributed_directory_monitor_batch_inserts=1.

Обратно несовместимые изменения:

  • Изменился бинарный формат агрегатных состояний функции groupArray(array_column) для массивов

Полный список изменений:

  • Добавлена настройка output_format_json_quote_denormals, включающая вывод nan и inf значений в формате JSON
  • Более оптимальное выделение потоков при чтении из Distributed таблиц
  • Разрешено задавать настройки в режиме readonly, если их значение не изменяется
  • Добавлена возможность считывать нецелые гранулы движка MergeTree для выполнения ограничений на размер блока, задаваемый настройкой preferred_block_size_bytes - для уменьшения потребления оперативной памяти и увеличения кэш-локальности при обработке запросов из таблиц со столбцами большого размера
  • Эффективное использование индекса, содержащего выражения типа toStartOfHour(x), для условий вида toStartOfHour(x) op сonstexpr
  • Добавлены новые настройки для MergeTree движков (секция merge_tree в config.xml):
    • replicated_deduplication_window_seconds позволяет задать интервал дедупликации вставок в Replicated-таблицы в секундах
    • cleanup_delay_period - периодичность запуска очистки неактуальных данных
    • replicated_can_become_leader - запретить реплике становиться лидером (и назначать мержи)
  • Ускорена очистка неактуальных данных из ZooKeeper
  • Множественные улучшения и исправления работы кластерных DDL запросов. В частности, добавлена настройка distributed_ddl_task_timeout, ограничивающая время ожидания ответов серверов кластера.
  • Улучшено отображение стэктрейсов в логах сервера
  • Добавлен метод сжатия none
  • Возможность использования нескольких секций dictionaries_config в config.xml
  • Возможность подключения к MySQL через сокет на файловой системе
  • В таблицу system.parts добавлен столбец с информацией о размере marks в байтах

Исправления багов:

  • Исправлена некорректная работа Distributed таблиц, использующих Merge таблицы, при SELECT с условием на поле _table
  • Исправлен редкий race condition в ReplicatedMergeTree при проверке кусков данных
  • Исправлено возможное зависание процедуры leader election при старте сервера
  • Исправлено игнорирование настройки max_replica_delay_for_distributed_queries при использовании локальной реплики в качестве источника данных
  • Исправлено некорректное поведение ALTER TABLE CLEAR COLUMN IN PARTITION при попытке очистить несуществующую колонку
  • Исправлено исключение в функции multiIf при использовании пустых массивов или строк
  • Исправлено чрезмерное выделение памяти при десериализации формата Native
  • Исправлено некорректное автообновление Trie словарей
  • Исправлено исключение при выполнении запросов с GROUP BY из Merge-таблицы при использовании SAMPLE
  • Исправлено падение GROUP BY при использовании настройки distributed_aggregation_memory_efficient=1
  • Добавлена возможность указывать database.table в правой части IN и JOIN
  • Исправлено использование слишком большого количества потоков при параллельной агрегации
  • Исправлена работа функции if с аргументами FixedString
  • Исправлена некорректная работа SELECT из Distributed-таблицы для шардов с весом 0
  • Исправлено падение запроса CREATE VIEW IF EXISTS
  • Исправлено некорректное поведение при input_format_skip_unknown_fields=1 в случае отрицательных чисел
  • Исправлен бесконечный цикл в функции dictGetHierarchy() в случае некоторых некорректных данных словаря
  • Исправлены ошибки типа Syntax error: unexpected (...) при выполнении распределенных запросов с подзапросами в секции IN или JOIN, в случае использования совместно с Merge таблицами
  • Исправлена неправильная интерпретация SELECT запроса из таблиц типа Dictionary
  • Исправлена ошибка "Cannot mremap" при использовании множеств в секциях IN, JOIN, содержащих более 2 млрд. элементов
  • Исправлен failover для словарей с источником MySQL

Улучшения процесса разработки и сборки ClickHouse:

  • Добавлена возмозможность сборки в Arcadia
  • Добавлена возможность сборки с помощью gcc 7
  • Ускорена параллельная сборка с помощью ccache+distcc

Релиз ClickHouse 1.1.54245

Новые возможности:

  • Распределённые DDL (например, CREATE TABLE ON CLUSTER)
  • Реплицируемый запрос ALTER TABLE CLEAR COLUMN IN PARTITION
  • Движок таблиц Dictionary (доступ к данным словаря в виде таблицы)
  • Движок баз данных Dictionary (в такой базе автоматически доступны Dictionary-таблицы для всех подключённых внешних словарей)
  • Возможность проверки необходимости обновления словаря путём отправки запроса в источник
  • Qualified имена столбцов
  • Квотирование идентификаторов двойными кавычками
  • Сессии в HTTP интерфейсе
  • Запрос OPTIMIZE для Replicated таблицы теперь можно выполнять не только на лидере

Обратно несовместимые изменения:

  • Убрана команда SET GLOBAL

Мелкие изменения:

  • Теперь после получения сигнала в лог печатается полный стектрейс
  • Ослаблена проверка на количество повреждённых/лишних кусков при старте (было слишком много ложных срабатываний)

Исправления багов:

  • Исправлено залипание плохого соединения при вставке в Distributed таблицу
  • GLOBAL IN теперь работает при запросе из таблицы Merge, смотрящей в Distributed
  • Теперь правильно определяется количество ядер на виртуалках Google Compute Engine
  • Исправления в работе executable источника кэшируемых внешних словарей
  • Исправлены сравнения строк, содержащих нулевые символы
  • Исправлено сравнение полей первичного ключа типа Float32 с константами
  • Раньше неправильная оценка размера поля могла приводить к слишком большим аллокациям
  • Исправлено падение при запросе Nullable столбца, добавленного в таблицу ALTER-ом
  • Исправлено падение при сортировке по Nullable столбцу, если количество строк меньше LIMIT
  • Исправлен ORDER BY подзапроса, состоящего только из константных значений
  • Раньше Replicated таблица могла остаться в невалидном состоянии после неудавшегося DROP TABLE
  • Алиасы для скалярных подзапросов с пустым результатом теперь не теряются
  • Теперь запрос, в котором использовалась компиляция, не завершается ошибкой, если .so файл повреждается