2010-06-21 51 views
7

我的MySql服務器目前有235個數據庫。我應該擔心嗎? 它們都與MyISAM表具有相同的結構。MySQL可以處理多少個數據庫?

該硬件是一臺虛擬機,具有運行在四核AMD Opteron 2.2GHz上的2 GB RAM。

最近cPanel給我發了一封電子郵件,說MySql失敗了,並且重新啓動了。

新數據庫正在預計創建,我不知道是否應該添加更多的內存,或者如果我應該簡單地添加另一個虛擬機。

+1

雖然我從來沒有聽說過任何限制,但我可能會檢查你的結構 - 有那麼多必要嗎? – 2010-06-21 20:52:30

回答

0

我不相信有一個硬限制,唯一真正限制你的將是你的硬件和這些數據庫將獲得的流量。

你似乎有很少的內存,這可能意味着你沒有連接的龐大的數字...

你應該把用戶的用電習慣爲每個數據庫(或一組數據庫,這取決於如何開始使用它們

當然)。

我的建議 - MySQL(或任何數據庫服務器)可以使用更多的內存。你永遠不會有足夠的。

0

你做錯了。

評論關於你的數據庫的一些細節,我們也可以填寫你的設計出錯的地方。

+1

謝謝大家的意見。 該系統與Google Analytics類似。 用戶網站的訪問被登錄到「主」表中。本地應用程序正在監視主表並處理已註冊的訪問並將它們寫入用戶的數據庫。每個用戶都有自己的數據庫。這已經決定了分片。各個用戶正在運行各種報告和統計數據。如果它只運行在特定的數據庫上(更少的數據),速度會更快 我知道這不是最好的設置。但我們必須處理一段時間。 – 2010-06-22 20:46:17

6

mysql中的「數據庫」實際上是目錄,無論您是將所有表放在一個還是每個表中,它都不會影響其限制。

主要問題是表緩存。如果不進行調整,您將擁有默認的表緩存(通常爲64個),這意味着您每次打開表時都會關閉一個表。這是非常糟糕的。

除了在MyISAM中,它更糟糕,因爲關閉表將其關鍵塊從關鍵緩存中拋出,這意味着後續索引查找或掃描將從磁盤讀取實際塊,這是可怕和緩慢的,並且真的需要應避免。

我的建議是:

  • 如果可能的話,立即增加表緩存到>表總數
  • 監控您的監控全局狀態變量opened_tables的;如果它迅速增加,這是不好的。
  • 在非生產環境中的相同硬件上進行性能和健壯性測試(如果您尚未這樣做)。
+1

我也會添加,檢查文件描述符限制 - 雖然沒有直接連接到no。的數據庫,你可以用很多MyISAM表來用完文件描述符。 – nos 2010-06-23 10:48:35

+0

正常的啓動腳本將根據需要增加數量(在Linux下) - 當然可以有10,000個沒有任何問題。其他引擎也可能不使用每個表的文件描述符。 – MarkR 2010-06-24 05:50:05

1

(重新發布我的意見,以提高知名度) 謝謝大家的意見。該系統與Google Analytics類似。用戶網站的訪問被記錄到「主」表中。本地應用程序正在監視主表並處理已註冊的訪問並將它們寫入用戶的數據庫。每個用戶都有自己的數據庫。這已經決定了分片。各個用戶正在運行各種報告和統計數據。如果它只運行在特定的數據庫上(更少的數據),速度會更快我知道這不是最好的設置。但我們必須處理一段時間。

+0

此信息似乎與原始問題有關。如果您希望它具有比評論更高的可見性,爲什麼不編輯原始問題以包含此信息? – Trevor 2016-04-15 23:05:01

相關問題