Postgresql临时表(TEMPORARY TABLE)
一、简介
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时不会移除生成的临时文件,用于调试目的
最新文章
- 转 android 从底部弹出一个popuwindow,渐入渐出效果。我这里是用在购物车需要选择购买选项的操作。
- GetLastError()函数返回值及含义
- Android 图片浏览器 从原来位置放大至全屏显示
- codeforces Hill Number 数位dp
- Saltstack 介绍、安装、配置(一)
- M面经Prepare: Delete Words Starting With One Character
- maven的pom报plugins却是的解决方法(转)
- 关于【cocos2dx-3.0beta-制作flappybird】教程在3.2project中出现找不到CCMenuItem.h的解决方法
- Linux Stu
- boost vc编译
- Android的内存优化
- Java 学习内容总结
- D. How many trees? DP
- 关于STM32驱动DS1302实时时钟的一点思考
- mysql进阶(十一)外键在数据库中的作用
- IDEA下调试和运行Hadoop程序例子
- android常犯错误记录(一)
- 使用matplotlib.pylab绘制分段函数
- JS开发中常用的小技巧
- h5定位geolaction无法调试解决方法
热门文章
- 你真的了解 RSA 加密算法吗?
- 使用 System.Text.Json 时,如何处理 Dictionary 中 Key 为自定义类型的问题
- 三步快速搭建Typora图床(SM.MS+PicGo)
- django.core.exceptions.ImproperlyConfigured: Application labels aren't unique, duplicates: rest_framework_swagger
- 推荐8个提高工作效率的IntelliJ插件
- elasticsearch之metric聚合
- 学习ASP.NET Core Blazor编程系列十八——文件上传(中)
- [机器学习] Yellowbrick使用笔记5-回归可视化
- kafka详解(03) - kafka JAVA API
- 静态文件相关配置、request请求方法、pycharm连接MySQL、orm