postgresql - postgres 是否支持内存临时表
问题描述
我知道 postgres 不允许内存结构。但是为了使临时表有效地工作,具有内存结构很重要,否则它必须流到磁盘并且不会那么有效。所以我的问题是postgres是否允许临时表的内存存储?我的预感是它没有。只是想和某人确认一下。
提前致谢!
解决方案
是的,Postgres 可以将临时表保存在内存中。可用的内存量是通过属性配置的temp_buffers
从手册中引用:
设置每个数据库会话使用的最大临时缓冲区数。这些是会话本地缓冲区,仅用于访问临时表。默认值为八兆字节 (8MB)。该设置可以在单个会话中更改,但只能在会话中第一次使用临时表之前进行;随后尝试更改该值将对该会话没有影响。
会话将根据需要分配临时缓冲区,直到 temp_buffers 给出的限制。在实际上不需要很多临时缓冲区的会话中设置一个大值的成本只是一个缓冲区描述符,或者大约 64 字节,每个 temp_buffers 增量。但是,如果实际使用了缓冲区,则将为其消耗额外的 8192 字节(或通常为 BLCKSZ 字节)。
所以如果你真的需要,你可以增加temp_buffers
.
推荐阅读
- python - 事务未进行,不能在 API 请求中使用。火灾存储错误
- python-3.x - 从 python 脚本返回结果到 Jupiter notebook 中的变量
- ansible - 使用 ansible 在组中有限数量的主机上运行任务
- php - PHP preg_replace 在同一个字符串中多次替换模式
- amazon-web-services - 使用 AWS CDK 配置具有 S3 源和自定义源 (ELB) 的 CloudFront 分配
- python - 在 Python Visual Studio Code Debugger 中调用类中的私有函数以观察列表
- javascript - 使用图层位置捕获或导出 konvajs 阶段
- image - Xamarin 表单从图像控件而不是文件从图像转换为 Base64
- javascript - (Javascript)当类是动态的时,如何计算特定类的元素总和?
- clojure - 没有命名空间的取消引用