-- create table and fill with generated data until 20 days before
CREATE TABLE logs (
id int not null,
log_date timestamp
);
-- set access method columnar
SELECT alter_table_set_access_method('logs', 'columnar');
-- fill the table with generated data which goes until 20 days before
INSERT INTO logs select i, now() - interval '1 hour' * i from generate_series(1,480) i;
-- now you want to drop last 10 days data, you can switch to row access method temporarily to execute delete or updates
SELECT alter_table_set_access_method('logs', 'heap');
DELETE FROM logs WHERE log_date < (now() - interval '10 days');
-- switch back to columnar access method
SELECT alter_table_set_access_method('logs', 'columnar');
1条答案
按热度按时间rwqw0loc1#
您可以暂时将表访问方法切换为行模式以删除或更新表。然后在操作之后,您可以切换回列访问方法。示例用法如下:
更好的日志归档替代方案:我们正在创建源表的完整副本,以便拥有一个具有新访问方法的表。表越大,消耗的资源就越多。更好的选择是,如果可以将日志表划分为天或月的分区,您只需要更改单个分区的访问方法。请注意,您应该分别为每个分区设置访问方法。列式当前不支持直接设置分区表的访问方法。
了解更多信息: