DeepSeek总结的 DuckDB 2.0 文档新内容

2.0 文档中有哪些新内容

本页追踪 DuckDB 2.0 中引入功能的文档,围绕 DuckDB v2.0 亮点博客文章的主题组织。每个部分链接到相关文档。

DuckDB 作为服务器:Quack 和 CONNECT

DuckDB 2.0 可以作为服务器运行,让多个客户端通过网络连接到一个共享实例。quack 扩展提供远程协议,新的 CONNECT 和 DISCONNECT 语句从 SQL 打开和关闭连接。命令行客户端可以直接启动服务器并连接到它。

  • Quack 扩展
  • CONNECT 和 DISCONNECT 语句
  • CLI -serve 和 -connect 参数

VARIANT 成为一等公民

VARIANT 类型存储半结构化、无 schema 的数据,如 JSON,同时保持列式执行的性能。一族 variant_* 函数构造和检查 variant 值。

  • Variant 类型
  • Variant 函数

触发器

DuckDB 2.0 添加了触发器支持,所以你可以自动响应表变化运行操作。这对于构建审计表和执行不变量很有用。

  • CREATE TRIGGER 语句

SQL 方言新增内容

DuckDB 2.0 在几个方向扩展了 SQL 方言,从新的连接类型到数据修改 CTE 和更友好的变量语法。

  • 显式连接类型语法,包括最近邻(NEAREST)连接
  • 数据修改 CTE,包括 CTE 中的 COPY ... 块
  • 嵌套 schema
  • $⟨variable⟩ 变量简写,包括会话变量作为默认参数值
  • JSON 变更函数
  • 按 UNNEST 分组
  • SQL 标准的 FETCH FIRST 语法
  • SECURE VIEW
  • SHOW 语句
  • 设置序列值
  • regexp_extract 新增内容

异步 I/O

DuckDB 2.0 在后台发出读取并保持多个请求在途,这加快了从 S3 等对象存储读取的查询。该行为由 async_threads 和 read-ahead 设置控制。

  • 异步 I/O 概述
  • 线程池和预读
  • 异步 I/O 配置设置

全面更快的查询

DuckDB 2.0 包含优化器和引擎改进,包括更快的递归 CTE 和更好的行组裁剪。

存储格式 v2.0

新的数据库文件默认使用 v2.0.0 存储格式。该格式增加了惰性元数据加载、更好的压缩和损坏验证。由于该格式不向后兼容,有一份迁移指南涵盖升级现有部署。

  • 默认存储版本
  • 存储版本表
  • 迁移现有部署:参见 DuckDB v2.0 迁移指南

全新的 SQL 解析器

DuckDB 2.0 引入了一个基于 PEG 的 SQL 解析器,取代了源自 PostgreSQL 的解析器,并允许扩展贡献语法。

  • PEG 解析器

不依赖 ICU 的时区、日历和排序规则

DuckDB 2.0 提供了更小、更快的时区、日历和排序规则支持的原生实现,减少了对 ICU 扩展的依赖。

编写一次扩展,自己托管它们

DuckDB 2.0 附带了一个改进的、稳定的 C API,具有版本化 ABI,所以构建一次的扩展在跨版本时持续工作。你还可以注册和托管自己的扩展仓库,包括静态链接到自定义构建中。

  • C API
  • 扩展仓库
  • 静态链接扩展:参见静态链接扩展

其他文档更新

站点中记录的其他 2.0 功能,按领域分组。

SQL

  • TIMESTAMPTZ_NS,具有纳秒精度的时区感知时间戳
  • 用于降采样时间序列数据的 lttb 聚合
  • duckdb_functions 中新的 extension_name 列
  • duckdb_secret_type_parameters() 函数,列出每种 secret 类型接受的参数
  • duckdb_columns() 和 information_schema.columns 中的 is_generated 和 generation_expression 列
  • 用于精确十进制除法的 decimal_division 函数
  • 用于精确十进制平均值的 decimal_average 聚合
  • 用于构建 VARIANT 对象的 variant_group_object 聚合
  • 用于把值收集到 VARIANT 数组中的 variant_group_array 函数
  • 为 PostgreSQL 兼容性用 ALTER TABLE ... RENAME TO 重命名视图
  • EXCEPT 作为星号表达式中 EXCLUDE 的同义词
  • 无参数 GROUPING_ID() 和 GROUPING() 默认为所有 GROUP BY 列
  • 反引号引用的标识符作为双引号的替代
  • DEFERRED 主键和唯一约束在提交时检查
  • EXPLAIN (SQL) 把优化后的计划渲染为可执行 SQL
  • 空 STRUCT 类型

数据导入和导出

  • 写入 GeoJSON 和加载 GeoJSON
  • Parquet schema 参数和新的 Parquet 写入选项
  • 用于计算自定义分区子目录的 PARTITION_PATH 复制选项
  • 用于在写入前排序行的 ORDER_BY 复制选项
  • 用于控制时间戳写入方式的 TIMESTAMP_IS_ADJUSTED_TO_UTC 和 WRITE_TIMESTAMP_AS_INT96 Parquet 写入选项
  • 用于 Parquet 行组裁剪的 file_row_group_number 虚拟列
  • 用于限制存储的拒绝行大小的 rejects_line_size_limit CSV 参数

客户端

  • CLI 代理模式,命令行客户端中的交互式助手
  • CLI 命令历史:.history 命令和 shell_history() 表函数
  • 美化打印、高亮的 .schema 输出,带 --no-indent 以恢复单行形式

配置和性能分析

  • 把 max_memory 设置为总系统内存的百分比
  • 用于限制查询墙钟时间的 max_execution_time 设置
  • 控制分离数据库时检查点的 checkpoint_on_detach 设置
  • 弃用表函数参数中隐式标识符到字符串的转换,带 table_function_identifier_conversion 设置
  • 移除 enable_http_logging 和 http_logging_output 设置,改用统一日志框架
  • 用于设置异步 HTTP 客户端池大小的 http_client_pool_capacity 设置
  • 指标层和 tracked_metrics 设置
  • 整数除以零的 IEEE 浮点运算语义
  • web 性能分析格式和用于在浏览器中打开查询图的 CLI .web 命令

构建

  • 现在构建 DuckDB 需要 C++17 编译器
相关推荐
IvorySQL1 小时前
PostgreSQL 日报| PG19 主备切换挂起修复(10 月 17 日)
数据库·postgresql
erzong2311 小时前
Linux网络:UDP编程踩坑日记
linux·网络·udp
roman_日积跬步-终至千里2 小时前
【数据Agent论文·查询与语义|11】EntSQL:给了业务文档,模型为何还是写不对SQL?
数据库·人工智能·sql·数据分析
lwx9148522 小时前
Deepin操作系统
linux·服务器·网络
2601_962885722 小时前
如何用 Python 算最大回撤和回撤恢复期?
java·数据库·python
先知后行。2 小时前
进程间通信(IPC)
linux·运维·服务器
zcn1262 小时前
Left join+or exists+like关联优化
数据库·sql优化改写
我科绝伦(Huanhuan Zhou)2 小时前
Oracle 表空间碎片整理实战:shrink space 与 move table 全解析
数据库·oracle
跨境数据猎手2 小时前
机房、住宅、原生IP区别在哪,三类代理的说明
网络·网络协议·tcp/ip