加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

海量、多维数据让人抓狂?高效搜刮要领看这里

发布时间:2019-09-17 14:38:57 所属栏目:编程 来源:读芯术
导读:人与天下万物的互动会发生大量的时空数据。那么,当我们必要随时挪用已往的数据时,改怎么办?尤其是面临各类海量、多维度的数据库,假如没有高效的搜刮要领,我们只能望洋兴叹、一筹莫展。 别担忧,本文将器具体的代码,手把手来教授高效搜刮法的特技! 对

譬喻:

  1. select * from test where  
  2.  c1 ...  
  3.  and crt_time between ? and ?  
  4.  and test->> c1 in (?, ? ...); 

按照统计数据自动行使恰当的索引。假如必要,bitmapAnd和bitmapOr将在多个索引上自动执行归并扫描。跳过不必要扫描的页面,从头搜查掷中的页面。

堆表存储分级和分区

存储可以分为一级分区或多级分区:

1. 单一分区

譬喻,定时刻分别。

  1. create table test(  
  2.  id int8,  
  3.  crt_time timestamp, -- Time  
  4.  pos geometry, -- Location  
  5.  obj jsonb -- Object description  
  6. )  
  7. PARTITION BY range (crt_time)  
  8. ;  
  9. create table test_201701 PARTITION OF test for values FROM ( 2017-01-01 ) TO ( 2017-02-01 );  
  10. ...... 

2. 多层分区

譬喻,先定时刻分区,然后按Geohash分别。

  1. create table test_201701 PARTITION OF test for values  
  2. FROM ( 2017-01-01 ) TO ( 2017-02-01 ) partition by range(st_geohash(pos,15));  
  3. ...  
  4. create table test_201701_prefix1 PARTITION OF test for values  
  5. FROM ( xxxx1 ) TO ( xxxx2 );  
  6. -- Generate BOX (GRID) on a map, find corresponding boundaries and use  
  7. -- boundaries as partitioning conditions 

行使分区时,假如查询前提包罗分区键(如时刻和空间范畴),响应的分区将自动定位,这即为必要扫描的数据量。

建设面向工具属性的GIN索引,以实现高效查询。

索引分级与分区

与数据一样,索引在不行使分区表的环境下也支持分区逻辑。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读