請耐心等待我對以下技術缺乏瞭解。對於Hbase,在MySQL中是否有像EXPLAIN這樣的函數?
我們做了一堆查詢(60k查詢),過去需要45分鐘才能完成。現在,大約相同的數量需要3小時20分鐘。編碼它的人不在這裏了,所以我們不完全知道可能發生了什麼。
我的團隊中的領導讓我看看是否有像SQLAIN中的EXPLAIN這樣的命令來查看hbase在搜索rowkey時如何通過區域。我試圖谷歌,但它看起來並不像。 Hbase中是否有一些命令與SQL中的EXPLAIN類似?
如果對問題有幫助,我們正在存儲時間序列數據。該rowkey的格式爲:
hashOfName_elementName_epochtime
我們認爲HBase的應該知道,從我們查詢,因此不會採取這麼長的時間查詢時間的ElementName以避免地區,但我們還不能確定。希望這個命令存在,這樣我們就可以看到Hbase是如何查詢的,所以我們知道我們是需要重新設計模式還是重做rowkey,或者它是當前存儲的影響速度的數據。
更新:我們查詢元素列表的時間範圍。數據每分鐘保存一次,用於hbase中的元素。當我們進行掃描時,我們可以掃描1小時或1天。 我可以從調試信息中看到,當我們掃描時,我們掃描那段時間。
e.g. hash_elementName_timestamp. timestamp is a 10 digit epoch time
hash = murmur3_128 hash function of the element name
154_eee_0000000000
154_eee_0000000060
154_eee_0000000120
...
..
154_eee_0000003600
167_aaa_0000000000
167_aaa_0000000060
...
...
167_aaa_0000003600
這是我們從掃描方法的代碼片段:
public Map<String,String> scan(String name, String columnFamilyName, String columnName, long start, long end,
boolean reversed, int limit) throws IOException {
Map<String,String> m = new LinkedHashMap<String,String>();
Table table = null;
ResultScanner scanner = null;
try {
String hash = makeHash(name,fType.getNumberOfRegion());
String key = hash + "_" + name +"_";
Scan scan;
if (reversed) {
//swap the start and end keys when reversed
scan = new Scan(Bytes.toBytes(key + end),Bytes.toBytes(key + start));
scan.setReversed(true);
} else {
scan = new Scan(Bytes.toBytes(key + start),Bytes.toBytes(key + end));
}
scan.addColumn(Bytes.toBytes(columnFamilyName), Bytes.toBytes(columnName));
table = fCconnection.getTable(fTablename);
scanner = table.getScanner(scan);
int count = 0;
for (Result result = scanner.next(); result != null; result = scanner.next()) {
//if a limit was set, then only scan until we hit the limit
if (limit > 0 && count > limit) {
break;
}
m.put(Bytes.toString(result.getRow()), Bytes.toString((result.getValue(Bytes.toBytes(columnFamilyName), Bytes.toBytes(columnName)))));
count++;
}
根據我有限的知識,在hbase中沒有'explain「。也是'Wide Column Store'的Cassandra具有此功能:http://www.datastax.com/dev/博客/ tracing-in-cassandra-1-2 –