2011-07-29 36 views
3

我有一個很大的MySQL表,具有適當的索引等。我從遠程計算機運行一個簡單的select *查詢,我期望得到一個大的結果集。大型結果集的數據傳輸速度慢

我的問題是,當我運行查詢時,結果集以〜300 KBytes/sec的最大數據傳輸速度返回。 我創建了相同的表,並在SQLServer Express 2008 R2上運行相同的查詢,並以2MBytes /秒(我的行限制)的傳輸速度返回結果。

服務器機器是Windows Server 2008 R2 x64,四核,4GB RAM,MySQL版本是5.6.2 m5 64位。我試圖禁用通信協議中的協議,但結果在相同的地方。

有沒有人有一個想法,爲什麼發生這種情況?

--theodore

+0

整個查詢過程通常包含大量單個步驟,pe準備,檢查權限,鎖定,排序結果等,並將數據發送回客戶端。你確定你只是在談論這個數據傳輸嗎?或者它可能是查詢還有另一個瓶頸? – Bjoern

+1

這可能是因爲它很遙遠......達到最大吞吐量。這個結果集究竟有多大? – Dor

+0

發生在我身上的唯一情況是您在配置文件my.ini中向MySQL提供了多少內存。如果MySQL不得不在磁盤上緩存大量內容,傳輸速度可能會受到影響。 – Jaydee

回答

0

您可能會將蘋果與橘子進行比較。

我會在MySQL服務器上運行SELECT *,並查看在本地檢索服務器上的數據時獲得的數據速率 - 沒有網絡的額外限制。

如果這也很慢 - 那麼它不是網絡的錯。

當MySQL安裝程序運行時,它會要求設置MySQL的人在硬件(即開發服務器,共享服務器,專用)上扮演什麼樣的角色。

所有這些的不同之處在於MySQL會在服務器上佔用多少內存。

最慢的設置是開發(使用最少的內存),最快的是專用(嘗試使用大量內存)。您可以修改my.ini文件來更改MySQL爲自己分配的內存量,以及/或者google'my.ini內存'以獲取更詳細的說明。

MySQL正在使用(或不是,視情況而定)的內存將會對性能產生巨大影響。

首先,檢查在MySQL服務器上本地檢索數據的速度是多少。如果速度很慢,網絡不是問題 - 請檢查MySQL的內存使用情況 - 理想情況下儘可能多地給它。當然,如果速度很快,那麼網絡和/或某個數據庫中間件(ODBC?)或工具用於顯示數據的速度很慢......

還有一件事 - 嘗試SELECT * TWICE ...爲什麼?第二次部分或全部結果(同樣取決於內存)應該被緩存...第二次應該更快...

此外,不要忘記在更改我的時候重新啓動MySQL。 ini文件(並在進行任何更改之前創建備份...)

相關問題