暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 自动化分区-Automatic List Partition(20241226)

silence 2024-12-26
412

数据库升级到19c 后,我们在业务中使用上了Auto Index 新特性。 对于读多写少的业务建索引的工作减少了很多。

今天了解到Auto Partition 特性,介绍下Automatic List Partitioning。

此特性可以解决List 分区时碰到的问题。

比如orders表以国家这列为分区键, orders 表有来自USA,UK,Ireland的用户。

示例:

1. 创建orders表并insert 。
DROP TABLE orders PURGE;

CREATE TABLE orders
(
  id            NUMBER,
  country_code  VARCHAR2(5),
  customer_id   NUMBER,
  order_date    DATE,
  order_total   NUMBER(8,2),
  CONSTRAINT orders_pk PRIMARY KEY (id)
)
PARTITION BY LIST (country_code)
(
  PARTITION part_usa VALUES ('USA'),
  PARTITION part_uk_and_ireland VALUES ('GBR', 'IRL')
);

INSERT INTO orders VALUES (1, 'USA', 10, SYSDATE, 10200.93);
INSERT INTO orders VALUES (2, 'USA', 11, SYSDATE, 948.22);
INSERT INTO orders VALUES (3, 'GBR', 22, SYSDATE, 300.83);
INSERT INTO orders VALUES (4, 'IRL', 43, SYSDATE, 978.43);
COMMIT;

2. insert 非USA,GBR,IRL 值的行。


3. 将orders 表改为automatic partition表。

ALTER TABLE orders SET PARTITIONING AUTOMATIC;

或者在创建orders 表时指定AUTOMATIC。

DROP TABLE orders PURGE;

CREATE TABLE orders
(
  id            NUMBER,
  country_code  VARCHAR2(5),
  customer_id   NUMBER,
  order_date    DATE,
  order_total   NUMBER(8,2),
  CONSTRAINT orders_pk PRIMARY KEY (id)
)
PARTITION BY LIST (country_code) AUTOMATIC
(
  PARTITION part_usa VALUES ('USA'),
  PARTITION part_uk_and_ireland VALUES ('GBR', 'IRL')
);

INSERT INTO orders VALUES (1, 'USA', 10, SYSDATE, 10200.93);
INSERT INTO orders VALUES (2, 'USA', 11, SYSDATE, 948.22);
INSERT INTO orders VALUES (3, 'GBR', 22, SYSDATE, 300.83);
INSERT INTO orders VALUES (4, 'IRL', 43, SYSDATE, 978.43);
COMMIT;

检查可以看到新加的分区名SYS_P22364。



参考链接:

https://oracle-base.com/articles/12c/automatic-list-partitioning-12cr2

实验环境Oracle19c。

最后修改时间:2024-12-26 10:52:58
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论