![](/img/trans.png)
[英]What is most efficient way for loading big amount of data from CSV file in Android?
[英]Getting a huge amount of data from database in the most efficient way
在我的應用程序中,我必須閱讀大量數據。 獲得所有數據后,我將其放入列表並對其進行處理並相應地進行操作。
現在我想知道我是否可以做任何事情,加速從數據庫進程獲取數據的任何事情? 我的數據庫位於不同的服務器上,我正在使用java與數據庫進行交互。
我沒有一定數量的數據,即我需要處理的特定行數。 另外我聽說我可以去多線程,但那怎么辦呢? 因為我不知道如何對我的數據進行分區,因為它是無限期的。 即,如果要應用以下偽代碼
for(i=0 to number of partition) // Not certain on the number of partitions
create new thread and get data.
或者我可以在某些屬性的基礎上散列數據,然后告訴每個線程獲取地圖的特定索引,但是如何在獲取數據之前映射它?
我可以研究所有可能的解決方案,我該如何解決這個問題? 如果您需要更多信息,請告訴我。
謝謝。
我聽說我可以去多線程,但那怎么辦呢?
這絕對是加速從遠程服務器查詢信息的好選擇。
通常在這些任務中 - 服務器的IO是主要的瓶頸,通過多線程 - 可以同時“請求”多行 - 有效地減少IO等待時間。
但那怎么辦呢?
我們的想法是將工作分成更小的任務。 有關更多詳細信息,請查看Java 高級並發API 。
一種解決方案是讓每個線程從服務器讀取一個大小為M
的塊,並在其中仍有數據(服務器)時為每個線程重復該過程。 類似的東西(對於每個線程):
data = "start";
int chunk = threadNumber;
while (data != null) {
requestChunk(chunk);
chunk += numberOfThreads;
}
我假設一旦你“超出界限”,服務器返回null
(或者requestChunk()
處理它並返回null)。
或者我可以在某些屬性的基礎上散列數據,然后告訴每個線程獲取地圖的特定索引
如果您需要迭代數據並檢索所有數據 - 散列通常是一個糟糕的解決方案。 緩存效率非常低,而且開銷對於這種情況來說太大了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.