首页 > 其他分享 >KingbaseES V8R6 中unlogged表

KingbaseES V8R6 中unlogged表

时间:2023-01-09 15:55:25浏览次数:39  
标签:V8R6 unlogged system pg test table KingbaseES public

前言

KingbaseESV8R6有一种表称为unlogged,在该表新建的索引也属于unlogged。和普通表的区别是,对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中。在数据库异常关机或者异常崩溃后该表的数据会被truncate掉,但是在写入性能上会比普通表快几倍。
这个特性类似于oracle表的nologging特性。

下面分别测试普通表和unlogged表对于数据插入速度的区别

test=# \dt+
                                  List of relations
 Schema |            Name             | Type  |   Owner    |    Size    | Description
--------+-----------------------------+-------+------------+------------+-------------
 public | ee                          | table | system     | 8192 bytes |
 public | f                           | table | system     | 8192 bytes |
 public | h                           | table | system     | 104 kB     |
 public | hH                          | table | system     | 8192 bytes |
 public | kong                        | table | system     | 16 kB      |
 public | newspace                    | table | system     | 48 kB      |


test=# \timing 
Timing is on.

test=# create table h_loggod as select * from h ;
SELECT 1000
Time: 19.280 ms
可以看到在新建普通表并插104kb的数据耗时19.2毫秒

新建一张unlogged表并插入104kb数据进行测试
test=# create unlogged table h_unloggod as select * from h ;
SELECT 1000
Time: 4.653 ms

可以看到同样大小unlogged表的插入速度为4.6毫秒,性能提高了近4倍。
注意unlogged意思是表不被归档保护,所以这时候如果数据库出现断电等异常故障,这个表数据库是不被保护了,这又是老生常谈的话题,效率与安全往往不可兼得。

如何查看当前数据库中所有的unlogged表
test=# select n.nspname as schema_name,c.relname as table_name from pg_catalog.pg_namespace n, pg_catalog.pg_class c where c.relnamespace=n.oid and n.nspname != 'pg_toast' and c.relkind='r' and c.relpersistence = 'u';
 schema_name | table_name
-------------+------------
 public      | h_unloggod
(1 row)

如果需要将unlogged表修改为普通表,则执行如下语句
test=# select 'ALTER TABLE'||' '||concat(n.nspname,'.' ,c.relname)||' '||'SET LOGGED ;' AS convert_logged_sql from pg_catalog.pg_namespace n, pg_catalog.pg_class c where c.relnamespace=n.oid and n.nspname != 'pg_toast' and c.relkind='r' and c.relpersistence = 'u';
             convert_logged_sql
--------------------------------------------
 ALTER TABLE public.h_unloggod SET LOGGED ;
(1 row)

总结

如果需要加快业务上某些大表的insert速度可以开启这个特性,但是不能保证数据的安全性,不过我们可以在DML 执行完毕后,对unlogged表更为logged属性。

标签:V8R6,unlogged,system,pg,test,table,KingbaseES,public
From: https://www.cnblogs.com/kingbase/p/16880615.html

相关文章

  • KingbaseES在线wal日志
    KingbaseES数据库日志文件记录数据库的历史操作信息,包含恢复数据库中的所有事务所需的信息。KingbaseES在线WAL日志:WAL日志:预写式日志(Write-AheadLogging(WAL)是保......
  • KingbaseES V8R6数据库运维案例之---索引坏块故障处理
    案例说明:在执行表数据查询时,出现下图所示错误,索引故障导致表无法访问,后重建索引问题解决。本案例复现了此类故障解决过程。适用版本:KingbaseESV8R3/R6一、创建测试......
  • KingbaseES运维案例之---数据库启动“could not open shared memory segment”
    ​案例说明:在kylin系统下数据库启动出现“couldnotopensharedmemorysegmentxxxx"的故障,故障如下所示:适用版本:KingbaseESV8R3/R6问题分析:1、此问题涉及到sh......
  • KingbaseES V8R6 sslinfo 插件
    前言KingbaseES对使用SSL连接加密客户端/服务器通讯的本地支持,可以增加数据传输安全性。本文展示配置ssl连接,并通过安装一个插件验证ssl加密认证使用。一、配置ssl连接......
  • KingbaseES Clusterware 高可用案例之---构建iSCSI共享存储
    案例说明:在KingbaseESClusterware高可用的架构中,集群节点需要访问共享的存储设备,可以使用FCSAN、iscsiSAN、NAS等存储设备。本案例详细描述了,在Linux系统下构建iscsi......
  • KingbaseES 实现 MYSQL 的 delete limit 写法
    使用MySQL的用户可能会比较熟悉这样的用法,更新或删除时可以指定限制更新或删除多少条记录。updatetlsetxxx=xxxwherexxxlimit10;deletefromtlwherexxxlimit......
  • KingbaseES 基于SQL的函数过程
    什么是SQL函数?SQL函数包体是一些可执行的SQL语言。同时包含1条以上的查询,但是函数只返回最后一个查询(必须是SELECT)的结果。除非SQL函数声明为返回void,否则最后一条语......
  • KingbaseES V8R6 空闲事务会话超时自动终止机制
    背景如果会话在事务中停留的时间过长,则允许自动终止空闲会话。可以由配置参数idle_in_transaction_session_timeout事务处于空闲状态的时长,它有助于防止被遗忘的交易事务......
  • KingbaseES数据库导入导出数据
    本文介绍如何在KingbaseES数据库导入导出数据。KingbaseES数据库支持使用命令copy和工具sys_bulkload对数据进行导入导出。一、使用copy1、创建测试表createtablete......
  • KingbaseES V8R3集群备份恢复案例之--- timingbackup备份
    案例说明:KingbaseESV8R3集群自带了timingbackup.sh的脚本,可以通过一个脚本执行逻辑和物理备份,逻辑备份采用sys_dump,物理备份适用sys_basebackup,本案例详细记录了脚本的使......