支持与限制
实时数仓兼容所有列存语法,具体情况如下:
|
语法 |
是否支持 |
|---|---|
|
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表性能严重劣化。
9.1.1.100集群版本开始推荐的参数修改配置是:autovacuum_max_workers_hstore=3,autovacuum_max_workers=2,autovacuum_max_workers_col=2,autovacuum=true。
- 8.2.1及以上版本支持列存索引脏数据清理,频繁更新入库的场景下能有效控制索引空间,提高入库与查询性能。
- 9.1.1.100集群版本hstore表脏页清理依赖列存vacuum和异步排序两个机制协同工作,默认小于1000行的CU被定性为小CU。脏页中小CU会通过异步排序的机制完成合并,非小CU通过列存vacuum重写到新的文件。列存vacuum受阈值参数colvacuum_threshold_scale_factor控制。
- 当使用HStore异步排序功能时,需要注意:
异步排序期间可能会阻塞部分数据的DML操作,最大的阻塞粒度为异步排序的行数阈值,因此在反复DML的场景下不建议使用此功能。
列存表的Delta表差异
|
数仓类型 |
列存的delta表 |
HStore的delta表 |
HStore Opt的delta表 |
|---|---|---|---|
|
表结构 |
与列存主表的表定义一致。 |
与主表定义不一致。 |
不同于主表,与HStore表相同。 |
|
功能 |
用于暂存小批量insert的数据,满阈值后再merge到主表,避免直接insert到主表产生大量小CU。 |
用于持久化存储update/delete/insert信息。在产生故障后用于恢复内存更新链等管理并发更新的内存结构。 |
用于持久化存储update/delete/insert信息。在产生故障后用于恢复内存更新链等管理并发更新的内存结构。相比HStore进一步优化。 |
|
缺陷 |
来不及merge导致delta表膨胀,影响查询性能,同时无法解决并发update的锁冲突问题 |
依赖后台常驻autovacuum来做merge操作。 |
依赖后台常驻autovacuum来做merge操作。 |
|
规格差异 |
不支持同一CU的并发,适合并发更新较少的情况。 |
|
|
|
入库建议 |
|
||
|
点查建议 |
|
||