每次运行Logstash时,Elasticsearch都会对我的Oracle表执行全表扫描吗?

时间:2019-03-15 15:24:35

标签: elasticsearch logstash elastic-stack logstash-jdbc

我想知道如果我尝试使用Logstash摄取该表的增量数据,那么Elasticsearch是否对Oracle表执行全表扫描

1 个答案:

答案 0 :(得分:1)

Elasticsearch不与您的数据库进行交互,而是Logstash在数据库上运行查询。 Logstash是否扫描整个表取决于查询本身和扫描的表索引。从Logstash运行的大多数查询看起来都与此类似:

SELECT * FROM TABLE WHERE FIELD_FOR_DELTA > :sql_last_value;

如果FIELD_FOR_DELTA没有索引,则Oracle将搜索所有记录以查找满足条件的条目。但是,当FIELD_FOR_DELTA有索引时,Oracle将搜索表的一小部分,或者仅检查具有最高值的记录,并在值等于或小于此值时结束查询。如果您的表中没有该字段的索引,则应考虑使用它,因为可能会提高查询性能,并降低Logstash对数据库的影响。