OSS Foreign Table最佳实践

本文介绍OSS Foreign Table相关的使用技巧,例如查看执行计划、收集统计信息、切分大文件以及查看OSS文件信息。

查看执行计划

AnalyticDB PostgreSQL版支持通过EXPLAIN查看OSS Foreign Table查询语句的执行计划。查看执行计划的示例语句如下:

EXPLAIN SELECT COUNT(*) FROM oss_lineitem_orc WHERE l_orderkey > 14062498;

收集统计信息

OSS Foreign Table的数据实际存储在OSS上,AnalyticDB PostgreSQL版默认不会自动收集数据的统计信息。在复杂场景下的查询SQL(例如多张表关联操作),如果不存在统计信息或统计信息过时,优化器可能会生成低效的查询计划。AnalyticDB PostgreSQL版支持使用ANALYZE语句更新OSS Foreign Table的统计信息,使用方法如下:

  1. 执行EXPLAIN语句查看当前的执行计划。

    EXPLAIN <table_name>;
  2. 执行ANALYZE语句收集统计信息。

    ANALYZE <table_name>;
  3. 执行EXPLAIN语句查看ANALYZE后的执行计划。

    EXPLAIN <table_name>;

切分大文件

OSS Foreign Table支持多节点并行扫描。当源文件数量较少时,推荐拆分成多个源文件,以便于多节点并行扫描。

以下步骤以Linux系统为例,介绍如何切分大文件:

  1. 获取当前大文件的行数。

    wc -l <csv_file>
  2. 按照指定行数切分成多个小文件,N表示切分后的小文件中的行数。

    split -l N <csv_file>
    说明

    切分后的小文件需要保证行的完整性,即同一行记录只允许存在同一个文件内,不允许跨文件存放。通过上述方法切分大文件即可保证同一行记录存放在同一文件中。

查看OSS文件信息

您可以执行如下操作,获取OSS Foreign Table的OSS文件信息:

SELECT * FROM get_oss_table_meta('<OSS FOREIGN TABLE>');

相关文档