openGauss数据库内存优化表MOT实践-磁盘表转换为MOT表

目录

前言

一、前置条件

二、转换步骤介绍

三、开始转换实践

1、创建测试表并插入数据

2、检查测试表列类型。

3、请检查测试表数据。

4、使用gs_dump转储表数据。

5、重命名测试表。

6、创建与测试表完全相同的MOT。

7、将测试转储数据导入到新MOT中。​​​​​​​

四、使用INSERT方式转换

1、创建MOT表customer_bk01

2、使用INSERT转换


前言

本篇主要介绍怎么把普通的表转换为MOT表。

磁盘表直接转换为MOT尚不能实现,这意味着尚不存在将基于磁盘的表转换为MOT的ALTER TABLE语句。

下面介绍如何手动将基于磁盘的表转换为MOT,如何使用gs_dump工具导出数据,以及如何使用gs_restore工具导入数据。

一、前置条件

  • 检查待转换为MOT的磁盘表的模式是否包含所有需要的列。

  • 检查架构是否包含任何不支持的列数据类型,具体参见“不支持的数据类型”章节。

  • 如果不支持特定列,则建议首先创建一个更新了模式的备磁盘表。此模式与原始表相同,只是所有不支持的类型都已转换为支持的类型。

二、转换步骤介绍

要将基于磁盘的表转换为MOT,请执行以下步骤:

  1. 暂停应用程序活动。

  2. 使用gs_dump工具将表数据转储到磁盘的物理文件中。请确保使用data only。

  3. 重命名原始基于磁盘的表。

  4. 创建同名同模式的MOT。请确保使用创建FOREIGN关键字指定该表为MOT。

  5. 使用gs_restore将磁盘文件的数据加载/恢复到数据库表中。

  6. 浏览或手动验证所有原始数据是否正确导入到新的MOT中。

  7. 恢复应用程序活动。

须知:
由于表名称保持不变,应用程序查询和相关数据库存储过程将能够无缝访问新的MOT,而无需更改代码。另一种方法是通过INSERT INTO SELECT语句将数据从普通(堆)表复制到新的MOT表。
INSERT INTO [MOT_table] SELECT * FROM [PG_table] WHERE condition;
此方法受MOT事务大小限制,小于1GB。

三、开始转换实践

假设要将数据库benchmarksql中一个基于磁盘的表customer迁移到MOT中。

将customer表迁移到MOT,操作步骤如下:

1、创建测试表并插入数据

  • 创建表

CREATE TABLE customer(    c_customer_sk             integer,    c_customer_id             char(5),    c_first_name              char(6),    c_last_name               char(8),    Amount                    integer);

图片

  • 插入数据

INSERT INTO customer(c_customer_sk, c_customer_id, c_first_name,Amount) VALUES (3769, 'hello', 'Grace', 1000);INSERT INTO customer (c_customer_sk, c_first_name) VALUES (3769, 'Grace');INSERT INTO customer (c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', DEFAULT);INSERT INTO customer (c_customer_sk, c_customer_id, c_first_name,Amount) VALUES     (6885, 'maps', 'Joes',2200),    (4321, 'tpcds', 'Lily',3000),    (9527, 'world', 'James',5000);

图片

2、检查测试表列类型。

验证MOT支持所有类型,详情请参阅附录:不支持的数据类型。

openGauss=# \d+ customer                             Table "public.customer"    Column     |     Type     | Modifiers | Storage  | Stats target | Description---------------+--------------+-----------+----------+--------------+------------- c_customer_sk | in
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gauss松鼠会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值