我想知道如果我尝试使用Logstash摄取该表的增量数据,那么Elasticsearch是否对Oracle表执行全表扫描
答案 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对数据库的影响。