tidb普通表转为分区表

tidb普通表转为分区表,第1张

TiDB是一款分布式关系型数据库,支持多种表类型,其中包括普通表和分区。如果需要将普通表转换为分区表,可以按照以下步骤进行 *** 作:

第一步:创建分区表。在创建分区表时,需要使用CREATE TABLE语句,并设置分区键和分区方式。分区键是用来确定每个分区的依据,分区方式则是指定如何对分区键进行划分。

第二步:将普通表数据导入分区表。这里可以使用INSERT INTO语句将数据从普通表中导入到分区表中。请注意,分区表中的每个分区都需要手动创建,并且必须按照分区键的要求进行划分。

第三步:修改应用程序。因为分区表的结构和普通表不同,所以需要修改应用程序以适应新的表结构。

总之,将TiDB普通表转换为分区表需要按照以上步骤进行 *** 作,以确保数据的完整性和正确性。

--这个在mssql2008+,可以创建表分区,不用创建100多个表

--你在增删改查 *** 作的时候跟单个表是一样的

--但是你的数据 *** 作有明显的分段的话,效率会大大提高

--以下从创建文件,创建分区表,到查询删除等

--谢谢

--1创建文件组

ALTER DATABASE TEST

    ADD FILEGROUP  FILEGROUP1

ALTER DATABASE TEST

    ADD FILEGROUP  FILEGROUP2    

ALTER DATABASE TEST

    ADD FILEGROUP  FILEGROUP3      

--2添加文件

ALTER DATABASE TEST

ADD FILE (

NAME = N'FILE1',

FILENAME = N'E:\ERP\FILE1NDF' ,

SIZE = 3072KB ,

FILEGROWTH = 1024KB

)

TO FILEGROUP FILEGROUP1

 

 ALTER DATABASE TEST

ADD FILE (

NAME = N'FILE2' ,

FILENAME = N'E:\ERP\FILE2NDF' ,

SIZE = 3072KB ,

FILEGROWTH = 1024KB

)

TO FILEGROUP FILEGROUP2

ALTER DATABASE TEST

ADD FILE (

NAME = N'FILE3' ,

FILENAME = N'E:\ERP\FILE3NDF' ,

SIZE = 3072KB ,

FILEGROWTH = 1024KB

)

TO FILEGROUP FILEGROUP3

--31创建分区函数

CREATE PARTITION FUNCTION FNPARTITION(INT)

AS RANGE RIGHT

FOR VALUES(333333333,666666666)

--41创建分区方案

CREATE PARTITION SCHEME SCHEMAFORPARIRION

AS PARTITION FNPARTITION  

TO(FILEGROUP1,[PRIMARY],FILEGROUP2)

--42 添加文件组

ALTER PARTITION SCHEME SCHEMAFORPARIRION

NEXT USED FILEGROUP3;

--32拆分分区

ALTER PARTITION FUNCTION FNPARTITION ()

SPLIT RANGE (500);

--33合并分区

ALTER PARTITION FUNCTION FNPARTITION ()

MERGE RANGE (500);

--51新建分区表

CREATE TABLE ORDERRECORDS

(

ID INT

)

ON SCHEMAFORPARIRION(ID)

DROP TABLE ORDERRECORDS

--52普通表变为分区表

--如果原来就主键,先删除

ALTER TABLE ORDERRECORDS DROP CONSTRAINT PK_SALE  

ALTER TABLE ORDERRECORDS ADD CONSTRAINT PK_SALE PRIMARY KEY  

(  

    ID ASC  

) ON SCHEMAFORPARIRION(ID)

--或者创建聚集索引,如果原来有主键,要先改成非聚集索引

ALTER TABLE ORDERRECORDS DROP CONSTRAINT PK_SALE  

--创建主键,但不设为聚集索引  

ALTER TABLE ORDERRECORDS ADD CONSTRAINT PK_SALE PRIMARY KEY NONCLUSTERED  

(  

    ID ASC  

) ON [PRIMARY]  

CREATE CLUSTERED INDEX CT_SALE ON ORDERRECORDS(ID)  

ON PARTSCHSALE(ID)  

--53分区表变为普通表

ALTER TABLE ORDERRECORDS DROP CONSTRAINT PK_SALE  

ALTER TABLE ORDERRECORDS ADD CONSTRAINT PK_SALE PRIMARY KEY  

(  

    ID ASC  

) ON [PRIMARY]

--或者删除

DROP INDEX CT_SALE ON ORDERRECORDS

--6删除分区方案

DROP PARTITION SCHEME SCHEMAFORPARIRION

--7删除分区函数

DROP PARTITION FUNCTION FNPARTITION

--8删除文件

ALTER DATABASE TEST  REMOVE FILE FILE1

ALTER DATABASE TEST  REMOVE FILE FILE2

ALTER DATABASE TEST  REMOVE FILE FILE3

--9删除文件组

ALTER DATABASE TEST REMOVE FILEGROUP FILEGROUP1

ALTER DATABASE TEST REMOVE FILEGROUP FILEGROUP2

ALTER DATABASE TEST REMOVE FILEGROUP FILEGROUP3

--10查看分区函数

SELECT  FROM SYSPARTITION_FUNCTIONS

SELECT  FROM SYSPARTITION_RANGE_VALUES

SELECT  FROM SYSPARTITION_SCHEMES

 --11查看每个分区的数据

 SELECT  FROM  ORDERRECORDS WHERE $PARTITIONFNPARTITION(ID)=4

--12查看分区对应的文件

 SELECT FGNAME

    FROM SYSDESTINATION_DATA_SPACES SP

    INNER JOIN SYSPARTITION_SCHEMES SCM ON SPPARTITION_SCHEME_ID = SCMDATA_SPACE_ID

    INNER JOIN SYSFILEGROUPS FG ON FGDATA_SPACE_ID = SPDATA_SPACE_ID

    WHERE SCMNAME='SCHEMAFORPARIRION' AND SPDESTINATION_ID=4

如果有时间字段,建议做分区表,按时间分区,这样表从物理上是分开的,但是对外还是一张表

好处有1原本的代码结构不用变2查询历史数据的时候,速度仍然有保障3如果建立触发器进行自动分区,理论上不管再用多少年,都不会再需要重新建表a2了

CREATE TABLE lineitem(l_orderkey DECIMAL(10,0) NOT NULL, l_cpartkey INTEGER, l_suppkey INTEGER, l_linenumber INTEGER, l_quantity DECIMAL(12,2), l_extendedprice DECIMAL(12,2), l_discount DECIMAL(12,2), l_tax DECIMAL(12,2), l_returnflag CHAR(1), l_linestatus CHAR(1), l_shipdate DATE, l_commitdate DATE, l_receiptdate DATE, l_shipinstruct CHAR(25), l_shipmode CHAR(10), l_comment VARCHAR(44)) PARTITION BY RANGE(l_shipdate) (STARTING MINVALUE, STARTING '1/1/2000' ENDING '31/12/2020' EVERY 1 YEAR(按月就是 MONTH), ENDING MAXVALUE);

以上就是关于tidb普通表转为分区表全部的内容,包括:tidb普通表转为分区表、你好,请教数据库的问题、sqlserver数据库很大,建立分表能否提升查询速度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9322750.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存