柯南君 :Oracle 分区技术 之 如何支撑大数据操作?

本文深入探讨了Oracle的分区技术,包括范围分区、散列分区、列表分区及其组合使用,强调了分区在大数据操作中的性能提升和管理优势。通过实例分析,解释了不同分区策略的适用场景和操作方法,如分裂、合并、添加和删除分区,以及交换功能在ETL和重复记录删除中的应用。此外,还讨论了分区的维护操作和性能评估,为数据库优化提供了实践指导。
摘要由CSDN通过智能技术生成

       

        前段时间,看了罗女士( 资深技术顾问 - Oracle 中国 顾问咨询部)关于《大批量数据处理技术的演讲》视频,感觉受益良多,结合多年的知识积累,柯南君给大家分享一下:

      交流内容:     

      一、Oracle的分区技术

         (一)分区技术内容

            1. 什么是分区?

              分区就是将一个非常大的table或者index 按照某一列的值,分解为更小的,易于管理的逻辑片段---分区。将表或者索引分区不会影响SQL语句以及DML(见备注语句,就和使用非分区表一样,每个分区拥有自己的segment(见备注,因为,DDL(见备注能够将比较大的任务分解为更小的颗粒。分区表只有定义信息,只有每个存放数据的分区才有各自的segment。就好象拥有多个相同列名,列类型的一个大的视图。

  •  大数据对象(表,索引)被分成小物理段;
  •  当分区表建立时,记录基于分区字段值被存储到相应的分区;
  •  分区字段值可以修改(row movement enable);
  •  分区可以存储在不同的表空间;
  •  分区可以有不同的物理存储参数;
  •  分区可以支持IOT表,对象表,LOB字段,varrays等;
             备注:

                    ①  DML(data manipulation language): 
                          它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言;
                          

                     ② segment(data manipulation language): 

                           段(segment)是一种在数据库中消耗物理存储空间的任何实体(一个段可能存在于多个数据文件中,因为物理的数据文件
 是组成逻辑表空间的基本物理存储单位)

             2.分区的好处?

  • 性能
              - Select 和 DML操作只访问指定分区

              - 并行DML操作

              - Patition - wise Join

  • 可管理性:数据删除,数据备份
             - 历史数据清除

             - 提高备份性能

             - 指定分区的数据维护操作

  • 可用性
              - 将故障局限在分区中

              - 缩短恢复时间

  • 分区目标优先级
             - 高性能->数据维护能力->实施难度->高可用性(故障屏蔽能力)   

               ③  如何实施分区?

         

  A .  Range Partitioning(范围分区)

     【案例分析】:

           就是根据数据库表中某一字段的值的范围来划分分区,例如:

   Sql代码  收藏代码
  1. create table graderecord  
  2.   (  
  3.   sno varchar2(10),  
  4.   sname varchar2(20),  
  5.   dormitory varchar2(3),  
  6.   grade int  
  7. )  
  8. partition by range(grade)  
  9. (  
  10.   partition bujige values less than(60),      --不及格  
  11.   partition jige values less than(85),        --及格  
  12.   partition youxiu values less than(maxvalue) --优秀  
  13. )  

    备注:

         ① 分区字段:grade

         ② values less than 必须是确定值

     ③ 每个分区可以单独指定物理属性 例如:partition bujige values less than(60) tablespace data0

         ④ 说明:数据中有空值,Oracle机制会自动将其规划到maxvalue的分区中。

    

    1)插入实验数据:

Sql代码  收藏代码
  1. insert into graderecord values('511601','魁','229',92);  
  2. insert into graderecord values('511602','凯','229',62);  
  3. insert into graderecord values('511603','东','229',26);  
  4. insert into graderecord values('511604','亮','228',77);  
  5. insert into graderecord values('511605','敬','228',47);  
  6. insert into graderecord(sno,sname,dormitory) values('511606','峰','228');  
  7. insert into graderecord values('511607','明','240',90);  
  8. insert into graderecord values('511608','楠','240',100);  
  9. insert into graderecord values('511609','涛','240',67);  
  10. insert into graderecord values('511610','博','240',75);  
  11. insert into graderecord values('511611','铮','240',60);  

   2)下面查询一下全部数据,然后查询各个分区数据,代码一起写:

Java代码  收藏代码
  1. select * from graderecord;  
  2. select * from graderecord partition(bujige);  
  3. select * from graderecord partition(jige);  
  4. select * from graderecord partition(youxiu);  

   全部数据如下:

   

 

   不及格数据如下:

   

 

  及格数据如下:

    

 

    优秀数据如下:

    

    【范围分区特点】:

      ① 最早、最经典的分区算法
      ② Range分区通过对分区字段值的范围进行分区
     ③ Range分区特别适合于按时间周期进行数据的存储。日、周、月、年等。
     ④ 数据管理能力强
     ⑤ 数据迁移
    ⑥ 数据备份
    ⑦ 数据交换
    ⑧ 范围分区的数据可能不均匀
    ⑨ 范围分区与记录值相关,实施难度和可维护性相对较差

B.hash (散列分区)

       【案例分析】:
        散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。

还是刚才那个表,只不过把范围分区改换为散列分区,语法如下(删除表之后重建):

Sql代码  收藏代码
  1. create table graderecord  
  2. (  
  3.   sno varchar2(10),  
  4.   sname varchar2(20),  
  5.   dormitory varchar2(3),  
  6.   grade int  
  7. )  
  8. partition by hash(sno)  
  9. (  
  10.   partition p1,  
  11.   partition p2,  
  12.   partition p3  
  13. );  

 

  备注:

      ① 说明:散列分区即为哈希分区,Oracle采用哈希码技术分区,具体分区如何由Oracle说的算,也可能我下一次搜索就不是这个数据了。

  

  1)    插入实验数据,与范围分区实验插入的数据相同。

     然后查询分区数据:

Sql代码  收藏代码
  1. select * from graderecord partition(p1);  
  2. select * from graderecord partition(p2);  
  3. select * from graderecord partition(p3);  

   p1分区的数据:

   

 

   p2分区的数据:

   

 

  p3分区的数据:

  

   【HASH分区特点】:

  •基于分区字段的HASH值,自动将记录插入到指定分区。
  •分区数一般是2的幂
  •易于实施
 •总体性能最佳
 •适合于静态数据
 •HASH分区适合于数据的均匀存储
 •HASH分区特别适合于PDML和partition-wise joins。
 •支持 (hash) local indexes
 •9i不支持 (hash)global indexes
 •10g 支持(hash)global indexes HASH分区
 •数据管理能力弱
 •HASH分区对数据值无法控制

c.列表分区

     【案例分析】:

     列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。

Sql代码  收藏代码
  1. create table graderecord  
  2. (  
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值