一、简介

PostgreSQL中的临时表分两种,一种是会话级临时表,一种是事务级临时表。在会话级临时表中,数据可以存在于整个会话的生命周期中,在事务级临时表中的数据只能存在于事务的生命周期中。默认创建的是会话级别的临时表。

1、不管是会话级还是事务级的临时表,当会话结束后,临时表会消失,这和Oracle数据库不同。Oracle数据库当会话结束后,数据消失,而表依然存在。

2、“ON COMMIT” 子句有三种形式,默认使用的是PRESERVE ROWS,即会话临时表:

(1)ON COMMIT PRESERVE ROWS 表示临时表的数据在事务结束后保留,默认值,表示会话级临时表;

(2)ON COMMIT DELETE ROWS 表示临时表的数据在事务结束后truncate掉,表示事务级临时表,事务结束,删除数据;

(3)ON COMMIT DROP 表示临时表在事务结束后删除,表示事务级临时表,事务结束,删除临时表。

3、Oracle中的临时表,创建后,虽然各个会话间的数据是互相隔离的,也就是一个会话看不到其他会话的数据,但定义是共用的。而Postgresql中的临时表,创建后,不但不同会话间的数据是相互隔离的,就连临时表的定义也是不同会话间相互隔离的,也就是一个会话创建的临时表,不能被其他会话看到。

4、使用pg_basebackup备份时,不会备份TEMPORARY table和 UNLOGGED table。

二、知识点

PostgreSQL临时表是schema下所生成的一个特殊的表,这个schema的名称为“pg_temp_n”,其中n代表数字,不同的session数字不同。

一个会话创建的临时表不能被其他会话访问。

创建临时表的关键字“temporary”可以缩写为“temp”。

PostgreSQL为了与其他数据库创建临时表的语句保持兼容,还没有“GLOBAL”和“LOCAL”关键字,但两个关键字没有用处。

三、示例

t开头的便是临时表。临时表会位于一个特殊的schema下面,此例是pg_temp_3

四、总结

  • 禁止创建同名的普通表和临时表,会使现象十分费解

  • autovacuum不会处理临时表,也就意味着不会去收集统计信息,因此假如有复杂查询,需要查询临时表,需要手动analyze

  • 临时表大量创建销毁也会导致系统表的膨胀

  • 合理配置temp_file_limit,防止过多临时文件

  • 14以前的版本,postmaster启动后会清理残留tempfile,但crash时不会移除生成的临时文件,用于调试目的

最新文章

  1. 转 android 从底部弹出一个popuwindow,渐入渐出效果。我这里是用在购物车需要选择购买选项的操作。
  2. GetLastError()函数返回值及含义
  3. Android 图片浏览器 从原来位置放大至全屏显示
  4. codeforces Hill Number 数位dp
  5. Saltstack 介绍、安装、配置(一)
  6. M面经Prepare: Delete Words Starting With One Character
  7. maven的pom报plugins却是的解决方法(转)
  8. 关于【cocos2dx-3.0beta-制作flappybird】教程在3.2project中出现找不到CCMenuItem.h的解决方法
  9. Linux Stu
  10. boost vc编译
  11. Android的内存优化
  12. Java 学习内容总结
  13. D. How many trees? DP
  14. 关于STM32驱动DS1302实时时钟的一点思考
  15. mysql进阶(十一)外键在数据库中的作用
  16. IDEA下调试和运行Hadoop程序例子
  17. android常犯错误记录(一)
  18. 使用matplotlib.pylab绘制分段函数
  19. JS开发中常用的小技巧
  20. h5定位geolaction无法调试解决方法

热门文章

  1. 你真的了解 RSA 加密算法吗?
  2. 使用 System.Text.Json 时,如何处理 Dictionary 中 Key 为自定义类型的问题
  3. 三步快速搭建Typora图床(SM.MS+PicGo)
  4. django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: rest_framework_swagger
  5. 推荐8个提高工作效率的IntelliJ插件
  6. elasticsearch之metric聚合
  7. 学习ASP.NET Core Blazor编程系列十八——文件上传(中)
  8. [机器学习] Yellowbrick使用笔记5-回归可视化
  9. kafka详解(03) - kafka JAVA API
  10. 静态文件相关配置、request请求方法、pycharm连接MySQL、orm