传统网站与营销型网站,怎样做社交网站,wordpress 浏览量排序,洛可可设计公司总部文章目录 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT88.1 前置条件检查88.2 转换88.3 转换示例 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT … 文章目录 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT88.1 前置条件检查88.2 转换88.3 转换示例 openGauss学习笔记-88 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用将磁盘表转换为MOT
磁盘表直接转换为MOT尚不能实现这意味着尚不存在将基于磁盘的表转换为MOT的ALTER TABLE语句。
下面介绍如何手动将基于磁盘的表转换为MOT如何使用gs_dump工具导出数据以及如何使用gs_restore工具导入数据。
88.1 前置条件检查
检查待转换为MOT的磁盘表的模式是否包含所有需要的列。
检查架构是否包含任何不支持的列数据类型具体参见“不支持的数据类型”章节。
如果不支持特定列则建议首先创建一个更新了模式的备磁盘表。此模式与原始表相同只是所有不支持的类型都已转换为支持的类型。
使用以下脚本导出该备磁盘表然后导入到MOT中。
88.2 转换
要将基于磁盘的表转换为MOT请执行以下步骤
暂停应用程序活动。使用gs_dump工具将表数据转储到磁盘的物理文件中。请确保使用data only。重命名原始基于磁盘的表。创建同名同模式的MOT。请确保使用创建FOREIGN关键字指定该表为MOT。使用gs_restore将磁盘文件的数据加载/恢复到数据库表中。浏览或手动验证所有原始数据是否正确导入到新的MOT中。下面将举例说明。恢复应用程序活动。 须知 由于表名称保持不变应用程序查询和相关数据库存储过程将能够无缝访问新的MOT而无需更改代码。另一种方法是通过INSERT INTO SELECT语句将数据从普通堆表复制到新的MOT表。 INSERT INTO [MOT_table] SELECT * FROM [PG_table] WHERE condition;此方法受MOT事务大小限制小于1GB。
88.3 转换示例
假设要将数据库benchmarksql中一个基于磁盘的表customer迁移到MOT中。
将customer表迁移到MOT操作步骤如下 检查源表列类型。验证MOT支持所有类型详情请参阅“不支持的数据类型”章节。 benchmarksql-# \d customer Table public.customer Column | Type | Modifiers | Storage | Stats target | Description
---------------------------------------------------------------- x | integer | | plain | | y | integer | | plain | |
Has OIDs: no
Options: orientationrow, compressionno请检查源表数据。 benchmarksql# select * from customer; x | y
------ 1 | 2 3 | 4
(2 rows)只能使用gs_dump转储表数据。 $ gs_dump -Fc benchmarksql -a --table customer -f customer.dump -p 16000
gs_dump[port15500][benchmarksql][2020-06-04 16:45:38]: dump database benchmarksql successfully
gs_dump[port15500][benchmarksql][2020-06-04 16:45:38]: total time: 332 ms重命名源表。 benchmarksql# alter table customer rename to customer_bk;
ALTER TABLE创建与源表完全相同的MOT。 benchmarksql# create foreign table customer (x int, y int);
CREATE FOREIGN TABLE
benchmarksql# select * from customer; x | y
------
(0 rows)将源转储数据导入到新MOT中。 $ gs_restore -C -d benchmarksql customer.dump -p 16000
restore operation successful
total time: 24 ms
Check that the data was imported successfully.
benchmarksql# select * from customer; x | y
------ 1 | 2 3 | 4
(2 rows) benchmarksql# \d List of relations Schema | Name | Type | Owner | Storage
------------------------------------------------------------------------------ public | customer | foreign table | aharon | public | customer_bk | table | aharon | {orientationrow,compressionno}
(2 rows)点赞你的认可是我创作的动力 ⭐️ 收藏你的青睐是我努力的方向 ✏️ 评论你的意见是我进步的财富