前言

在oracle数据库中,我们可以查看数据字典dba_objects得到表的创建时间。在Kingbase中如何查看表的创建时间呢?Kingbase数据库中无法通过数据字典查看有关信息,但可以通过其他方法实现。

1、通过查找表和数据库的物理文件方式

TEST=# create table test4 (id int primary key);

CREATE TABLE

TEST=#

TEST=# select now();

now

-------------------------------

2023-03-09 11:07:52.575930+08

(1 row)

insert into test4 select generate_series(1,1000);

TEST=# \dt+ test4;

List of relations

Schema | Name | Type | Owner | Size | Description

--------+-------+-------+--------+-------+-------------

public | test4 | table | system | 64 kB |

(1 row)

TEST=# \d test4

Table "public.test4"

Column | Type | Collation | Nullable | Default

--------+---------+-----------+----------+---------

id | integer | | not null |

Indexes:

"test4_pkey" PRIMARY KEY, btree (id)

查看表的物理文件位置

TEST=# select pg_relation_filepath('test4');

pg_relation_filepath

----------------------

base/12145/41214

(1 row)

表test4的创建时间为11:08

[kingbase7@localhost 12145]$ ll 41214

-rw------- 1 kingbase7 kingbase7 40960 Mar 9 11:08 41214

如果表上的relfilenode发生改变,那么我们查看到的表文件创建时间就不准确,

例如:

TEST=# cluster verbose test4 using test4_pkey;

INFO: clustering "public.test4" using index scan on "test4_pkey"

INFO: "test4": found 0 removable, 1000 nonremovable row versions in 5 pages

DETAIL: 0 dead row versions cannot be removed yet.

CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s.

CLUSTER

再查看表的relfilenode改变了,文件的创建时间也变为最新的,这是因为cluster命令根据索引重新组织了表。

TEST=# select pg_relation_filepath('test4');

pg_relation_filepath

----------------------

base/12145/41234

(1 row)

kingbase7@localhost 12145]$ ll 41234

-rw------- 1 kingbase7 kingbase7 40960 Mar 9 11:23 41234

但是通常的alter table 操作不会有表的relfilenode改变这个问题,例如

ALTER TABLE test4 add COLUMN word text;

ALTER TABLE test4 add CHECK (word <> '');

ALTER TABLE test4 rename to test2

查看数据库创建时间:

TEST=# create database test_ty;

CREATE DATABASE

TEST=# select now();

now

-------------------------------

2023-03-08 17:02:15.615326+08

(1 row)

查看数据库oid

TEST=# select oid,datname,dattablespace from pg_database where datname='test_ty';

oid | datname | dattablespace

-------+---------+---------------

41213 | test_ty | 1663

(1 row)

操作系统查看数据库oid 41213创建时间为17:02

[kingbase7@localhost base]$ ll

drwx------ 2 kingbase7 kingbase7 8192 Mar 8 17:02 41213

实际测试以下语法均不会改变数据库的oid。也就是系统查看的数据库最初创建时间不会变。

ALTER DATABASE name RENAME TO new_name;

ALTER DATABASE test_ty owner TO u1;

ALTER DATABASE test_ty RESET ALL;

2,、通过数据库日志查看表,数据库的创建时间。

在配置文件KINGBASE.CONF中加入 log_statement = 'ddl' # none, ddl, mod, all

创建表:

TEST=# select now();

now

-------------------------------

2023-03-09 11:31:03.686769+08

(1 row)

TEST=# create table test_bak as select * from test4;

SELECT 1000

创建数据接:

TEST=# select now();

now

-------------------------------

2023-03-09 11:32:42.028259+08

(1 row)

TEST=# create database test_tx;

CREATE DATABASE

查看数据库日志:

2023-03-09 11:31:04.312 CST [19483] LOG: statement: create table test_bak as select * from test4;

2023-03-09 11:32:42.772 CST [19483] LOG: statement: create database test_tx;

总结:

以上两种方法可以查看数据库和表的创建时间,建议使用第一种方法,避免第二种方法频繁的ddl引起日志大小增加。

第一种方法在使用cluster table后会改变表的relfilenode,进而在操作系统上查到的表的创建时间不是原始创建时间。

KingbaseES 如何查看表的创建时间的更多相关文章

  1. mysql命令 SHOW TABLE STATUS LIKE '%city%'; 查看表的状态可以查看表的创建时间

    show status like '%handler_read_key%'; #走索引的命令的数量. #查看存储引擎 mysql> show variables like '%engine%'; ...

  2. 怎么查看HBase表的创建时间

    前几天HBase出现了RIT告警,忽然发现发出告警的Region所属的表并不是我创建出来的,于是就想看看这些表是怎么来的. 一时也没什么头绪,就先看看这些表是什么时候创建出来的吧,然后再根据时间点看看 ...

  3. MySQL查看数据表的创建时间和最后修改时间

    如何MySQL中一个数据表的创建时间和最后修改时间呢? 可以通过查询information_schema.TABLES 表得到信息. 例如 mysql> SELECT * FROM `infor ...

  4. 修改SQL Server数据库表的创建时间最简单最直接有效的方法

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,因为这种操作方式是通用的,即使是对现在最新的SQL Server数据库里面的操作也是一 ...

  5. JPA注解实体类,给表添加创建时间,更新时间,id的生成以及创建唯一约束

    首先创建一个BaseModel,自动生成创建时间和更新时间 @SuppressWarnings("serial") @MappedSuperclass public class B ...

  6. linux 查看帐号创建时间

    查看用户的home目录的创建时间 查看日志 用stat 命令,可以看到目录的三个时间.不过这个时间只是用来参考的,确定一个范围. 查看日志是最准确的方法 /var/log/auth.log ,前提是你 ...

  7. spring data jpa之Auditing 表的创建时间,更新时间自动生成策略

    java实际编程中,几乎每一张表都会有createTime和updateTime字段,spring的优秀之处在于只要用几个注解,就帮我们解决该类问题,具体实现: 1,实体类添加注解: @EntityL ...

  8. Oracle查看数据库表的创建时间

    select OBJECT_NAME, CREATED from DBA_OBJECTS obj, USER_TABLES tab where obj.OBJECT_NAME = tab.TABLE_ ...

  9. Linux 如何用命令查看binlog文件的创建时间

    目录 背景 分析 方法 注意 背景 MySQL在26日 16:23:49产生了大量的慢查询,在这段时间内,binlog文件刷新的很快(查看慢日志是mysql DML并发比较多),想知道写完一个binl ...

  10. mysql表的创建、查看、修改、删除

    一.创建表 创建表前先使用use 数据库名进入某一个数据库,创建表语句的格式如下: create table 表名称 ( 列名1 列的数据类型 [约束], 列名2 列的数据类型 [约束], 列名2 列 ...

随机推荐

  1. bootstrap响应式网页布局

    bootstrap可以说是没有布局和审美概念的后端狗的福利.使用它的栅格系统可以轻松的对网页进行布局,而且可以做到响应式的布局.看起来很酷,接下来我就会总结自己在开发博客系统中用到的知识点及实战案例给 ...

  2. Qt实用技巧:QCustomPlot做北斗GPS显示绝对位置运动轨迹和相对位置运动轨迹图的时,使图按照输入点顺序连曲线

    需求   使用QCustomPlot绘制多个目标的北斗运行轨迹图,包括累计绝对位置图和记录时刻的相对位置图.  当前绘制存在问题:    交付客户前,公司内部自测流程发现的问题.  实际预期效果为:  ...

  3. 【C++ OOP 01】封装

    封装 封装的意义 封装是C++面向对象三大特性之一 封装的意义: 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制 封装意义一 ​ 在设计类的时候,属性和行为写在一起,表现事物 语 ...

  4. 使用Xilinx MIG验证硬件DDR设计

    1     导读 MIG 是xilinx的memory控制器,功能强大,接口易用.当硬件设计在设计对应的DDR接口时,最好先用MIG去配置一遍DDR的管脚约束.电平约束,从而避免硬件设计好了,实际却无 ...

  5. 基于 BDD 理论的 Nebula 集成测试框架重构(下篇)

    本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow 看大厂图数据库技术实践. 在上篇文章中,我们介绍了 Nebula Graph 的集成测试的演进过程 ...

  6. 探索浏览器录屏Web API 接口的应用前景与限制

    一.浏览器录屏Web API 接口的优点: 简化录屏流程:浏览器录屏Web API 接口可以直接在网页中调用,无需安装额外的插件或软件,简化了录屏的流程. 实时录制与传输:Web API 接口可以实时 ...

  7. C++ auto与循环

    C++ auto与循环 C++ auto 的介绍 typeid(p).name();可以输出auto的类型 auto 是 C++11 引入的一个关键字,用于自动类型推导.编译器会根据初始化表达式的类型 ...

  8. Codeforces Round 770 (Div. 2)(数学异或奇偶性)

    B. Fortune Telling 拿到题目看数据范围之后就知道暴力显然是来不及的. 那么只能找性质. \(考虑x和x+3的不同 \quad 奇偶性不同\) \(然后考虑两种操作对于一个数的奇偶性的 ...

  9. 精贴总结 - 万字长文带你入门Istio

    原文 - 万字长文带你入门Istio 一.个人看法 背景:以docker+k8s普及,支持快速部署,通过k8s允许统一管理 解决:1)设计分布式系统,导致开发难度提高:2)统一多语言的服务治理方案 目 ...

  10. kubernetes 1.20版本 二进制部署

    kubernetes 1.20版本 二进制部署 目录 kubernetes 1.20版本 二进制部署 1. 前言 2. 环境准备 2.1 机器规划 2.2 软件版本 3. 搭建集群 3.1 机器基本配 ...