MemSQL初体验 - (1)传说中速度最快的关系数据库软件
最快的RDBMS數據庫是哪個呢,之前人們會在ORACLE/SYBASE/DB2這類大型軟件產品中爭論不休,而后MSSQL?SERVER/MYSQL這類的中小型數據庫軟件也加入戰場,盡管論戰熱門非凡,但結論一直未定,大家比來比去的結果越來越趨向于各說各話(老實講你要是問我的看法,Oracle目前正大力推廣的Exadata倒是最有實力據此頭銜的)。
現如今,這個問題可能有答案了,由前FACEBOOK工程師Eric?Frenkiel和?Nikita?Shamgunov(前微軟?SQL?Server?高級工程師)開發的MemSQL,號稱是全世界最快的關系型數據庫。
做為一個新面孔,MemSQL的實現確實與現有的傳統RDBMS很不一樣,首先MemSQL"也"是內存數據庫,所有數據均放置在內存里,這一點其實并不新穎,TimesTen這類產品就不說了,現如今流行的NoSQL產品哪個不是利用內存的高手,所以你看我用了一個"也"字,說明多年DBA一線從業的歷練,如今的我說話做事還是相當嚴謹。
真正的區別在于,按照MemSQL官方文檔中的說法,MemSQL使用一種叫做"code?generation"的方法,將SQL語句編譯成C++并緩存起來,這樣下次執行就很快了,號稱執行效率比傳統的基于磁盤的關系型軟件要快30倍。
除了速度快之外,對于傳統的開發人員,尤其是使用MySQL數據庫的朋友來說,接下來這個消息就更為喜人了,MemSQL與MySQL數據庫之間的兼容性做的非常好。MemSQL官方的技術文檔有多處明確表示,使用MemSQL和MySQL沒有區別(并非全兼容,是說MemSQL支持的,提供了接口的操作,其操作命令與MySQL數據庫中實現相同功能的命令行參數與調用方法完全相同),事實也確實如此,mysql命令行或MySQL客戶端工具,以及各種MySQL數據庫的管理軟件,均可以像操作MySQL那樣操作MemSQL,并且在操作過程中,除了感覺響應特別的快之外(第一次操作響應慢,之后極快),也確實分辨不出這到底連接的是MemSQL還是MySQL。
基于MemSQL與MySQL之間高度的兼容,三思這里就不準備在MemSQL的使用技巧上費什么筆墨了,下面主要針對性能做些基礎測試。
1、配置MemSQL運行環境
先來看看如何配置一套MemSQL環境。MemSQL目前只支持64位系統,軟硬件的需求如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| Distribution | Minimum?Version | Command |
| Amazon?AMI | 2012.03 | sudo?yum?install?gcc-c++ |
| CentOS | 6.0 | sudo?yum?install?gcc-c++ |
| Debian | 6.0 | sudo?apt-get?install?g++ |
| Fedora | 15 | sudo?yum?install?gcc-c++ |
| OpenSUSE | 11.3 | sudo?zypper?install?gcc-c++ |
| Red?Hat | 6.1 | sudo?yum?install?gcc-c++ |
| Ubuntu | 10.04 | sudo?apt-get?install?g++ |
硬件方面需要cpu為inter?i3或更高,內存至少8G。不過官方文檔也說了,內存低于8G也能運行,因為MemSQL是內存數據庫,其存儲能力是依賴于內存的,要是內存小存的東西也就少,內存多存的東西也更多。
我這里的測試環境是個虛擬機,內存只有2G,結果啟動memsqld服務時拋出要警告:
- Warning:?The?recommended?configuration?for?MemSQL?is?at?least?8?GB?of?RAM
不過就目前版本來看,內存多也多不到哪去,因為當前提供的開發版最大也只能使用10G內存。
MemSQL可以直接到其官網下載:http://memsql.com/
輸入名稱和郵箱地址,就會生成一個licence?key,并顯示下載和安裝頁面。
安裝挺簡單的,所謂的安裝其實就是解壓縮二進制包,然后檢查下環境就o了,步驟如官網頁面所示:
$?wget?http://download.memsql.com/814d3816f4084953833243fbf6c40d37/memsqlbin_amd64.tar.gz
$?tar?xvfz?memsqlbin_amd64.tar.gz
$?cd?memsqlbin
$?./check_system
$?./memsqld?--port?3307
這下不僅安裝完了,連服務都啟動好了。說明一下,這是官方的步驟,如果我指定的話,最后一步會加個&符號,將任務放在后臺執行。
注意看這里指定了--port選項值為3307,這是避免與MySQL數據庫服務默認的3306端口沖突,memsqld啟動時如果不指定--port選項,那么默認服務端口也是3306。
提示:
MemSQL也有選項文件,跟MySQL挺像,就位于memsqlbin目錄下,名為memsql.cnf。
然后就可以拿標準的mysql命令行工具連接該MemSQL服務:
$?mysql?-u?root?-h?127.0.0.1?-P?3307?--prompt="MemSQL>?"?
Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?\g.
Your?MySQL?connection?id?is?253
Server?version:?5.5.8?MemSQL?source?distribution
Copyright?(c)?2000,?2010,?Oracle?and/or?its?affiliates.?All?rights?reserved.
This?software?comes?with?ABSOLUTELY?NO?WARRANTY.?This?is?free?software,
and?you?are?welcome?to?modify?and?redistribute?it?under?the?GPL?v2?license
Type?'help;'?or?'\h'?for?help.?Type?'\c'?to?clear?the?current?input?statement.
MemSQL>?show?databases;
+--------------------+
|?Database???????????|
+--------------------+
|?information_schema?|
|?memsql?????????????|
+--------------------+
2?rows?in?set?(0.00?sec)
繩命,處處都充滿著井棋,居然連information_schema都有,還真跟MySQL一樣。
總結
以上是生活随笔為你收集整理的MemSQL初体验 - (1)传说中速度最快的关系数据库软件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: case when条件表达式
- 下一篇: MemSQL初体验 - (2)初始化测试