Седьмая бета версия OrioleDB, высокопроизводительного движка хранения для PostgreSQL
Дата публикации:Mon, 02 Dec 2024 08:02:59 +0300
Представлена бета-версия движка хранения OrioleDB beta7 и опубликованы результаты новых тестов, демонстрирующих значительное повышение производительности по сравнению с традиционным PostgreSQL. В версии beta7 были внедрены оптимизации, направленные на улучшение работы с многопоточными нагрузками и ускорение операций чтения и записи. Первый стабильный релиз OrioleDB планируется сформировать в 2025 году. Движок написан на языке Си и распространяется под лицензией PostgreSQL, похожей на лицензии BSD и MIT.
Проект ОrioleDB развивает альтернативный движок хранения для PostgreSQL, разработанный с целью преодоления ограничений стандартного механизма хранения и повышения общей эффективности системы. Например,
ОrioleDB позволяет обойтись без периодического выполнения операции VACUUM для сборки мусора, благодаря реализации механизма MVCC (Multi-Version Concurrency Control) на базе логов отката (undo logs), работающих на уровне отдельных блоков и строк, а также системы автоматического слияния страниц, содержащих данные. ОrioleDB также использует 64-разрядные идентификаторы транзакций, что решает проблему с переполнением счётчиков.
Для упрощения использования в распределённых системах и распараллеливания операций в OrioleDB организовано ведение
WAL-лога транзакций на уровне строк. При выполнении операции UPDATE поддерживается замена данных по месту (без освобождения текущей записи и создания новой), что положительно сказывается на производительности. В OrioleDB также реализованы такие возможности, как чтение страниц с данными без использования блокировок, прямое связывание страниц в оперативной памяти со страницами в постоянном хранилище, применение механизма CoW (copy-on-write) при фиксации контрольных точек для создания непротиворечивых снапшотов в любой момент времени, режим хранения данных в сжатом виде с использованием алгоритма ZSTD.
Из присутствующих в седьмой бета-версии OrioleDB ограничений отмечается возможность использования только индексов в формате B-tree (в будущем появится поддержка всех типов индексов PostgerSQL), а также отсутствие поддержки предварительно подготовленных транзакций (PREPARE TRANSACTION) и команды "REINDEX" в режиме "CONCURRENTLY". OrioleDB реализован в форме подключаемого расширения, требующего внесения изменений в основную кодовую базу PostgreSQL.
В тестах производительности TPC-C, которые моделируют нагрузку транзакционной обработки в реальных условиях, седьмая бета-версия OrioleDB показала значительное превосходство над штатным движком PostgreSQL. Тестирование проводилось с различным количеством одновременно работающих клиентов, чтобы оценить масштабируемость и производительность системы при увеличении нагрузки.
В тестах, оценивающих пропускную способность транзакций, движок OrioleDB достиг более высокой пропускной способности, измеряемой в транзакциях в минуту (tpmC). При увеличении числа клиентов производительность OrioleDB продолжала расти линейно, тогда как у движка Heap в PostgreSQL наблюдалась тенденция к стагнации и даже снижению после определенного порога.
В тестах на время отклика среднее время отклика транзакций в OrioleDB было заметно ниже по сравнению с PostgreSQL. Таким образом, системы на базе OrioleDB могут обрабатывать больше транзакций за тот же промежуток времени, обеспечивая при этом более быстрое обслуживание запросов. При измерении использования ресурсов движок OrioleDB продемонстрировал более эффективное использование CPU и памяти, благодаря оптимизированному управлению ресурсами.
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=62327