注册
DCP 考试心得与感想
培训园地/ 文章详情 /

DCP 考试心得与感想

🍀Bai 2025/07/25 57 0 0

DCP 考试心得与感想

最近参加了 DCP 的培训课程与考试,收获满满,想把自己的一些心得分享给大家。

DCP 的考试分为理论上机两部分。理论考试涵盖的知识面广,题型有单选、多选和判断,共 200 道题,考试时长 2 小时,这部分难度不算太大,报名成功后会有模拟练习题库,掌握好知识点,基本都能应对。上机部分时间很紧凑,而且试卷题目不会像 DCA 那样明确给出如何操作,有些细节考点需要自己理解和思考。在备考策略上,一定要注重理论与实践相结合,遇到问题解决问题,增加自己的经验。一些理论部分的考点会隐藏在上机考题中,多思考,多实操,学以致用,不要盲目刷题。

PS: 主流虚拟机都支持创建备份或快照,做一套和考试相同的环境,练习完直接还原非常方便。

image.png

技术分享——分区表

在达梦数据库DCP中,分区表是重要的考点之一,下面分享一下我对分区表的理解。

分区表的分类

分区表技术是提升数据库性能与管理效率的重要手段,其中分区类型包括范围分区、列表分区、哈希分区和间隔分区等多种方式,不同的分区类型适合不同的应用场景。

  1. 范围分区

范围分区是对表中的某些列上值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。分区列一般是数字或是日期类型。

  1. 列表分区

列表分区通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。

  1. 哈希分区

哈希分区通过对分区列值进行 HASH 运算后,确定实际数据存放位置,主要用来确保数据在预先确定数目的分区中平均分布。当无法预测某个列上的数据变化范围时,哈希分区是一种不错的选择,它能让数据均匀地分布在各个分区中。

  1. 间隔分区

间隔分区属于范围分区的一种特殊形式,在创建范围分区表时,可通过 INTERVAL <间隔表达式> 子句将该范围分区表指定为间隔分区表。它适合处理按一定时间间隔增长的数据。

场景分析和分区选择

假设我们准备了 2000 年以后全国各城市的每天的历史天气数据,要为用户提供查询功能,不同的查询需求决定了不同的分区类型选择,以下是几种常见需求场景以及对应的分区选择建议。

场景一:频繁查询某个时间段内全国各地区的天气信息,如查询近一个月、近三个月的天气。

分区选择:范围分区。由于查询重点在于时间段,范围分区按时间范围划分数据,能快速定位到所需时间段的分区数据,提升查询效率。以RECORD_DATE作为分区列,示例如下:

CREATE TABLE weather_info ( ID INT, PROVINCE_CODE CHAR(2), CITYCODE CHAR(6), WEATHER_TYPE VARCHAR(20), MAX_TEMPERATURE DECIMAL(5, 2), MIN_TEMPERATURE DECIMAL(5, 2), RECORD_DATE DATE, HUMIDITY DECIMAL(5, 2) ) PARTITION BY RANGE (RECORD_DATE) ( PARTITION p_1 VALUES LESS THAN (DATE '2024-01-01'), PARTITION p_2 VALUES LESS THAN (DATE '2024-02-01'), -- 根据需求持续添加分区 PARTITION p_last VALUES LESS THAN (MAXVALUE) );

场景二: 经常查询特定地区在不同时段的天气信息,如北京、上海等城市在不同时间段的天气。

分区选择:可按行政区划编码进行列表分区,也可以结合范围分区(多级分区),先按地区进行列表分区,再在每个地区分区内按时间进行范围分区。这样对特定地区数据管理更高效,查询特定地区特定时间数据更便捷。示例代码如下:

CREATE TABLE weather_info ( ID INT, PROVINCE_CODE CHAR(2), CITYCODE CHAR(6), WEATHER_TYPE VARCHAR(20), MAX_TEMPERATURE DECIMAL(5, 2), MIN_TEMPERATURE DECIMAL(5, 2), RECORD_DATE DATE, HUMIDITY DECIMAL(5, 2) ) PARTITION BY LIST (PROVINCE_CODE) SUBPARTITION BY RANGE (RECORD_DATE) ( PARTITION p_bj VALUES ('11') ( SUBPARTITION p_bj_1 VALUES LESS THAN (DATE '2024-01-01'), SUBPARTITION p_bj_2 VALUES LESS THAN (DATE '2024-02-01') -- 依此类推 ), PARTITION p_heb VALUES ('13') ( SUBPARTITION p_heb_1 VALUES LESS THAN (DATE '2024-01-01'), SUBPARTITION p_heb_2 VALUES LESS THAN (DATE '2024-02-01') -- 依此类推 ) );

场景三:数据量极大,需均衡各分区数据负载,对特定地区和时间段查询无明显偏好。

分区选择:哈希分区。哈希分区通过对分区列值进行哈希运算均匀分布数据,可避免数据倾斜,提升系统并发处理能力。以ID作为分区列,示例代码如下:

CREATE TABLE weather_info ( ID INT, PROVINCE_CODE CHAR(2), CITYCODE CHAR(6), WEATHER_TYPE VARCHAR(20), MAX_TEMPERATURE DECIMAL(5, 2), MIN_TEMPERATURE DECIMAL(5, 2), RECORD_DATE DATE, HUMIDITY DECIMAL(5, 2) ) PARTITION BY HASH (ID) PARTITIONS 10;

场景四:随着时间流逝,不断更新历史天气数据,数据会按时间顺序不断增长,希望自动按一定时间间隔创建新分区。

分区选择:间隔分区。间隔分区适合处理按固定时间间隔增长的数据,系统可自动按设定间隔创建新分区,减少人工管理成本。以RECORD_DATE作为分区列,示例代码如下:

CREATE TABLE weather_info ( ID INT, PROVINCE_CODE CHAR(2), CITYCODE CHAR(6), WEATHER_TYPE VARCHAR(20), MAX_TEMPERATURE DECIMAL(5, 2), MIN_TEMPERATURE DECIMAL(5, 2), RECORD_DATE DATE, HUMIDITY DECIMAL(5, 2) ) PARTITION BY RANGE (RECORD_DATE) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH')) ( PARTITION p_start VALUES LESS THAN (DATE '2024-01-01') );
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服