file_copy_method 是一个 系统参数,用于指定执行 CREATE DATABASE 或 ALTER DATABASE ... SET TABLESPACE ... 时使用的文件复制方法。
file_copy_method 于 PostgreSQL 18 中添加。
按 PostgreSQL 版本详细信息
file_copy_method (PostgreSQL 19)
| 设置 | copy |
| 单位 | |
| 类别 | 资源使用 / 磁盘 |
| 简短描述 | 选择文件复制方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | copy, clone |
| 启动值 | copy |
| 重置值 | copy |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: file_copy_method
file_copy_method (PostgreSQL 18)
| 设置 | copy |
| 单位 | |
| 类别 | 资源使用 / 磁盘 |
| 简短描述 | 选择文件复制方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | copy, clone |
| 启动值 | copy |
| 重置值 | copy |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: file_copy_method
默认值
file_copy_method 的默认值为:copy。
用法
file_copy_method 可取以下值之一:
copyclone
如果选择了 clone 并且操作系统支持克隆操作,那么在执行以下命令进行文件操作时,将使用 copy_file_range() (Linux, FreeBSD) 或 copyfile (macOS) 系统调用:
CREATE DATABASE(使用STRATEGY=FILE_COPY时)ALTER DATABASE(执行SET TABLESPACE时)
变更历史
- PostgreSQL 18
- 添加于 (提交 f78ca6f3)
示例
file_copy_method 的基本用法示例
postgres=# SET file_copy_method TO 'clone'; SET postgres=# CREATE DATABASE foo STRATEGY=FILE_COPY; CREATE DATABASE
尝试设置无效值
postgres=# SET file_copy_method TO 'rsync'; ERROR: invalid value for parameter "file_copy_method": "rsync" HINT: Available values: copy, clone.
参考资料
- PostgreSQL 文档: file_copy_method
