海量数据处理方法(电能采集).doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
海量数据处理方法(电能采集)

海量数据处理方法(电能采集) 针对电能采集系统的海量数据,我们运用了如下几种方法进行处理,在很大程度上提升了数据的处理能力,这些方法也可以作为其它系统的实施参考。 1、将大表进行分区 大数据量的表,比如大于2GB。一方面2GB文件对于32位os是一个上限,另外备份时间长。包括历史数据的表,比如最新的数据放入到最新的分区中。典型需要分区的例子:历史表,只有当前月份的数据可以被修改,而其他月份只能read-only。 ORACLE只支持以下分区:tables, indexes on tables, materialized views, and indexes on materialized views 分区对SQL和DML是透明的(应用程序不必知道已经作了分区),但是DDL可以对不同的分区进行管理。 不同的分区之间必须有相同的逻辑属性,比如共同的表名,列名,数据类型,约束; 但是可以有不同的物理属性,比如pctfree, pctused, and tablespaces。 分区独立性:即使某些分区不可用,其他分区仍然可用。 查询时根据分区关键字,只有相关的分区被访问到,可以最小化I/O 操作,性能可以成倍提高,在数据量增加的情况下,响应时间不变。 最多可以分成64000个分区,但是具有LONG or LONG RAW列的表不可以分区。 非分区的表可以有分区或者非分区的索引; 分区表可以有分区或者非分区的索引; Partitioning 方法: Range Partitioning List Partitioning Hash Partitioning Composite Partitioning Composite Partitioning:组合,以及 range-hash and range-list composite partitioning 分区索引:分为global, local index local partitioned index: 每个local index对应一个分区。增加和删除分区自动的增加和删除了local index。 Local index可以是全表unique的,条件是partition key必须是index columns的一部分? CREATE INDEX employees_local_idx ON employees (employee_id) LOCAL; 分区上的位图索引只能建立为local partitioned index,不能是global Global partitioned index: 索引也分区,但是分几个区,按照什么样的partition key分区跟表没有关系。不能增加分区,可以使用ALTER INDEX SPLIT PARTITION;删除:ALTER INDEX DROP PARTITION;这些操作会使的索引失效,所以建议: ALTER TABLE DROP PARTITION P1 UPDATE GLOBAL INDEXES 这样保证索引仍然有效,online,不需重建。 分区表建立全局索引或局部索引注意点: 查询能限定在某个分区内,就用本地索引,与全局索引比,读的块少些 而且分区索引可以单独设置存储参数比如表空间 如果对分区表的查询条件(假如where a=xx)不是分区字段,那么在a上建的索引就只能是全局的效果才会好。 局部索引只是建立在分区字段上的。 用电信息采集系统运用:对用电实时表、冻结数据表、曲线数据表按时间关键字进行分区、建立本地索引管理,分区和索引划分不同的表空间,很大程度上优化了IO,简化数据管理,提高了性能处理能力。 2、优化大表的连接方式 排序 - - 合并连接(Sort Merge Join, SMJ): a) 对于非等值连接,这种连接方式的效率是比较高的。 b) 如果在关联的列上都有索引,效果更好。 c) 对于将2个较大的row source做连接,该连接方法比NL连接要好一些。 d) 但是如果sort merge返回的row source过大,则又会导致使用过多的rowid在表中查询数据时,数据库性能下降,因为过多的I/O。 嵌套循环(Nested Loops, NL): a) 如果driving row source(外部表)比较小,并且在inner row source(内部表)上 有唯一索引,或有高选择性非唯一索引时,使用这种方法可以得到较好的效率。 b) NESTED LOOPS有其它连接方法没有的的一个优点是:可以先返回已经 连接的行,而不必等待所有的连接操作处理完才返回数据, 这可以实现快速的响应时间。 哈希连接(Hash Join, HJ): a) 这种方法是在oracle7后来引入的,使用

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档