标签: database-scan

为什么PostgreSQL对索引列执行顺序扫描?

非常简单的例子 - 一个表,一个索引,一个查询:

CREATE TABLE book
(
  id bigserial NOT NULL,
  "year" integer,
  -- other columns...
);

CREATE INDEX book_year_idx ON book (year)

EXPLAIN
 SELECT *
   FROM book b
  WHERE b.year > 2009
Run Code Online (Sandbox Code Playgroud)

给我:

Seq Scan on book b  (cost=0.00..25663.80 rows=105425 width=622)
  Filter: (year > 2009)
Run Code Online (Sandbox Code Playgroud)

为什么它不执行索引扫描?我错过了什么?

postgresql indexing sequence database-scan

132
推荐指数
4
解决办法
5万
查看次数

HBase(简单):如何在hbase shell中执行范围前缀扫描

我正在设计一个在hbase上运行的应用程序,并希望以交互方式浏览我的集群的内容.我在hbase shell中,我想要以字符"abc"开头扫描所有键.这样的键可能包括"abc4","abc92","abc20014"等......我试过扫描

hbase(main):003:0> scan 'mytable', {STARTROW => 'abc', ENDROW => 'abc'}
Run Code Online (Sandbox Code Playgroud)

但这似乎没有返回任何东西,因为从技术上讲没有rowkey"abc"只有以"abc"开头的rowkeys

我想要的是类似的东西

hbase(main):003:0> scan 'mytable', {STARTSROWPREFIX => 'abc', ENDROWPREFIX => 'abc'}
Run Code Online (Sandbox Code Playgroud)

我听说HBase能够迅速做到这一点,并且是其主要卖点之一.我如何在hbase shell中执行此操作?

hbase database-scan

30
推荐指数
3
解决办法
7万
查看次数

sql statistics io扫描计数说明

简单的问题,但我没有在谷歌找到一个很好的解释.使用Set Statistics IO ON时,管理工作室的消息窗口中提供了逻辑读取和扫描计数.如果我有:

tbl例如,扫描计数5,逻辑读取20

扫描计数表示什么?

sql statistics performance count database-scan

22
推荐指数
4
解决办法
2万
查看次数

DynamoDB Scan with filter,匹配'is-in-set'条件

我正在尝试在DynamoDB表上使用扫描操作来匹配具有给定"标记"的项目.项目的标签存储在单个集合属性中.例如:

machine-1: tags = "windows", "iis", "64bit"
machine-2: tags = "windows", "fs"

现在,我有一个高级支持开放的支持案例,但它需要花费一些时间.我想要做的是匹配机器,其中'tags'包含条目"windows" "iis".

我可以使用CONTAINS模式匹配单个,并指定单个AttributeValue,例如字符串值为"windows".

但是,CONTAINS不支持单个AttributeValue或多个AttributeValues中的集合.它给出了一个错误.

所以我尝试过IN(AWS高级支持也建议):但是,无论我使用单个AttributeValue(甚至只是再次查找"windows"或多个),我得到零结果.

文档IN很差.该操作用4个无信息的词来描述,实际上是:" 检查完全匹配 ".

虽然我等待支持可能会继续进行几轮问答,但是有人在阅读这个熟悉这种查询的扫描吗?(如果可以的话,请先在你的答案中测试你所说的内容:我想我已尝试过明显的答案了!)

对于ref,扫描文档:http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_Scan.html

.net amazon-web-services amazon-dynamodb database-scan

13
推荐指数
1
解决办法
2688
查看次数

HBase扫描性能

我正在执行范围扫描,它给了我500k记录.如果我设置scan.setCaching(100000)它只需不到一秒钟,但如果scan.setCaching(100000)没有设置它需要将近38秒.

如果我设置scan.setBlockCache(false)scan.setCaching(100000)会发生什么?这些行是否会被缓存?

我在第一次扫描后丢弃了操作系统缓存,但扫描记录的时间没有变化.为什么?

那我该如何检查读取性能呢?

caching hadoop hbase database-scan

9
推荐指数
2
解决办法
1万
查看次数

我应该在HBase中使用prefixfilter或rowkey范围扫描

如果我使用prefixfilter进行查询,我不知道为什么它会很慢.有人可以解释一下查询HBase的最佳方法,谢谢.

hbase(main):002:0> scan 'userlib',{FILTER=>org.apache.hadoop.hbase.filter.PrefixFilter.new(org.apache.hadoop.hbase.util.Bytes.toBytes('0000115831F8'))}
ROW               COLUMN+CELL                                                                                                                                
0000115831F8001   column=track:aid, timestamp=1339121507633, value=aaa                                                                                       
1 row(s) in 41.0700 seconds

hbase(main):002:0> scan 'userlib',{STARTROW=>'0000115831F8',ENDROW=>'0000115831F9'}                                                                                        
ROW               COLUMN+CELL                                                                                                                                
0000115831F8001   column=track:aid, timestamp=1339121507633, value=aaa                                                                                       
1 row(s) in 0.1100 seconds
Run Code Online (Sandbox Code Playgroud)

performance hbase filter database-scan

8
推荐指数
1
解决办法
2万
查看次数

具有多个范围的HBase扫描

我有一个HBase表,我需要从几个范围得到结果.例如,我可能需要从不同的范围获取数据,如第1-6行,第100-150行......我知道每次扫描时,我都可以定义起始行和停止行.但如果我有6个范围,我需要扫描6次.有没有什么方法可以从一次扫描或一次RPC中获得多个范围的结果?我的HBase版本是0.98.

hbase database-scan

8
推荐指数
1
解决办法
3265
查看次数

如何将几个QualifierFilter应用于HBase中的一行

我们想用两个QualifierFilters过滤HBase表上的扫描.意味着我们只希望获得表格的行,这些行具有某个列'col_A' (!)某个其他列'col_B'.

我们目前的方法如下:

FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
Filter filter1 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_A".getBytes()));
filterList.addFilter(filter1);
Filter filter2 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_B".getBytes()));
filterList.addFilter(filter2);

Scan scan = new Scan();
scan.setFilter(filterList);
... 
Run Code Online (Sandbox Code Playgroud)

尽管HBase表中有多行同时包含列'col_A'和'col_B',但ResultScanner不会返回此扫描的任何结果.

如果我们只将scan1应用于扫描,一切正常,我们会得到所有'col_A'的行.如果我们只将filter2应用于扫描,则它是相同的.我们确实获得了所有包含'col_B'的行.

只有当我们合并这两个过滤器时,我们才会得到任何结果.

只有从表中获得col_A AND col_B的行的正确方法是什么?

hbase filter database-scan

7
推荐指数
1
解决办法
6643
查看次数

HBase是否使用主索引?

HBase如何执行查找并检索记录?例如,RDBMS的B树在HBase中的等效项是什么?

[编辑]

我了解HBase如何解析-ROOT-和.META。表格以找出哪个区域保存数据。但是如何执行本地查找?

为了更好地说明,这是一个示例:

  1. 我正在使用键77开始搜索(获取或扫描)以进行记录。
  2. HBase客户端认为密钥包含在RegionServer X持有的50-100区域中。
  3. HBase客户端与RegionServer X联系以获取数据。

RegionServer X如何找出记录77的位置?

RegionServer是否使用某种查找表(例如RDBMS的B树)作为区域的键?还是需要读取StoreFiles的所有内容(记录从50到77)?

indexing hbase lookup-tables database-scan

6
推荐指数
1
解决办法
3408
查看次数

扫描/滚动弹性搜索索引时是否有可预测的顺序?

扫描 ElasticSearch 索引时,不可能根据文档应用任何排序。但是这个过程中结果的顺序有什么定义吗?如果是的话,是可以预测的吗?

背景资料:

我需要定期对 5M 个文档进行操作,每批 1000 个文档大约需要 1 分钟处理时间。由于我无法确保每次运行该过程都会完成,因此我想让它在上次中断的地方继续工作,例如,如果滚动结果按ID(我知道,它是不),我会跟踪ID代码中最后处理的内容,并且在下一次运行时不再使用 处理任何文档ID <= lastProcessedId,以确保每个文档都得到定期处理。

顺便说一句:“处理文档”并不是指将附加信息写回索引,而是更新数据库中的其他一些内容。在我的情况下,向索引文档写入时间戳不会有帮助,因为进程中断的原因之一可能是索引被替换为新索引(从头开始重新构建)。将处理后的时间戳写入数据库对我来说也不是一个理想的选择,因为迭代性能是我首先使用索引滚动的原因......

scroll elasticsearch database-scan

5
推荐指数
1
解决办法
2391
查看次数

hbase shell命令 - 扫描和过滤

我是Hadoop和hbase的新手.任何人都可以帮我解决扫描和过滤命令.

我试图使用Filter在hbase中记录一系列行和特定药物的记录.当我给出这个shell命令时:scan 'Mytable', {COLUMNS => ['abc'], FILTER => "avil",STARTROW => "1100",STOPROW => "1121"}

它显示我的错误: Incorrect Filter String

我试图使用此命令作为参考:

 hbase> scan 't1', {FILTER => "(PrefixFilter ('row2') AND (QualifierFilter (>=, 'binary:xyz'))) AND (TimestampsFilter ( 123, 456))"}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解释什么是Prefixfilter和QualifierFilter?

shell command hbase filter database-scan

3
推荐指数
1
解决办法
1万
查看次数

为什么oracle选择INDEX RANGE SCAN超过快速全指数扫描

我已经阅读了一些关于索引的文档,我做了一些例子,现在我有些疑惑.

我创建一个表并插入随机值,(一列有唯一值)列A NOT NULL我在A,B,C上创建一个索引.(B-TREE)

SELECT COUNT(*) FROM DEMO_FULL_INDEX_SCAN;
=1000
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM DEMO_FULL_INDEX_SCAN;

         A          B          C          D          E          F
---------- ---------- ---------- ---------- ---------- ----------
         1          7        109          1          1          1
         2         12         83          2          2          2
         3         21        120          3          3          3
         4         13         74          4          4          4
         5          2          1          5          5          5
...
Run Code Online (Sandbox Code Playgroud)

文档说明当所有查询值都在索引中时,值是从索引(INDEX FAST FULL SCAN)收集的,但这里优化器正在选择另一个操作.

EXPLAIN PLAN FOR
SELECT A,B,C FROM DEMO_FULL_INDEX_SCAN WHERE A = 1;
--------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows …
Run Code Online (Sandbox Code Playgroud)

oracle indexing range database-scan

2
推荐指数
1
解决办法
2万
查看次数

如何查找HBase表中特定列中具有特定值的所有行

在HBase表中,我有一个包含3列的列族addr:addr:city,addr:state,addr:zip.我想找到city = Chicago的所有行.任何想要使用过滤器的想法?什么是java语法?

java hbase filter database-scan

1
推荐指数
1
解决办法
1875
查看次数