当前位置:网站首页>Conversion from non partitioned table to partitioned table and precautions
Conversion from non partitioned table to partitioned table and precautions
2022-07-07 12:56:00 【PHP Development Engineer 】
Sometimes data archiving is not considered when designing at the beginning . Data archiving is not a simple export delete. Because our databases are generally delete Don't free up space . But we usually encounter insufficient space in the database , We have to face this problem . Of course, you can also do space recycling for defragmentation . I don't like it very much , Especially when it's a big watch .MySQL Once you surpass 100G Of , I dare not do it in online environment .Oracle I have done online recycling of 20T Table of , debris 800G, Recycled once and made it 55 Hours ( No downtime )
Personally, I think the best way is to use zoning , It's easy to say whether to migrate partitions or archive partitions . Generally, the partition is truncated , Soon . But what if a table has not been partitioned before ?
Let's give an example
create table b (id int ,a varchar2(10),time date); Common heap table
simulation 5 Data
insert into b values (1,'a',sysdate-120);
insert into b values (2,'b',sysdate-90);
insert into b values (3,'c',sysdate-60);
insert into b values (4,'d',sysdate-30);
insert into b values (5,'e',sysdate);
Generally speaking, we have to use time . So time indexing .
create index b1 on b (time);
Generally, tables have primary keys , stay Oracle The business document number should be used as the primary key , stay MySQL of use ID Self increment has no business meaning . stay PG According to the in Oracle Just come .
Alter table b add constraint pkb primary key(id);
by B Add primary key to the table , Note here that it must be named by itself rather than ordered by the database itself . Because there is no problem with normal masters and slaves , But there are OGG In this case, it is a pit . Later I'll talk about why .
ALTER TABLE b MODIFY
PARTITION BY RANGE (time)
(
PARTITION b1 VALUES LESS THAN (TO_DATE ('2022-03-01', 'YYYY-MM-DD')),
PARTITION b2 VALUES LESS THAN (TO_DATE ('2022-04-01', 'YYYY-MM-DD')),
PARTITION b3 VALUES LESS THAN (TO_DATE ('2022-05-01', 'YYYY-MM-DD')),
PARTITION b4 VALUES LESS THAN (TO_DATE ('2022-06-01', 'YYYY-MM-DD')),
PARTITION b5 VALUES LESS THAN (TO_DATE ('2022-07-01', 'YYYY-MM-DD'))
) online
UPDATE INDEXES
(
pkb GLOBAL,
b1 LOCAL
);
This is the command to convert non partitioned tables into separate tables online . Notice that in the red part, I specify the primary key name , If it is automatic, it is the name of automatic . The pit mentioned above is right here , Because in OGG scenario , The automatic name of the target side, that is, the downstream database, is different from that of the upstream side of the source side . Executing this command will cause OGG The interrupt .
Is this a database problem or OGG The problem of ? I don't think it's , It's about getting familiar with the product . After execution, you can see that the table has become partitioned .
At this time, the expired data will be truncated as long as drop partition That's all right. , Of course, pay attention to one UPDATE GLOBAL INDEXES; Otherwise, the data cannot be written .
The source code attachment has been packaged and uploaded to Baidu cloud , You can download it yourself ~
link : https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27 Extraction code : yu27 Baidu cloud link is unstable , It may fail at any time , Let's keep it tight .
If Baidu cloud link fails , Please leave me a message , When I see it, I will update it in time ~
Open source address Code cloud address : http://github.crmeb.net/u/defu
Github Address : http://github.crmeb.net/u/defu
边栏推荐
- 2022a special equipment related management (boiler, pressure vessel and pressure pipeline) simulated examination question bank simulated examination platform operation
- Master公式。(用于计算递归的时间复杂度。)
- Preorder, inorder and postorder traversal of binary tree
- leetcode刷题:二叉树23(二叉搜索树中的众数)
- Day-14 common APIs
- Day21 multithreading
- Session
- @What is the difference between resource and @autowired?
- ClickHouse(03)ClickHouse怎么安装和部署
- 2022 polymerization process test question simulation test question bank and online simulation test
猜你喜欢
基于NeRF的三维内容生成
ACL 2022 | small sample ner of sequence annotation: dual tower Bert model integrating tag semantics
[statistical learning method] learning notes - support vector machine (I)
关于 appium 如何关闭 app (已解决)
ACL 2022 | 序列标注的小样本NER:融合标签语义的双塔BERT模型
爱可可AI前沿推介(7.7)
BGP third experiment report
博文推荐|Apache Pulsar 跨地域复制方案选型实践
[statistical learning method] learning notes - logistic regression and maximum entropy model
3D content generation based on nerf
随机推荐
ClickHouse(03)ClickHouse怎么安装和部署
博文推荐|Apache Pulsar 跨地域复制方案选型实践
明星企业普渡科技大裁员:曾募资超10亿 腾讯红杉是股东
基于NeRF的三维内容生成
2022 polymerization process test question simulation test question bank and online simulation test
通过Keil如何查看MCU的RAM与ROM使用情况
【从 0 开始学微服务】【03】初探微服务架构
Design and implementation of communication protocol
What are the benefits of ip2long?
Leetcode question brushing: binary tree 26 (insertion operation in binary search tree)
非分区表转换成分区表以及注意事项
Day22 deadlock, thread communication, singleton mode
【无标题】
Sorting, dichotomy
[statistical learning methods] learning notes - Chapter 4: naive Bayesian method
Session
layer弹出层的关闭问题
Importance of database security
免费手机号码归属地API查询接口
JS to convert array to tree data