2009-11-03 95 views
0

我寫了一個使用MySQL數據庫的程序,並且數據庫服務器(非常強大的一個)和客戶端之間的事務正在通過ADSL連接(1Mbit/s)發生。MySQL數據包大小是否會導致速度下降?

但我有一個非常非常緩慢的連接每個客戶端和服務器之間。通過服務器僅發送大約3-4 KB/s的數據。服務器和客戶端都沒有將互聯網用於其他目的,只是我的程序使用互聯網。我想不出爲什麼? MySQL服務器數據包大小的原因是什麼?

有什麼建議嗎?

+0

您是否介意解釋您的放緩原因實際上是什麼? – 2009-11-05 13:45:37

+0

@Daniel Schneller 恩 - 對不起。我使用「SELECT COUNT(*)FROM」大InnoDB表,它會導致速度放慢。我改變了我的編程思想,現在MySQL比以往任何時候都快。 – rasputin 2009-11-06 11:09:26

回答

1

嘗試使用mytop來識別服務器性能低下的原因。 另一個:您可能正在使用SELECT COUNT(*)FROM ..來導致表掃描的大型InnoDB表。

你能否測試一些其他服務機器之間的交換數據速率是否正常?即使ADSL用戶的輸出帶寬較低,但3-4 kB也可能不是低性能的原因。

1

您首先必須調試兩個連接。

如果您上傳的文件等效於MySQL服務器的WinSCP,那麼您的上傳速度是多少? ADSL 1 Mbit/s應該接近90 KB/s。

+0

我查過了,但是服務器的上傳速度很好,超過了80kb/s。 有什麼不同的想法? – rasputin 2009-11-03 10:38:54

+0

使用SQLyog或類似GUI進行測試 試試SHOW FULL PROCESSLIST;查看是否有任何其他查詢 使用SHOW VARIABLES檢查配置; max_allowed_pa​​cket不影響'帶寬' – jujule 2009-11-03 18:19:05

1

有效傳輸速率常常受到客戶端和服務器之間往返數量的嚴重限制。沒有看到你的代碼很難說,但你應該檢查發生的請求數量。 如果您有一個請求導致返回多條記錄,您應該看到更好的帶寬使用情況,而不是每個請求只提供幾行的更多請求。

在後一種情況下,實際結果傳輸可能相當快,但「控制通信」(即語句本身,登錄請求等)中涉及的延遲會相加,從而有效降低整體吞吐量。

至於數據包大小:當數據包很小時,通信開銷較大,增加了上述效果。服務器的默認max_allowed_packet大小(如果內存爲1MB),但在連接時應該沒問題。

相關問題