Duckdb_缓存和日志以及文件

Duckdb缓存和日志以及文件

1.文件系统

Global Files and Directories
    DuckDB creates the following global files and directories in the user's home directory (denoted with ~):
secret_directory	设置持久密钥的存储目录	VARCHAR	~/.duckdb/stored_secrets
temp_directory	    设置临时文件写入目录	VARCHAR	⟨database_name⟩.tmp或者.tmp(在内存模式下)

2.duckdb_logs 日志系统

DuckDB日志系统是数据库运维和开发的重要工具
    enable_logging	    启用日志记录器
	enabled_log_types	设置已启用日志记录器的列表
	logging_level	日志中将记录的日志级别
	logging_mode	确定要记录哪些类型的日志消息。
	logging_storage	设置日志存储(内存/标准输出/文件/)
DuckDB支持控制台输出、文件输出及自定义回调三种日志输出方式,可通过配置文件或API进行设置。	

3.缓存

外部文件缓存机制-外部文件缓存(External File Cache)
		 enable_external_file_cache	允许数据库将外部文件(例如 Parquet 文件)缓存到内存中
		 通过以下方式禁用: SET enable_external_file_cache = false;
		 
		 例如:FROM duckdb_external_file_cache();
对象缓存(Object Cache)
         -- 启用对象缓存
         SET enable_object_cache = true;
其他缓存		 
	enable_http_metadata_cache	是否使用全局 HTTP 元数据来缓存 HTTP 元数据	 
		 
    PRAGMA cache_stats;查看缓存统计信息
缓存管理技巧
     监控缓存使用:    通过 PRAGMA cache_stats; 查看缓存统计信息
     合理设置缓存大小:通过 PRAGMA memory_limit;调整内存限制,间接控制缓存大小
     适时清理缓存:    使用 PRAGMA clear_cache; 手动清理缓存(需谨慎操作
	
查看缓存内容 
    通过内置的表函数 duckdb_external_file_cache() 来查询当前的缓存内容。	
 

源码中的核心实现位于以下文件:
     外部文件缓存:src/storage/external_file_cache.hpp
     对象缓存    :src/storage/object_cache.hpp
     缓存配置    :src/main/database.cpp

其他

 sqlite   1.该PRAGMA语句是 DuckDB 从 SQLite 中引入的 SQL 扩展
     PRAGMA(Programmaticragma)是SQLite提供的一种特殊命令,用于查询和修改数据库连接的运行时参数。
	   这些参数控制着SQLite的各种行为,从内存分配到磁盘同步策略,从查询优化到事务处理
	2. ATTACH DATABASE 和 DETACH DATABASE 	
	3. 点号(.)命令
	4.VACUUM 命令: 重建数据库,整理碎片,并回收未使用的空间。
 postgreSQL 
     规则系统(Rule Syste)
     COPY:快速导入导出数据
     模式(SCHEMA)管理	
     扩展(EXTENSION)系统	
     RETURNING 子句		 
	 管理命令(psql特有) 1. 元命令(以\开头)
	 
PostgreSQL 扩展 = "功能服务器":为企业级应用添加完整功能模块
    安装	系统包管理 + CREATE EXTENSION
    过包管理器(如apt、yum)或从源代码编译安装。扩展以独立的模块存在,需要先安装到系统中,然后在数据库中创建扩展。		
DuckDB 扩展 = "分析工具包":为嵌入式分析添加数据处理能力
    安装  INSTALL + LOAD 命令	

用和不用

SQL    更接近自然语言,表达分组统计、聚合查询时往往更直观
DuckDB 跨数据源分析 处理大规模数据的性能
         支持直接查询 CSV、Parquet、JSON、甚至远程数据库,而且都可以用同一套 SQL。
        支持 懒加载 + 流式扫描,可以边查边算,不需要一次性全部载入
		把 分析型 SQL 引擎 搬到了本地
		数据加载--数据清洗--分析查询--可视化输出
	它在特定任务和工作负载方面表现出色,将其视为一种补充工具,它能够在特定场景下显著增强能力
	   解决方案迁移到强大且受控的企业环境中
	作为:生产中经常用它来进行流程中的转换	,嵌入到流水线工作
	       DuckDB 强大的 CSV 解析和加载功能、用于复杂聚合和连接的 SQL
	不当作:不会把它当成永久的数据库,DuckDB的数据访问权限,并发
		  不支持从多个进程写入 DuckDB,也不是主要设计目标
		两种可配置的并发选项:
          一个进程可以同时对数据库进行读取和写入操作。
          多个进程可以从数据库读取数据,但没有进程可以写入数据(access_mode = 'READ_ONLY') 	

其他

可视化 
   Maliang 通过在 Tkinter 的 Canvas(画布)上从零绘制现代
调度和配置 
    Dramatiq 后台任务处理对自动化至关重要	
	Tenacity 它通过简单的装饰器,就能为你的函数优雅地添加健壮的重试机制
SQL 
    SQLGlot 是一个通用的 SQL 解析器与转译器,支持读取、书写并在数十种 SQL 方言
	  (如 DuckDB、Snowflake、PostgreSQL)之间进行转换
Pandas 的链式操作		  

参考

https://duckdb.org/docs/stable/configuration/overview
posted @ 2026-02-02 11:35  辰令  阅读(1)  评论(0)    收藏  举报