Выпуск распределённой СУБД TiDB 4.0
28 мая 2020 года
Доступен релиз распределённой СУБД TiDB 4.0 (Архивная копия от 29 октября 2017 на Wayback Machine), развиваемой под впечатлением от технологий Google Spanner и F1. TiDB относится к категории гибридных систем HTAP (Hybrid Transactional/Analytical Processing), способных как обеспечивать выполнение транзакций в реальном времени (OLTP), так и выполнять обработку аналитических запросов. Проект написан на языке Go и распространяется под лицензией Apache 2.0.
Особенности TiDB:
- Поддержка SQL и предоставление клиентского интерфейса, совместимого с протоколом MySQL, что упрощает адаптацию для TiDB существующих приложений, написанных для MySQL, а также позволяет задействовать распространённые клиентские библиотеки. Кроме протокола MySQL для обращения к СУБД можно использовать API на базе JSON и коннектор для Spark.
- Из возможностей SQL поддерживаются индексы, агрегатные функции, выражения GROUP BY, ORDER BY, DISTINCT, слияния (LEFT JOIN / RIGHT JOIN / CROSS JOIN), представления, оконные функции и подзапросы. Предоставляемых возможностей достаточно для организации работы с TiDB таких web-приложений, как PhpMyAdmin, Gogs и Wordpress;
- Возможность горизонтального масштабирования и обеспечения отказоустойчивости: размер хранилища и вычислительную мощность можно наращивать простым подключением новых узлов. Данные распределяются по узлам с избыточностью, позволяющей продолжить работу в случае сбоя отдельных узлов. Сбои обрабатываются автоматически.
- Система гарантирует непротиворечивость и для клиентского ПО выглядит как одна большая СУБД, несмотря на то, что фактически для выполнения транзакции привлекаются данные со множества узлов.
- Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственные движки распределённого хранилища TiKV и TiFlash. TiKV хранит данные в разрезе строк в формате ключ/значение и является более оптимальным для задач обработки транзакций (OLTP). TiFlash хранит данные в привязке к столбцам и позволяет добиться более высокой производительности при решении аналитических задач (OLAP).
- Возможность асинхронного изменения схемы хранения, позволяющая на лету добавлять столбцы и индексы без остановки обработки текущих операций.
В новом выпуске:
- По умолчанию включён распределённый сборщик мусора Green GC, позволяющий существенно повысить скорость сборки мусора в крупных кластерах и повысить стабильность работы;
- Добавлена поддержка больших транзакций, размер которых ограничены практически размером физической памяти. Ограничение размера одной транзакции увеличено со 100 МБ до 10ГБ;
- Добавлена поддержка команд BACKUP и RESTORE для резервного копирования;
- Добавлена возможность установки блокировки на таблицы;
- Добавлен совместимый с MySQL механизм изоляции транзакций на уровне чтения (READ COMMITTED);
- В команду "ADMIN SHOW DDL JOBS" добавлена поддержка выражений LIKE и WHERE;
- Добавлен параметр oom-use-tmp-storage, позволяющий использовать временные файлы для кэширования промежуточных результатов в условиях нехватки оперативной памяти;
- Добавлено ключевое слово Random для присвоения атрибутам случайных значений;
- В команде LOAD DATA появилась возможность использования шестнадцатеричных и двоичных выражений;
- Добавлено 15 параметров для управления поведением оптимизатора;
- Добавлены средства для диагностики производительности SQL-запросов. Добавлен лог медленных запросов, доступный через системные таблицы SLOW_QUERY / CLUSTER_SLOW_QUERY;
- Добавлена поддержка функций для работы с последовательностями;
- Добавлена возможность динамического изменения параметров конфигурации, читаемых из PD (Placement Driver, сервер управления кластером). Добавлена возможность использования выражения "SET CONFIG" для изменения настроек узлов PD/TiKV.
- Добавлена настройка max-server-connections для ограничения максимального числа одновременных соединений к серверу (по умолчанию 4096);
- Увеличена производительность в ситуациях, когда запрошенные столбцы полностью покрываются индексами;
- Добавлена оптимизация запросов на основе слияния индексов;
- Повышена производительность операций с диапазонами значений;
- Снижена нагрузка на CPU за счёт кэширования результатов обращения к индексам и отсеивания дубликатов;
- Добавлена поддержка нового формата хранения строк, позволяющего увеличить производительность таблиц с большим числом столбцов;
- В функции GROUP_CONCAT появилась поддержка выражения "ORDER BY";
- Добавлена возможность извлечения данных из лога TiFlash через SQL;
- В команде "RECOVER TABLE реализована поддержка восстановления обрезанных таблиц;
- Добавлена системная таблица DDLJobs для запроса деталей о выполнении работ DDL;
- Добавлена возможность применения команды SHOW CONFIG для показа настроек PD и TiKV;
- Включён по умолчанию кэш сопроцессора;
- Число сопрограмм (goroutine) в фазе повторных попыток коммита теперь может контролироваться при помощи настройки committer-concurrency;
- Добавлена возможность отображения регионов раздела таблиц (table partition);
- В tidb-server добавлена возможность ограничения размера временного хранилища;
- Добавлена поддержка операций "insert into tbl_name partition(partition_name_list)" и "replace into tbl_name partition(partition_name_list)";
- В используемом для секционирования (партицирования) хэше добавлена поддержка фильтрации по признаку "is null";
- Для секционированных таблиц добавлена поддержка операций проверки, чистки и восстановления индексов.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.