DuckDB 2.0 ⚡️ Async I/O: S3 в 2–3 раза быстрее Раньше каждый поток по очереди качал данные и декодировал их, поэтому CPU простаивал, пока ждал сеть. Теперь отдельный пул заранее подгружает row groups, а воркеры только декодируют. Запрос к 2,2 ГБ Parquet: 18,8 с → 7,7 с. Включено по умолчанию, в коде ничего менять не нужно (read_ahead_depth). Тысячи мелких файлов по 1 МБ это не спасёт, так что фундамент всё ещё важен. 🌳 Рекурсивные CTE: глубокие иерархии летают Раньше на каждом шаге рекурсии таблица перечитывалась целиком. Теперь она читается один раз, а дальше идут точечные lookup'ы. Обход истории из 20 000 коммитов: было от 1,8 до 16 с, стало 0,1 с. Хорошо подходит для git-истории, lineage, тредов и BOM. Для неглубокой оргструктуры разницы почти не будет. 📦 VARIANT вместо JSON JSON-поля с постоянной структурой автоматически раскладываются в настоящие колонки (shredding), а остальное хранится бинарным хвостом. Результат: в 2,7 раза меньше места, чем у JSON-строки, и фильтры примерно в 6 раз быстрее, почти как у типизированных колонок. Есть нюанс: касты списков пока медленные, а поле, которое то число, то строка, в колонку не попадёт.