更新时间:2026-07-28 GMT+08:00
DML
HTAP由实时事务单元TMU记录DML操作带来的增量数据变更,并维护IMCV列查询时的数据新鲜度,保证与行存实时数据的一致性。
示例:
gaussdb=# CREATE TABLE htap_test( id int, dept_id int, salary int, name varchar(20), comments varchar(30)) with (storage_type = ustore); CREATE TABLE gaussdb=# INSERT INTO htap_test VALUES (1, 1, 2000, 'Allen', 'for test'); INSERT 0 1 gaussdb=# INSERT INTO htap_test VALUES (2, 2, 3000, 'Lily', 'for test'); INSERT 0 1 gaussdb=# INSERT INTO htap_test VALUES (3, 2, 4000, 'Ann', 'for test'); INSERT 0 1 --加载IMCV。 gaussdb=# ALTER TABLE htap_test COLVIEW; ALTER TABLE gaussdb=# SELECT * FROM gs_imcv; reloid | relname | dbname | username | parentoid | imcvispart | imcvnattr | imcvkey | priority --------+-----------+--------+----------+-----------+------------+-----------+-----------+---------- 17949 | htap_test | test | dbdev | 0 | f | 5 | 1 2 3 4 5 | 1 (1 row) --向表中插入新数据。 gaussdb=# INSERT INTO htap_test VALUES (4, 2, 3000, 'Bob', 'for test'); INSERT 0 1 --生成并选择执行IMCV执行计划。 gaussdb=# EXPLAIN SELECT /*+imcvscan(htap_test)*/ * FROM htap_test; QUERY PLAN ---------------------------------------------------------------------- Row Adapter (cost=30.56..30.56 rows=459 width=148) -> Imcv Scan on htap_test (cost=30.00..30.56 rows=459 width=148) (2 rows) --获取IMCV查询结果,与行存数据一致。 gaussdb=# SELECT /*+imcvscan(htap_test)*/ * FROM htap_test; id | dept_id | salary | name | comments ----+---------+--------+-------+---------- 1 | 1 | 2000 | Allen | for test 2 | 2 | 3000 | Lily | for test 3 | 2 | 4000 | Ann | for test 4 | 2 | 3000 | Bob | for test (4 rows) gaussdb=# DROP TABLE htap_test; DROP TABLE
父主题: DML/DQL