現象:phoenix剛建表時查找很快,隨着數據導入越來越多,查詢越來越緩慢,執行explain這個表的計划都需要好幾秒,但在hbase shell里查詢很快
問題定位:這個是由於system.static表數據量太大造成,每次查詢都會去讀這張表數據
解決方案:修改org.apache.phoenix.coprocessor.MetaDataEndpointImpl,注解這句話:
//stats = StatisticsUtil.readStatistics(statsHTable, physicalTableName.getBytes(), clientTimeStamp);
重新編譯phoenix源碼,替換所有機器hbase/lib下phoenix-server、phoenix-core包,然后重啟hbase集群即可。
明顯phoenix在設計時沒有考慮到system.static表數據量太大情況。