下载
编译与部署
开始使用
操作手册
- 数据导入
- 表结构变更
- 物化视图
- HTTP API
- FE
- MANAGER
- Bootstrap Action
- Cancel Load Action
- Check Decommission Action
- Check Storage Type Action
- Config Action
- Connection Action
- Get DDL Statement Action
- Get Load Info Action
- Get Load State
- Get FE log file
- Get Small File
- HA Action
- Hardware Info Action
- Health Action
- Log Action
- Logout Action
- Meta Action
- Meta Action
- Meta Replay State Action
- Profile Action
- Query Detail Action
- Query Profile Action
- Row Count Action
- Session Action
- Set Config Action
- Show Data Action
- Show Meta Info Action
- Show Proc Action
- Show Runtime Info Action
- Statement Execution Action
- System Action
- Table Query Plan Action
- Table Row Count Action
- Table Schema Action
- Upload Action
- CANCEL LABEL
- Compaction Action
- CONNECTION
- getlogfile
- GET LABEL STATE
- GET TABLETS ON A PARTICULAR BE
- PROFILE
- QUERY DETAIL
- RESTORE TABLET
- SHOW DATA
- MIGRATE SINGLE TABLET TO A PARTICULAR DISK
- GET TABLETS DISTRIBUTION BETWEEN DIFFERENT DISKS
- FE
- 运维操作
- 配置文件
- 拦截规则
- 备份与恢复
- Broker
- Colocation Join
- Bucket Shuffle Join
- 动态分区
- 数据导出
- 导出查询结果集
- 分区缓存
- 权限管理
- LDAP
- 资源管理
- 查询执行的统计
- Runtime Filter
- Segment V2 升级手册
- 文件管理器
- SQL MODE
- 时区
- 变量
- 更新
- 多租户和资源划分
最佳实践
扩展功能
- 审计日志插件
- Doris On ES
- Doris output plugin
- ODBC External Table Of Doris
- Doris 插件框架
- Spark Doris Connector
- Flink Doris Connector
- DataX doriswriter
- UDF
设计文档
SQL 手册
- SQL 函数
- 日期函数
- convert_tz
- curdate
- current_timestamp
- curtime,current_time
- date_add
- date_format
- date_sub
- datediff
- day
- dayname
- dayofmonth
- dayofweek
- dayofyear
- from_days
- from_unixtime
- hour
- makedate
- minute
- month
- monthname
- now
- second
- strtodate
- time_round
- timediff
- timestampadd
- timestampdiff
- to_days
- unix_timestamp
- utc_timestamp
- week
- weekofyear
- year
- yearweek
- 地理位置函数
- 字符串函数
- 聚合函数
- bitmap 函数
- Hash函数
- Doris 窗口函数使用
- CAST
- DIGITAL_MASKING
- 日期函数
- 语法帮助
- 用户账户管理
- 集群管理
- ADMIN CANCEL REPAIR
- ADMIN CLEAN TRASH
- ADMIN CHECK TABLET
- ADMIN REPAIR
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ADMIN SHOW DATA SKEW
- ALTER CLUSTER
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE CLUSTER
- CREATE FILE
- DROP CLUSTER
- DROP FILE
- ENTER
- INSTALL PLUGIN
- LINK DATABASE
- MIGRATE DATABASE
- SET LDAPADMINPASSWORD
- SHOW BACKENDS
- SHOW BROKER
- SHOW FILE
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW MIGRATIONS
- SHOW PLUGINS
- SHOW TABLE STATUS
- SHOW TRASH
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER TABLE
- ALTER VIEW
- BACKUP
- CANCEL ALTER
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE DATABASE
- CREATE ENCRYPTKEY
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- DROP DATABASE
- DROP ENCRYPTKEY
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- HLL
- RECOVER
- RESTORE
- SHOW ENCRYPTKEYS
- SHOW RESOURCES
- TRUNCATE TABLE
- CREATE FUNCTION
- DROP FUNCTION
- SHOW FUNCTIONS
- DML
- BROKER LOAD
- CANCEL LOAD
- DELETE
- EXPORT
- GROUP BY
- LOAD
- MINI LOAD
- MULTI LOAD
- PAUSE ROUTINE LOAD
- RESUME ROUTINE LOAD
- ROUTINE LOAD
- SHOW ALTER
- SHOW BACKUP
- SHOW CREATE FUNCTION
- SHOW CREATE ROUTINE LOAD
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- SHOW PARTITIONS
- SHOW PROPERTY
- SHOW REPOSITORIES
- SHOW RESTORE
- SHOW ROUTINE LOAD TASK
- SHOW ROUTINE LOAD
- SHOW SNAPSHOT
- SHOW TABLES
- SHOW TABLET
- SHOW TRANSACTION
- SPARK LOAD
- STOP ROUTINE LOAD
- STREAM LOAD
- ALTER ROUTINE LOAD
- INSERT
- UPDATE
- 数据类型
- 辅助命令
开发者手册
- 调试工具
- Doris BE存储层Benchmark工具
- 使用 Eclipse 搭建 FE 开发环境
- 使用 IntelliJ IDEA 搭建 FE 开发环境
- Apache Doris Be 开发调试
- Java 代码格式化
- C++ 代码格式化
Apache 社区
Segment V2 升级手册
背景
Doris 0.12 版本中实现了新的存储格式:Segment V2,引入词典压缩、bitmap索引、page cache等优化,能够提升系统性能。
0.12 版本会同时支持读写原有的 Segment V1(以下简称V1) 和新的 Segment V2(以下简称V2) 两种格式。如果原有数据想使用 V2 相关特性,需通过命令将 V1 转换成 V2 格式。
本文档主要介绍从 0.11 版本升级至 0.12 版本后,如何转换和使用 V2 格式。
V2 格式的表可以支持以下新的特性:
- bitmap 索引
- 内存表
- page cache
- 字典压缩
- 延迟物化(Lazy Materialization)
从 0.13 版本开始,新建表的默认存储格式将为 Segment V2
集群升级
0.12 版本仅支持从 0.11 版本升级,不支持从 0.11 之前的版本升级。请先确保升级的前的 Doris 集群版本为 0.11。
0.12 版本有两个 V2 相关的重要参数:
default_rowset_type
:FE 一个全局变量(Global Variable)设置,默认为 "alpha",即 V1 版本。default_rowset_type
:BE 的一个配置项,默认为 "ALPHA",即 V1 版本。
保持上述配置默认的话,按常规步骤对集群升级后,原有集群数据的存储格式不会变更,即依然为 V1 格式。如果对 V2 格式没有需求,则继续正常使用集群即可,无需做任何额外操作。所有原有数据、以及新导入的数据,都依然是 V1 版本。
V2 格式转换
已有表数据转换成 V2
对于已有表数据的格式转换,Doris 提供两种方式:
创建一个 V2 格式的特殊 Rollup
该方式会针对指定表,创建一个 V2 格式的特殊 Rollup。创建完成后,新的 V2 格式的 Rollup 会和原有表格式数据并存。用户可以指定对 V2 格式的 Rollup 进行查询验证。
该方式主要用于对 V2 格式的验证,因为不会修改原有表数据,因此可以安全的进行 V2 格式的数据验证,而不用担心表数据因格式转换而损坏。通常先使用这个方式对数据进行校验,之后再使用方法2对整个表进行数据格式转换。
操作步骤如下:
## 创建 V2 格式的 Rollup ALTER TABLE table_name ADD ROLLUP table_name (columns) PROPERTIES ("storage_format" = "v2");
其中, Rollup 的名称必须为表名。columns 字段可以任意填写,系统不会检查该字段的合法性。该语句会自动生成一个名为
__V2_table_name
的 Rollup,并且该 Rollup 列包含表的全部列。通过以下语句查看创建进度:
SHOW ALTER TABLE ROLLUP;
创建完成后,可以通过
DESC table_name ALL;
查看到名为__v2_table_name
的 Rollup。之后,通过如下命令,切换到 V2 格式查询:
set use_v2_rollup = true; select * from table_name limit 10;
use_V2_Rollup
这个变量会强制查询名为__V2_table_name
的 Rollup,并且不会考虑其他 Rollup 的命中条件。所以该参数仅用于对 V2 格式数据进行验证。转换现有表数据格式
该方式相当于给指定的表发送一个 schema change 作业,作业完成后,表的所有数据会被转换成 V2 格式。该方法不会保留原有 v1 格式,所以请先使用方法1进行格式验证。
ALTER TABLE table_name SET ("storage_format" = "v2");
之后通过如下命令查看作业进度:
SHOW ALTER TABLE COLUMN;
作业完成后,该表的所有数据(包括Rollup)都转换为了 V2。且 V1 版本的数据已被删除。如果该表是分区表,则之后创建的分区也都是 V2 格式。
V2 格式的表不能重新转换为 V1
创建新的 V2 格式的表
在不改变默认配置参数的情况下,用户可以创建 V2 格式的表:
CREATE TABLE tbl_name
(
k1 INT,
k2 INT
)
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES
(
"storage_format" = "v2"
);
在 properties
中指定 "storage_format" = "v2"
后,该表将使用 V2 格式创建。如果是分区表,则之后创建的分区也都是 V2 格式。
全量格式转换(试验功能,不推荐)
通过以下方式可以开启整个集群的全量数据格式转换(V1 -> V2)。全量数据转换是通过 BE 后台的数据 compaction 过程异步进行的。 该功能目前并没有很好的方式查看或控制转换进度,并且无法保证数据能够转换完成。可能导致同一张表长期处于同时包含两种数据格式的状态。因此建议使用 ALTER TABLE 针对性的转换。
从 BE 开启全量格式转换
在
be.conf
中添加变量default_rowset_type=BETA
并重启 BE 节点。在之后的 compaction 流程中,数据会自动从 V1 转换成 V2。从 FE 开启全量格式转换
通过 mysql 客户端连接 Doris 后,执行如下语句:
SET GLOBAL default_rowset_type = beta;
执行完成后,FE 会通过心跳将信息发送给 BE,之后 BE 的 compaction 流程中,数据会自动从 V1 转换成 V2。
FE 的配置参数优先级高于 BE 的配置。即使 BE 中的配置
default_rowset_type
为 ALPHA,如果 FE 配置为 beta 后,则 BE 依然开始进行 V1 到 V2 的数据格式转换。建议先通过对单独表的数据格式转换验证后,再进行全量转换。全量转换的时间比较长,且进度依赖于 compaction 的进度。可能出现 compaction 无法完成的情况,因此需要通过显式的执行
ALTER TABLE
操作进行个别表的数据格式转换。查看全量转换进度
全量转换进度须通过脚本查看。脚本位置为代码库的
tools/show_segment_status/
目录。请参阅其中的README
文档查看使用帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论