我有具有以下結構的表格:MySQL的瓶頸
ID, SourceID, EventId, Starttime, Stoptime
所有的ID列是CHAR(36)和所述時間日期。
問題是查詢表非常慢。我有7萬行,我大約有60-70個線程一直在寫表(插入或更新)到表中。
另一方面,我有需要從這張表中讀取的圖形用戶界面,它在這裏變得很慢。如果我想選擇所有已製作的事件where SourceID = something
,則需要將近300秒。 SourceID有一個索引。我採取相同的查詢,並把解釋關鍵字首先我得到了這個。
select type = simple
type = ref
possible_keys = sourceidnevent,sourceid
key = soruceid
key_len = 109
ref = const
rows = 84148
和查詢
SELECT * FROM tabel where sourceid='28B791C7-D519-4F0C-BC03-EFB1D4AC9CEB'
不過,我開始思考什麼呢我真的從表中所需要的。我想知道哪個事件發生在哪個服務器上,以及哪個事件發生在服務器上,按日期排序。我已經添加了所有組合的索引,其中使用和,使用命令。
我需要所有的行因爲我想對他們做一些計算,一些分組,avarage等。但是我在.NET環境中做了這件事,因爲它提出了很多問題。
但是,如果我添加一個限制選擇它會更快。那麼轉移的數據量的瓶頸是什麼,而不是在查找/選擇部分?如果是這樣,我可以重建我的應用程序以僅在一天內完成計算並將結果保存到另一個表中,然後將其全部彙總。
我該如何加快處理速度?切換到MongoDB會更好嗎?我目前使用MySQL和InnoDB。
它可以被緩存15分鐘。但我想指出的是,UI最快反應速度很快,即使它第一次訪問數據,所以我不知道如何緩存它,除非預先加載UI層中的所有內容。 –
從這個問題中我們不清楚哪些索引是可用的,哪些查詢正在返回,DBMS如何調優,操作系統的運行方式,它所在的文件系統,操作系統如何調優,爲什麼'id'字段是varchar,只有有限的訪問爭用信息。 – symcbean
我更新了問題: 如果我爲選擇添加限制,它會更快。那麼轉移的數據量是否是瓶頸呢?如果是這樣,我可以重建我的應用程序以僅在一天內完成計算並將結果保存到另一個表中,然後將其全部彙總。 –