1、學習目標目標值:
每天處理網頁訪問流量或廣告點擊統計工作,大概在500萬量;把新的模式應用於現有的可控制的產品當中,做經驗的積累工作。
MySQLCluster首選原因
公司已經具備Linux平台專業維護人才和數據庫操作專業維護人才;Linux系統平台的MySQL Cluster開源免費意味著軟件成本的節省; 2、環境要求Linux El 5操作平台
MySQL相關軟件包,直接在官方下載四台服務器:管理節點1台,Sql操作節點1台,數據存儲節點2台;
管理節點:普通的pc
兩台hp普通服務器;
一台:dell高級服務器(使用一天,效果比原先的pc很明顯。主要懷疑網卡的性能上)最少四台服務器:管理節點1台,Sql操作節點1台,數據存儲節點2台;其他三台機器:內存盡可能大,希望4G;千兆網卡;64位處理器;組成高速局域網環境 3、配置方法
4、測試過程
4.1 測試用例對當前用戶的查看多個url(m url)之後,對應的多個關鍵詞(n kw)進一步計算,在數據庫中很快判斷出用戶正在關注著什麼關鍵,迅速進行排列結果。
用戶行為產生的url和關鍵詞部分來源於Autosense系統的數據庫。
4.2測試使用表格 MySQL> show create table userkeyWord\G;
*************************** 1. row ***************************
Table: userkeyWord
Create Table: CREATE TABLE `userkeyWord` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ClIEntID` varchar(25) NOT NULL DEFAULT '',
`LastUpdateTime` datetime DEFAULT NULL,
`KeyWord` varchar(25) NOT NULL DEFAULT '',
`UpdateCount` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`ID`),
KEY `idxUpdateCount` (`UpdateCount`),
KEY `idxcid` (`ClIEntID`),
KEY `idxkw` (`KeyWord`)
) ENGINE=ndbcluster DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
表格數據
MySQL> select count(*) from userkeyWord; | count(*) | | 2404648 | 1 row in set (0.01 sec)
4.3測試過程
數據的更新速度
兩百萬數據的時候,使用6客戶端進行隨機的insert 和 update 工作,能夠平穩處理500記錄/每秒。
同時,在進行某一個用戶的關注感興趣的關鍵詞排名查詢需要0.01 sec。這種情況符合及時分析用戶的行為,並用戶下一次查看網頁的時候,及時計算用戶關注點報告(例如,關注汽車行業關鍵詞排行)。
這樣的處理速度引入到廣告系統的處理引擎模塊當中,及時計算針對報表格式的很多統計結果。及時計算用戶的活動頻率和關注點;及時計算其他一些統計功能; 在集群系統的說明文檔學習過程中,所理解的情況和設想的解決方案的模型對比,從新認識MySQLCluster系統。
失敗:
<1>對數據處理能力的邊界,沒有明確的控制能力。很想讓更多的解決問題依托於一個處理模型上。比如,初步設想的范圍當中,想使用此引擎處理更多的數據或者海量數據。 <2>集群模式當中子查詢非常消耗時間。這個特點讓很困惑,而且使用的很多時間來試圖突破掉瓶頸。可惜最終還沒有能找到很好的解決方案。 <3>對網卡和交換機等硬件方面的吞吐量,比較懷疑達到極限或者懷疑有拖延情況。
收獲:
<1>嘗試集群工作模式。
<2>享受開放軟件的優點。
<3>處理速度的提高,讓人很驚訝。
對一台機器MySQL做inset,update,delete 和沒有自查詢的其他一些操作的時候,單一客戶端每秒能夠處理150條左右。而在集群環境當中,6個客戶端,很平穩狀態處理速度在500條以上。
<4>對一些數據處理方式上,因為有特殊引擎提供處理能力,使得平台的設計思路有所改觀。