本文介绍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的统计信息,使用方法如下:
执行EXPLAIN语句查看当前的执行计划。
EXPLAIN <table_name>;
执行ANALYZE语句收集统计信息。
ANALYZE <table_name>;
执行EXPLAIN语句查看ANALYZE后的执行计划。
EXPLAIN <table_name>;
切分大文件
OSS Foreign Table支持多节点并行扫描。当源文件数量较少时,推荐拆分成多个源文件,以便于多节点并行扫描。
以下步骤以Linux系统为例,介绍如何切分大文件:
获取当前大文件的行数。
wc -l <csv_file>
按照指定行数切分成多个小文件,
N
表示切分后的小文件中的行数。split -l N <csv_file>
说明切分后的小文件需要保证行的完整性,即同一行记录只允许存在同一个文件内,不允许跨文件存放。通过上述方法切分大文件即可保证同一行记录存放在同一文件中。
查看OSS文件信息
您可以执行如下操作,获取OSS Foreign Table的OSS文件信息:
SELECT * FROM get_oss_table_meta('<OSS FOREIGN TABLE>');