使用Logstash JDBC获取Oracle数据的小问题

需要将Oracle中的数据,通过Logstash JDBC input插件,写入到Elasticsearch中,遇到了一个因为时间类型设置不正确导致的性能问题。
为了能够不断的将数据增量写入Elasticsearch,做了如下配置:

record_last_run => true        
tracking_column => "mark_datetime"       
tracking_column_type => "timestamp"        
use_column_value => true

这里设置tracking_column_type出现了问题,数据库表中mark_datetime字段是Date类型。虽然整个pipline能够运行无误,但是运行效率发现不够好。
到Oracle数据库中检查,发现SQL语句变成了

SYS_EXTRACT_UTC("M"."MARK_DATETIME")>TIMESTAMP' 2015-07-19 11:17:03.000000000’

这就导致了MARK_DATETIME上现有的索引不能使用。
Oracle在Date和Timestamp之间自动做了转换。

Leave Comment