栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LightDB中的表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LightDB中的表

本文学习一下LightDB中的表,涉及建表语句,临时表等,分布式表等内容见LightDB分布式数据库介绍(一)。

标准建表语句

在LightDB中支持标准的建表语法CREATE TABLE。示例如下:

create table changan(a int, b int);  -- 建表语句

处理上面的建表方式外,还可以以其他表为模板来创建新表,示例如下:

create table sl03(like changan); 

postgres@postgres=# d changan
              Table "public.changan"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 a      | integer |           |          | 
 b      | integer |           |          | 

postgres@postgres=# d sl03
                Table "public.sl03"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 a      | integer |           |          | 
 b      | integer |           |          | 

但是上面的方式没有将源表的约束复制过来,可用INCLUDING ALL把所有的属性全部复制过去:

create table sl03(like changan including all); 
临时表

LightDB支持两种类型临时表,一种是会话级临时表,一种是事务级临时表。在会话级别的临时表中,数据可以一直保存在整个会话的声明周期中,而在事务级别的临时表中,数据只存在于这个事务的生命周期中。

在LightDB中,不管是事务级的临时表还是会话级的临时表,当会话结束时都会消失,这与Oracle数据库不同,在Oracle数据库中,只是临时表中的数据消失,而临时表还在。

需要注意的是如果在两个不同的session中创建一个同名的临时表,实际上创建的是两种不同的表。

-- 创建会话级临时表
postgres@postgres=# create temporary table sl03(a int, b int);
CREATE TABLE
postgres@postgres=# d sl03
              Table "pg_temp_4.sl03"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 a      | integer |           |          | 
 b      | integer |           |          | 

可以看出,临时表是生成一个特殊的Schema下的表,这个Schema名为pg_temp_xx,其中的xx代表一个数字。

创建事务级临时表,可通过ON COMMIT DROp来实现:

begin;
create temp table sl03(a int, b int) on commit drop;  -- 创建事务级临时表
insert into sl03 values(1,1);
select * from sl03;
commit;
select * from sl03  -- fail, 事务级临时表已不存在

ON COMMIT DROP:表示数据只存在于事务周期中,事务提交后临时表就消失了。

UNLOGGED表

其含义如图名字,通过禁止产生WAL日志的方式提升写性能。因为没有WAL日志,所以表的内容无法在主备库直接同步,如果此时数据库异常宕机,表的内容将消失,所以可以把UNLOGGED表称为“半临时表”。

create unlogged table sl03(a int, b int);

postgres@postgres=# d sl03
           Unlogged table "public.sl03"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 a      | integer |           |          | 
 b      | integer |           |          |

更多请参考LightDB官网

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040754.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号