表分区定义
分区表就是把逻辑上的一张表根据分区策略分成几张物理块库进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。当进行条件查询时,系统只会扫描满足条件的分区,避免全表扫描,从而提升查询性能。
分区表的优势:
- 改善查询性能。对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。
- 增强可用性。如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。
- 提升可维护性。对于需要周期性删除的过期历史数据,可以通过drop/truncate分区的方式快速高效处理。
分区策略选择
当表有以下特征时,可以考虑使用表分区策略:
对已有的表进行分区
表只能在创建时声明为分区表。 例如:
1 2 |
CREATE TABLE my_tbl (x int) PARTITION BY (b int) STORE AS ORC; INSERT INTO my_tbl VALUES (1,10); |
删除一个分区
1
|
ALTER TABLE my_tbl DROP PARTITIONS (b = 10); |
查询分区
- 查询分区b = 10。
1
SELECT * FROM my_tbl where b = 10;
- 查看分区表信息。
1 2
SHOW PARTITIONS my_tbl; DESCRIBE my_tbl;
删除分区表
使用DROP TABLE语句删除一个分区表。
1
|
DROP TABLE web_returns_p1; |