本文借鉴:Oracle亿级数据查询处理、Oracle 分区表使用和查询、垂直分区+水平分区(特此感谢!)

一、前言

大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机,在尝试添加索引及查询方式修改后,还有没有更有效的解决方案呢?

分库、分表、分区这些概念咱就应该了解一下。

二、分表

假如一个大型商城有一个订购关系表,每个用户的订单都落在这个表里面,那么时间一长,要进行查询的时候,肯定慢得要死,这样的系统给客户用,那就凉凉思密达了...

拆分思想

咱可以对这个总表进行拆分,例如对年进行拆分,每个年表只存一年的记录,那么这样数据就分散开来了,每个表的数据就少很多,根据具体情况还可以按月分,按日分等等...

PS:注意,分表使用时,查询语句里要进行动态拼装查询的表名。

三、分区

简介

年表创建过后,查询就是查询年表中的数据,可是虽然分表了,但是年表中的数据量仍然很大,查询速度虽然有提升,但并不能满足用户的要求,此时考虑在年表中再根据月份进行分区。

定义

表分区后,逻辑上仍然是一张表,只不过将表中的数据在物理上存放到多个表空间上

目的

这样在查询数据时,会查询相应分区的数据,减少SQL操作的数据量,避免了全表扫描,从而提升查询效率

水平分区

对行进行分区,举个例子来说,就是一个表中有1000万条数据,每100万条数据划一个分区,这样就将表中数据分到10个分区中去。

PS:水平分区要通过某个特定的属性列进行分区,如用时间先orderBy后再分区。

垂直分区

对列进行分区,减少表的宽度,从而提升查询效率。

比如一个学生表中,有他相关的信息列,还有论文列以CLOB存储,可以把这些不经常使用的CLOB划分到另一个分区,需要访问时再调用它。

代码样例

--水平分区--按照订单时间进行水平分区
CREATE TABLE ORDER_ACTIVITIES
(   ORDER_ID      NUMBER(7) NOT NULL,   ORDER_DATE    DATE,   TOTAL_AMOUNT NUMBER,   CUSTOTMER_ID NUMBER(7),   PAID   CHAR(1)
)
PARTITION BY RANGE (ORDER_DATE)
(  PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACE ORD_TS01,  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03
);  --按省份进行分区
CREATE  TABLE  ListTable
(   id    INT  PRIMARY  KEY ,   name  VARCHAR (20),   area  VARCHAR (10)
)
PARTITION  BY  LIST (area)
(   PARTITION  part1 VALUES ('guangdong','beijing') TABLESPACE  Part1_tb,   PARTITION  part2 VALUES ('shanghai','nanjing')  TABLESPACE  Part2_tb
);  --垂直分区PS:垂直分区思路是将写入操作比较频繁的数据表,把这个两个表分离出来,放在不同的服务器PS:可以理解为外键的关联方式(不知道准不准确...)

--查询分区数据select * from 表 partition(分区名) where 条件;  

转载于:https://www.cnblogs.com/riches/p/11475270.html

Oracle学习(十四)分表分区相关推荐

  1. oracle 分表和分区哪个好_oracle 分表分区

    oracle 分表分区 一. 查询表所占存储空间 每张表都是作为"段"来存储的,可以通过user_segments视图查看其相应信息. 段(segments)的定义:如果创建一个堆 ...

  2. oracle分区list,Oracle 分区表中存在range-list表分区时遇到问题及解决办法

    Oracle 分区表中存在range-list表分区时遇到问题及解决办法 我们遇到的通常是list分区这种居多,我就不介绍了. 以下解决的是 复合分区情况 表已存在,需要在范围分区中增加一个分区 我们 ...

  3. C1认证学习十四、十五(算法常识、HTML Head 头)

    C1认证学习十四.十五(算法常识.HTML Head 头) 文章目录 C1认证学习十四.十五(算法常识.HTML Head 头) 十四(算法常识) 任务背景 任务目标 查找算法 1.顺序查找 2.二分 ...

  4. OpenCV与图像处理学习十四——SIFT特征(含代码)

    OpenCV与图像处理学习十四--SIFT特征(含代码) 一.SIFT算法 二.SIFT实现过程 三.代码实现 一.SIFT算法 SIFT, 即尺度不变特征变换算法(Scale-invariant f ...

  5. PyTorch框架学习十四——学习率调整策略

    PyTorch框架学习十四--学习率调整策略 一._LRScheduler类 二.六种常见的学习率调整策略 1.StepLR 2.MultiStepLR 3.ExponentialLR 4.Cosin ...

  6. mysql —— 分表分区

    面对当今大数据存储,设想当mysql中一个表的总记录超过1000W,会出现性能的大幅度下降吗? 答案是肯定的,一个表的总记录超过1000W,在操作系统层面检索也是效率非常低的 解决方案: 目前针对海量 ...

  7. mysql 分库分表分区总结

    Mysql目录结构 一个库一个目录 MyISAM引擎 InnoDB引擎 分库分表分区总结 对于分区分表 都可以进行横向(按表字段分),纵向分(按数据行分),此文暂时值考虑横向分. 对于分库:分库 分区 ...

  8. MySQL数据库分表分区

    防伪码:当你终于沉默,成熟才刚刚开始. 为什么要分表和分区? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且 由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性 ...

  9. 数据库 分库 分表 分区

    我们知道,如果我们使用mysql,当数据库数据量达到一定数据量之后,会考虑对数据库进行分库分表等操作,但是在什么情况下做怎么的切分,下面分表介绍. 一.分库 1 分库原因 首先,在单台数据库服务器性能 ...

最新文章

  1. R语言使用caret包构建gbdt模型(随机梯度提升树、Stochastic Gradient Boosting )构建回归模型、通过method参数指定算法名称
  2. python socket发送组播数据_python3通过udp实现组播数据的发送和接收操作
  3. 十天学会AngularJS之02
  4. JavaScript Math 对象
  5. 逛画展(单调队列) acm寒假集训日记22/1/1
  6. Intel XDK问题
  7. 修改分值,总分不能超过100
  8. 5.3.1 同步发生
  9. java编写万年历_怎么用JAVA编写万年历!
  10. 出现这6种评估违法状况,征收补偿决定可能被撤销!
  11. 【Power Query】使用Excel抓取淘宝天猫所有类目分类和cateId对应关系
  12. 2020美赛回忆录|平生第一次打美赛的获奖方式......美赛准备方法和思想
  13. 真香警告!java时间格式转换工具
  14. 数据库周刊60丨3月国产数据库排行榜出炉;日本银行数据迁移失败致使业务宕机;阿里云RDS PG13发布;亚健康Oracle数据库故障定位;Redis最佳实践;MySQL查询优化……
  15. Android之——杀死用户选中的进程优化
  16. android 北斗测试,安卓手机查看是否支持北斗导航系统的详细检测方法
  17. Sourcetree git status失败 错误代码128:error :bad signature 0x0000000
  18. 用Endnote在word中插入文献出现{Xu, 1997 #407}等样式的错误的解决方法如下
  19. Win10下如何找到下载的主题壁纸,并提取图片
  20. 分区失败,在计算机中不能打开磁盘,但是在磁盘管理软件中能打开的解决方法

热门文章

  1. 很多字段的数据要插入另一张表_一文看懂数据库设计之逻辑设计,值得收藏
  2. android win7 共享网络打印机,win7系统设置共享网络打印机的操作方法
  3. php弹出第一个数组中,PHP array_search始终返回数组的第一个键
  4. Metro App中使用Timer
  5. Pixhawk代码分析-姿态解算篇B
  6. 《Linux内核设计与实现》读书笔记(六)- 内核数据结构
  7. 嵌入式Linux系统BSP的设计与实现
  8. 贪心/动态规划 - 摆动序列
  9. linux 中 alien命令的使用
  10. linux java 安装 gi_gi的安装和使用