2012-07-23 59 views
1

在CachéObjectScript(Intersystems的MUMPS方言)中,是否有一種方法可以有效地跳至全局下標範圍內的近似中點或關鍵點的線性點?相等,根據記錄的數量。查找全球下標中點

我想將下標鍵範圍分成大致相等的塊,然後並行處理每個塊。

知道全局中的鍵被安排在某種二叉樹中,這應該是底層數據存儲引擎的一個簡單操作,但我不確定是否有接口來做到這一點。

我可以通過掃描全局的整個鍵空間來做到這一點,但是這會失去嘗試並行運行操作的目的。順序掃描需要數小時才能完成。在開始掃描之前,我需要分開的密鑰空間。

我希望每個線程將到一個大小相等的連續的密鑰空間塊來單獨掃描;問題在於計算每個線程的關鍵範圍。

+0

你有沒有試過,而不是N個線程獲得R記錄每個,一個線程獲得N * R記錄每個(如果有幫助,可能線程)?你不是I/O綁定的,顯然,但我的猜測是你是網絡延遲綁定或某些在客戶端綁定。 16個記錄是一個非常小的塊。 – psr 2012-07-26 21:23:23

+0

我一次做了16條記錄,所以我可以在IN子句中使用帶有參數佔位符(?s)的單個準備語句。 16似乎足以彌補往返的開銷,而不會讓程序感到痛苦。一次執行N的問題是我要麼必須構建動態語句,要麼找到另一種上傳我想要的密鑰的方法。 – 2012-07-27 13:27:53

回答

0

對於我的特別需要,我發現我使用的應用程序有什麼,我會打電話的索引全球。另一個由應用程序用不同的鍵維護的全局鏈接返回到主表。我可以在很短的時間內掃描這些信息,並從那裏分解鍵盤。

如果有人想出了一種方法來做我想給予的主要全球,我會改變接受的答案。

0

你可以使用第二個參數「方向」(1或-1)函數$命令或$查詢

+0

我知道這個選項。不幸的是,這些功能仍然只向前或向後移動一個關鍵位置。你不能以這種方式跳到關鍵範圍的中點,這就是問題所要求的。 – 2012-07-24 13:35:59