是這樣的,資料庫有近100萬條資料,需要查詢出來,一一處理,單靠查詢遍歷資料,非常慢,有沒有并發的例子,想要并發同時處理這些資料,加快速度,謝謝。目前瓶頸不在查詢速度上,而是在處理資料上,必須一一處理才行。比如 ,我先取出1000條資料,分別放入到了list1,list2,list3,list4,list5 里面(定義的Tstringlist)每個200條不同內容資料,然后分5個執行緒處理,發現處理時間上比單執行緒處理1000條并沒有快,反而慢了些,而且一個執行緒處理完下一個執行緒才開始處理,所以求大牛寫一下,怎么提高速度,資料取先按上面list 取,怎么讓5個執行緒同時處理,謝謝
uj5u.com熱心網友回復:
應該是你的代碼寫的問題。uj5u.com熱心網友回復:
沒人回復啊 ,希望大牛給簡單寫寫,怎么多執行緒并發,怎么占內核uj5u.com熱心網友回復:
首先你應該優化資料庫,合理使用索引,資料太多添加哈希演算法,總之提高查詢效率的方法太多了,但就是多執行緒解決不了的,你CPU就那個效率,就是全速前進只用來查詢也沒多大幫助。問題是,你為什么要遍歷100萬條資料,查詢的目的無非就是要找到有用的,就像百度數以億計的條目中找出來推薦給你,他用了多長時間???他要也靠遍歷不知要百度到何年何月了。。。。如果你錄入一開始就有目的性的建立資料庫,有效利用收錄的時間,就不會這么麻煩,一秒鐘找到有用的東西也不是什么事。
uj5u.com熱心網友回復:
你如果處理不同的事務,比如有的事務比較耗時你放到一個執行緒,另一個執行緒處理其他事務,那有可能提高你程式的處理的能力,但是你一個事務分到幾個執行緒并不能提高效率。CPU在一個時間就只能處理一件事情,你一個執行緒在查詢,另一個執行緒只會等待。你應該考慮怎么優化你的業務邏輯。uj5u.com熱心網友回復:
在硬體的限制下,并發是不能提高速度的。因為,并發要分配CPU的,一個執行緒下,CPU全力計算,多個執行緒就得分別給各個執行緒,分配CPU的時間,這樣,有時多執行緒,反而慢了。除非你的計算機CPU速度快,核心數很多,例如服務器。此時,并發才可以提高速度了。
圖片的處理,就需要多核心,大記憶體,這樣,實作真正意義上的并行,才能提高速度。
uj5u.com熱心網友回復:
3樓老兄 ,我的是在服務器上的,是有索引的,目前是先查出來放到服務器記憶體上的,關鍵需要資料處理,所以得遍歷,我的處理是,比如 有100萬條以前的新聞事件 ,新聞內容,目前有別人上傳了一個新聞,我要查以前新聞的相似度,所以都處理一下。uj5u.com熱心網友回復:
5樓老兄,麻煩給個方法啊,是先放到記憶體里,然后處理,怎么異步執行緒處理,是打算放到16核服務器上的當成服務。uj5u.com熱心網友回復:
把查詢到的資料用TClientDataSet快取到本地再處理,不過從你說的“而且一個執行緒處理完下一個執行緒才開始處理”看還是你的代碼有問題。uj5u.com熱心網友回復:
1、優化你的SQL 以及優化索引,2、如果優化SQL達不到你要求的話那就換性能更強的服務器以及做集群
uj5u.com熱心網友回復:
比如 有100萬條以前的新聞事件 ,新聞內容,目前有別人上傳了一個新聞,我要查以前新聞的相似度,所以都處理一下。-------------------
我覺得你的演算法有問題,加一條新聞,就要遍歷原來的100萬條記錄,這個太恐怖,可以嘗試加關鍵字,先抽取新的新聞的關鍵字,然后只抽取關鍵字相關的舊聞進行處理
uj5u.com熱心網友回復:
據我所知,多執行緒是利用CPU的空閑的時間干點別的私活,并不是同時執行,我理解的對嗎?uj5u.com熱心網友回復:
這個問題分兩種情況,一是服務端資料庫有瓶頸,二是客戶端瓶頸,如果你想單純的處理資料,那這兩種情況都好辦。把資料庫分割成幾個庫,每個庫中放一部分資料,然后n個客戶端(注意在不同的電腦上)。只要網路不存在問題,這種肯定能處理OK,
實際上就是大資料 的分布式處理方式,只不過人家是自動的,你這需要手動布置一下!
uj5u.com熱心網友回復:
1.資料庫調優2. 你執行緒不能并發,你看看是不是有什么資源是獨占的
uj5u.com熱心網友回復:
把你的處理寫成存盤程序,放到服務器端執行,可以快一點。uj5u.com熱心網友回復:
問題是,你為什么要遍歷100萬條資料,查詢的目的無非就是要找到有用的,如果你錄入一開始就有目的性的建立資料庫,有效利用收錄的時間,就不會這么麻煩,一秒鐘找到有用的東西也不是什么事------這個最靠譜了。uj5u.com熱心網友回復:
這樣每次都去遍歷真的好 ?分2步去做新聞相似度這件事,
首先: 應該是把每條新聞存到資料庫,建立 關鍵字(欄位建立索引)
然后: 要計算相似度的時候,然后用SQL陳述句篩選 一下子就出來了~~
uj5u.com熱心網友回復:
樓主威猛,每次都加載100萬條資料進行處理,這也太不靠譜了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47772.html
標籤:數據庫相關
上一篇:新手發帖
下一篇:資料庫自定義排序怎么實作
