2014-12-05 12 views
0

我不確定緩存是否是正確的術語,但我的目標是構建一個將顯示我的數據庫中的數據的網站。哪個更有效率,讓每個用戶創建數據庫連接或緩存?

我的問題:有很多的業務中的高概率,所有數據都包含在數據庫中。

我的假設解決方案:如果我創建一個單獨的程序(例如java中)每隔幾秒鐘連接到數據庫並使用新數據更新html文件(顯示數據的位置),速度會更快嗎? (這也會增加安全性,因爲用戶永遠不會連接到數據庫)或者我應該讓每個用戶創建一個到MySQL的連接(使用php)並獲取數據?

如果你有任何經驗了類似的情況,請分享一下,我很抱歉,如果我不字標題正確的,這是一個非常具體的問題,我甚至不知道如果我解釋自己清晰。

+0

你不需要一些不斷寫HTML的java程序。爲什麼不只是在添加,更新和刪除時重建必要的html元素?根據網站的構建方式,這很容易管理。但是,讓許多用戶連接到數據庫並不像它會壓縮系統,除非您沒有正確構建數據庫或正在經歷巨大的流量 - 就像數百萬次點擊。沒有網站只是以這種方式開始,所以你可能想緩存時,但可以使用它的數據庫。當你需要擴展時,這樣做。但是一開始不要過度工程。 – 2014-12-05 00:11:01

+0

我知道開始時過度工程不是一個好主意,但是網站(尚未建成)預計會立即有大量的流量,然後在一段時間內減速。我只是不希望數據庫在流量達到高峯時出現故障(峯值將在每天的數百萬次點擊中)。此外,數據庫永遠不會被觀衆改變(沒有註冊,評論等),所以它只包含要顯示的信息,從不改變。 – Cody 2014-12-05 00:14:33

+0

如果數據庫永遠不會改變,爲什麼不直接使用它來生成你需要的html並提供平面文本呢? 「大流量」究竟是什麼 - 就像每分鐘100萬次點擊一樣?你怎麼能如此自信呢? - 對不起 - 根據主持人的不同,每天一百萬的系統可能不會太糟糕。你是否使用虛擬專用環境,共享主機,單個專用服務器等 – 2014-12-05 00:16:44

回答

1

以下是您需要思考的一些想法。

首先,我不建議你創建文件,但要相信MySQL。但是,需要配置您的環境以支持您的流量/應用程序。

你應該明白你的數據多一點(在表中的數據是多少改變?你用的是什麼類型的查詢對數據。是你的查詢優化?)

確保你的表進行優化並正確編制索引。確保所有的查詢運行速度快(沒有造成一長排的鎖。)

如果不經常更新你的表,你應該考慮使用MySQL緩存,因爲這會降低你的IO,提高查詢速度。 (別急!如果您的表正在更新所有的時間,這將殺死你的服務器的性能大的時候)

您的查詢緩存設置爲「ON」。根據我的經驗,除非您的數據在您的所有表格上都沒有更改,否則這總是一個壞主意。當你將它設置爲「ON」時,MySQL會緩存每個查詢。然後,只要表中的數據發生變化,MySQL將不得不清除緩存查詢「它將更加努力地工作,同時清理緩存,這會給你帶來不好的性能。」我喜歡把它設置爲「ON DEMAND」 從那裏你可以控制哪些查詢應該是緩存和不應該使用SQL_CACHESQL_NO_CACHE

您要查看的另一件事是你的服務器配置和規格。 你的服務器有多少物理內存? 您使用的是什麼類型的硬盤? SSD不是以什麼速度旋轉?也許15k? 你在運行MySQL的操作系統是什麼? 硬盤上的RAID設置如何? 「RAID 10或RAID 50」將在這裏幫助你很多。 您的處理器速度將會有很大的不同。

如果不使用MySQL 5.6.20+,你應該考慮升級例如MySQL進行了改進,以幫助你,甚至更多。 你的服務器有多少內存?你的innodb_log_buffer_size設置爲總物理內存的75%?你在使用innodb表嗎?

您還可以使用MySQL複製來提高數據的讀取源。因此,您擁有多臺具有相同數據的服務器,您可以將一半流量從服務器A讀取,另一半從服務器B讀取,因此同一項工作將由多臺服務器處理。

以下是您需要考慮的一個參數:Facebook使用MySQL並且每秒有數百萬次點擊,但它們的時間增加了100%。誠然,他們有一萬億美元的預算,他們的網絡是巨大的,但這裏的想法是相信MySQL完成工作。

+0

謝謝,這是很多有用的信息(我不知道Facebook使用MySQL)。如果看看這一切,服務器很可能會非常強大(16GB內存,專用的2xIntel四核處理器),所以我認爲你是對的,它應該處理得很好。使用我的方法會有什麼缺點(使用單獨的程序來更新html文件嗎?) – Cody 2014-12-05 01:26:57

+0

(生病了,用MySQL,我只是想準備一個計劃,以防萬一) – Cody 2014-12-05 01:43:58

+0

如果你能碰到你的物理公羊去爲它。您的計劃b應該複製到另一臺服務器,您可以在多臺服務器上移動負載。加上確保你仔細改變你的服務器mysql – Jaylen 2014-12-05 04:26:43

相關問題