GBase 8c 数据库有没有分区表

GBase 8c 数据库有没有分区表,第1张

GBase 8c数据库分区信息都存储在系统表pg_partitioned_table中,可以通过系统表数据实现。partstrat列可以看分区策略,”l”表示列表分区,”r” 表示范围分区;partnatts 列查看分区键的列数。

先打开SQL Server数据库并连接。

然后找到目标数据库,右键并点击“属性”。

在d出的属性窗口左侧“选择页”中选择“文件”选项卡。

然后在右侧窗体中即可看到相应内容了:逻辑名称是数据文件及日志文件的文件名,路径就是其所在位置了。

如图,就是相应的mdf和ldf文件。

举个例子来说吧:

create table tableA ( STATIS_DAY VARCHAR2(8))

partition by list (STATIS_DAY)

(

partition PART_20110522 values ('20110522');

partition PART_20110522 values ('20110523');

partition PART_20110522 values ('20110524')

);

那么 你在写sql的时候

直接 select from tableA where STATIS_DAY between '20110524' and '20110523' 就是查询多个分区了啊!

首先你要理解分区的意义;

select from tableA partition(PART_20110522 ); 就是单独查询这个分区。不过其实跟

select from tableA where STATIS_DAY ='20110522' 是一个样子的~~~

分区表的相关资料:>

--这个在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

SELECT segment_name, SUM(bytes) / 1024 / 1024 Mbytes

  FROM dba_segments

 WHERE segment_type = 'TABLE PARTITION'

   AND Tablespace_name = 'SYSTEM'

 GROUP BY segment_name;

SQLSERVER中,有时需要知道已经建了哪些分区表,从哪里看?

1、直接用SQL语句查:

--分区数大于1的,就是我们想查看的分区表:

SELECT p,'|' AS SP ,t FROM syspartitions AS p

inner JOIN systables AS t ON pobject_id = tobject_id

inner join (

select object_id as object_id2,index_id, count() AS CNT FROM syspartitions

group by object_id,index_id

having count()>1

) s on sobject_id2 = pobject_id

WHERE ppartition_id IS NOT NULL

order by tname;

2、在管理器中查看:

Databases > [数据库名称] 节点 > 存储(Storage) 节点 >

\ 分区架构(Partition Schemes ) 节点 > 选中一项 > 右键 > 查看依赖

\ 分区函数(Partition Functions ) 节点 > 选中一项 > 右键 > 生成脚本

3、有作多分区的表,属性的 存储(Storage) 会有 Partitioning 信息。

以上就是关于GBase 8c 数据库有没有分区表全部的内容,包括:GBase 8c 数据库有没有分区表、如何查看数据库的各种数据文件、oracle中分区查询时,怎样一次查询多个分区等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存