標籤:
每隔一段時間就會出現一篇關於資料庫效能描述得天花亂墜的文章,經常出現50W QPS,100W QPS這樣的大數字,去掉幾千字的文字講解後,核心內容是一台頂級配置的伺服器和為測試專做的配置,對於大部分系統根本不會去購買哪台不知哪裡才有賣的伺服器,大部分開發人員也不會去折騰哪一堆配置,並且改了預設配置往往引入新問題。怎樣的資料庫測試才是最真實,反映系統實際運行能力?[email protected]的示範平台可以作為一個參考,這裡寫了兩段代碼,測試並發10個串連,每個串連讀10,000個資料在iBoxDB與MySQL上所需要的時間,時間越短,效能越好。
先看MySQL的測試代碼
public Integer call() throws Exception { ResultSet rs = c.createStatement() executeQuery("select `id`, `value`, `msg` from test"); int l = 0; while (rs.next()) { if (rs.getString(3).startsWith( Integer.toString(rs.getInt(1)))){ l += rs.getInt(2); } } return l;} 這段代碼的內容是從test表中讀出 id,value,msg, 首先對msg內容進行合法檢測,內容符合的把vlaue加到校正碼l中。msg的內容建立時是 "id.toString()+一段文字"。
再看iBoxDB的測試代碼,因為是NoSQL,代碼更易讀
public Long call() throws Exception { long l = 0; for (Map<String, Object> map : c.select("from test")) { if (map.get("msg").toString().startsWith( map.get("id").toString())) { l += (Long) map.get("value"); } } return l;} 啟動[email protected]的示範平台後,點擊幾次測試後, MySQL都在100ms以上,而 iBoxDB 大部分在50ms附近,花費時間越小,效能越好。
在示範平台的效能測試可以反映系統實際運行效果,哪些100W QPS的測試結果在當前對99%的系統是不可能達到的。
[email protected]的測試代碼地址,線上示範地址
iBoxDB NoSQL資料庫
Git示範平台上的iBoxDB NoSQL與MySQL的效能測試