測試TPC本來是個嚴肅的事情,這里只是為了娛樂一下。不要和TPC委員會的高端報告混為一談就好了。 1. 先去找個不那么標準的TPC-C測試工具 似乎Percona MySQL的這個東西用得人還比較多:http://bazaar.launchpad.net/~percona-dev/perconatools/tpcc-mysql/ 簡
測試TPC本來是個嚴肅的事情,這里只是為了娛樂一下。不要和TPC委員會的高端報告混為一談就好了。
1. 先去找個不那么標準的TPC-C測試工具
似乎Percona MySQL的這個東西用得人還比較多:http://bazaar.launchpad.net/~percona-dev/perconatools/tpcc-mysql/ 簡單的看了一下實現,這個和標準的差距還是較大的,例如事務之間沒有停頓,也就是沒有所謂的thinking time,測出來的tpmC的值會虛高。
不管是TPC,還是SPECfs,測試的基本步驟是通用的。大概都會有: a) 準備環境 b) 加載數據 c) 開跑 d) 產生報告
當然了,跑一次不容易,為了分析遇到的問題,開跑的過程中應該記錄一些數據,例如CPU、內存、網絡、IO等統計數據。
2. 熟悉一下工具
源代碼目錄下的README什么的是一定要看的,并且要仔細看。閑的蛋疼的話,還可以看看那些代碼。
既然是測試TPC-C,必定有些建表的語句,這個需要仔細看看。例如:
create_table.sql add_fkey_idx.sql
表上至少應該有標準規定的那些個主碼,外碼等約束。不帶約束的測試就是耍流氓。
3. 在正式開測之前,需要模擬練手一下,把該犯的錯誤都犯一遍。
編譯測試程序 $ cd src; make;
創建數據庫個,假設庫名叫做tpcc好了 $ mysqladmin --no-defaults -S /home/mysql/run/mysql.sock -u root create tpcc
建表 $ mysql --no-defaults -S /home/mysql/run/mysql.sock -u root tpcc < create_table.sql
加載數據,假設加載10個倉庫好了 $ ./tpcc_load 127.0.0.1:3306 tpcc root "" 10
機器要是差點,一個小時都搞不定。抽根煙肯定是不夠的,出去吃個飯吧。既然這么慢,一定有比這快點的辦法。例如:采用并行加載模式: $ ./load.sh tpcc 10
追加外碼約束 $ mysql --no-defaults -S /home/mysql/run/mysql.sock -u root tpcc < add_fkey_idx.sql
前面說過,不加約束的測試是…… 在數據加載完畢后再執行有助于減少數據加載時間。再去抽顆煙吧。
跑測試 $ ./tpcc_start -h 127.0.0.1 -P 3306 -d tpcc -u root -w 10 -c 5 -r 5 -l 300 5個連接,預熱5秒,跑300秒,也就是5分鐘。一看就是娛樂版,這個跑不出什么好指標,例如: a) 數據量太少 b) 連接數太少 c) 才跑了幾百秒 ……
清理環境(刪除數據庫) $ mysqladmin --no-defaults -S /home/mysql/run/mysql.sock -u root drop tpcc
跑完后會打印出個報告,最后一行類似于:
10.200 TpmC
好可憐啊!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com