博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库分区
阅读量:5062 次
发布时间:2019-06-12

本文共 1874 字,大约阅读时间需要 6 分钟。

 

概述

   数据分区主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。 

orcale的分区

  1.range分区:就是区域分区

在数据库创建分区

CREATE TABLE TEST(    ID VARCHAR2(5),    COUNT NUMBER(10,2),    DATE  TIMESTAMP)PARTITION BY RANGE (COUNT)(    PARTITION P1 VALUES TEST THAN (1000) TABLESPACE CUS_TS01,    PARTITION P2 VALUES TEST THAN (2000) TABLESPACE CUS_TS02)

select * from user_tab_partitions; --查询所有分区情况

select * from TEST partition(p1); --查询某表的某一分区数据

分区后,新增数据的COUNT字段如果小于1000就存储到P1分区中,如果1000到2000存储到P2分区中。

但是这时如果我们新增的一条数据的COUNT字段值大于2000,将无法存储到表中。我们可以扩展分区,语法如下:

  alter table TEST add partition p4 values less than(maxvalue); --大于2000的都会存到此分区中,当然也可以增加更多的分区

删除分区的语法如下:

  alter table TEST drop partition p4; --注意:删除分区会把分区内已有的数据同时删除

如果现在update分区p1中的COUNT值为1500,需要在update前增加以下语句:

  alter table TEST enable row movement; --使其row能移动

这样再update就可以成功了

2.分区索引

  分区索引大体上分为两大类,一类叫做local,一类叫做global。

  local:在每个分区上建立索引

  global:一种在全局上建立索引

创建语法

create index idx_count on TEST(count) local;--建立分区索引,在sale表的每个分区都建立了索引

select * from user_ind_partitions;--查询所有分区索引情况

3.list分区

该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。 

4.hash分区

这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。 

散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。 

5.复合分区

这种分区是基于范围分区和列表分区,表首先按某列进行范围分区,然后再按某列进行列表分区,分区之中的分区被称为子分区。 

6.间隔分区(工作中常用)

是一种分区自动化的分区,可以指定时间间隔进行分区,这是oracle11g的新特性,实际工作中很常用。实际上是由range分区引申的,最终实现了range分区的自动化

按月语法

create table interval_sale(sid int,sdate timestamp)partition by range(sdate)interval (numtoyminterval(1,'DAY'))(partition p1 values less than (TIMESTAMP '2018-05-09 00:00:00.00'))

 按天创建

create table interval_sale(sid int,sdate timestamp)partition by range(sdate)interval (NUMTODSINTERVAL(1,'DAY'))(partition p20180509 values less than (TIMESTAMP '2018-05-09 00:00:00.00'))

 

转载于:https://www.cnblogs.com/hkzklt/p/9013015.html

你可能感兴趣的文章
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
页面置换算法-LRU(Least Recently Used)c++实现
查看>>
如何获取Android系统时间是24小时制还是12小时制
查看>>
fur168.com 改成5917电影
查看>>
PHP上传RAR压缩包并解压目录
查看>>
codeforces global round 1题解搬运
查看>>
python os模块
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
多服务器操作利器 - Polysh
查看>>
[LeetCode] Candy
查看>>
Jmeter学习系列----3 配置元件之计数器
查看>>
jQuery 自定义函数
查看>>