支持与限制
实时数仓兼容所有列存语法,具体情况如下:
| 语法 | 是否支持 |
|---|---|
| CREATE TABLE | 支持 |
| CREATE TABLE LIKE | 支持 |
| DROP TABLE | 支持 |
| INSERT | 支持 |
| COPY | 支持 |
| SELECT | 支持 |
| TRUNCATE | 支持 |
| EXPLAIN | 支持 |
| ANALYZE | 支持 |
| VACUUM | 支持 |
| ALTER TABLE DROP PARTITION | 支持 |
| ALTER TABLE ADD PARTITION | 支持 |
| ALTER TABLE SET WITH OPTION | 支持 |
| ALTER TABLE DROP COLUMN | 支持 |
| ALTER TABLE ADD COLUMN | 支持 |
| ALTER TABLE ADD NODELIST | 支持 |
| ALTER TABLE CHANGE OWNER | 支持 |
| ALTER TABLE RENAME COLUMN | 支持 |
| ALTER TABLE TRUNCATE PARTITION | 支持 |
| CREATE INDEX | 支持 |
| DROP INDEX | 支持 |
| DELETE | 支持 |
| ALTER TABLE 其他 | 支持 |
| ALTER INDEX | 支持 |
| MERGE | 支持 |
| SELECT INTO | 支持 |
| UPDATE | 支持 |
| CREATE TABLE AS | 支持 |
约束限制
- 当需要使用HStore表时,需要同步修改以下几个参数的默认值,否则会导致HStore表性能严重劣化。
推荐的参数修改配置是:autovacuum_max_workers_hstore=3,autovacuum_max_workers=6,autovacuum=true。
- 8.2.1及以上版本支持列存btree索引脏数据清理,频繁更新入库的场景下能有效控制索引空间,提高入库与查询性能。实时场景不应该对列存使用psort索引原因如下:
- psort没有索引清理,索引空间会持续膨胀。
- psort只对攒批入库的数据进行排序,实时场景性能提升有限。
- 使用HStore异步排序功能时,需注意:
- 异步排序期间可能会阻塞部分数据的DML操作,最大的阻塞粒度为异步排序的行数阈值,因此在反复DML的场景下不建议使用此功能。
- 自动异步排序与列存vacuum互斥,当autovacuum流程中满足列存vacuum的条件,则直接跳过流程中的异步排序,等待下次触发(极端场景下因为反复大批量DML操作的执行,列存vacuum会不停被触发,因此异步排序总是无法被触发)。