• LightDB中的表


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

    标准建表语句

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

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

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

    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 |           |          | 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

    create table sl03(like changan including all); 
    
    • 1

    临时表

    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 |           |          | 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    可以看出,临时表是生成一个特殊的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, 事务级临时表已不存在
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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 |           |          |
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    更多请参考LightDB官网

  • 相关阅读:
    Angular 依赖注入机制实现原理的深入介绍
    Flink CDC详细教程(介绍、原理、代码样例)
    Linux Day17 生产者消费者
    30.Java中的字节流【20220805】
    MPLAB X IDE 仿真打断点提示已中断的断点?
    Redis足足十二题,应该没有人能全对
    vim编辑器
    【MySQL基础】为什么大部分人选择使用MySQL数据库?
    如何下载到正确版本的Steam?正确使用实现多开搬砖不被封号
    virualBox虚拟机系统磁盘fdisk无损扩容
  • 原文地址:https://blog.csdn.net/s_lisheng/article/details/126226943