MySQL+HandlerSocket

來源:互聯網
上載者:User

MySQL + HandlerSocket
Yoshinori Matsunobu是Sun/Oracle的前僱員,從事MySQL的研發工作,目前是DeNA的首席資料庫和基礎

設施架構師,他以外掛程式的方式為MySQL/InnoDB提供解決方案,可以在一台2.53GHZ、8核CPU、32G記憶體的

Nehalem伺服器上把每秒的查詢數量(qps)提升到750,000以上。在同樣的硬體環境下,無外掛程式的MySQL

只能提供100,000左右的qps,如果使用memecached的話,可以增加到大約400,000。經過對RDBMS的分析

,Matsunobu意識到大部分時間都花在SQL的開銷上,比如調用MYSQLparse()、MYSQLlex()、

make_join_statistics()和JOIN::optimize()等。他寫到:

很顯然效能降低的原因主要在SQL層,而不是“InnoDB(儲存)”層。MySQL必須做很多事情......但

memcached/NoSQL是不需要做這些額外工作的。

參考:
MySQL/HandlerSocket和VoltDB:NoSQL的競爭者
http://hi.baidu.com/%CA%AB%D5%B9/blog/item/30e9aed38d3af024960a1649.html

通常,MySQL Server可以被看成兩層架構:即SQL Layer和Storage Engine Layer,它們之間通過

Handler API進行互動。MySQL Server在接收到用戶端的Query請求後,通常需要在SQL layer中進行詞法

分析,文法分析,最佳化等過程,最終產生一個樹型的查詢計劃,交由執行引擎執行。執行引擎根據查詢

計劃,跟相應的儲存引擎通訊,得到查詢結果。
HandlerSocket的作者認為,對於CPU bound的MySQL server來說,SQL layer消耗了過多的資源,以致總

體效能不佳。HandlerSocket則繞過了MySQL Server的SQL layer,直接跟儲存引擎互動,從而帶來了大

幅的效能提升。預設情況下HandlerSocket Plugin監聽9998和9999兩個連接埠,其中9998隻支援讀操作,

9999支援讀寫操作,但是效能跟9998連接埠相比稍慢。
參考:
http://whitesock.javaeye.com/blog/811339

 

有人認為目前HandlerSocket還不能跟Memcache比較:
HandlerSocket is great, but don't compare it to Memcache just yet.
Dec. 28th, 2010 at 11:34 AM
The HandlerSocket plugin for MySQL currently lacks atomic operations .  It is impossible to

implement counters (increment/decrement value) or REPLACE functionality with the current

implementation. 
It currently exceeds the performance of Memcache for get/set operations, but I want to see

how fast it is once atomic operations are implemented. Until then, I don't think it is a

serious contender for replacing Memcache for the cache layer in a complex environment.

 

HandlerSocket效能評測:
HandlerSocket on SSD
http://www.mysqlperformanceblog.com/2010/11/02/handlersocket-on-ssd/

在CentOS 5中安裝Percona-Server和HandlerSocket:
Installing HandlerSocket on CentOS 5 + Percona-Server in Five Easy Steps
1 – Set up the Percona Yum Repository
%> rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-

1.x86_64.rpm
Additional documentation for other distributions can be found at

http://www.percona.com/docs/wiki/repositories:start
2 – Install Percona-Server Packages
%> yum install Percona-Server-client-51.x86_64 Percona-Server-devel-51.x86_64 Percona-

Server-server-51.x86_64 Percona-Server-shared-51.x86_64 Percona-Server-shared-compat.x86_64
3 – Enable the PlugIn in my.cnf by adding the following lines in [mysqld]:
loose_handlersocket_port = 9998
loose_handlersocket_port_wr = 9999
loose_handlersocket_threads = 16
loose_handlersocket_threads_wr = 1
open_files_limit = 65535
4 – Install the PlugIn
mysql> install plugin handlersocket soname 'handlersocket.so';
5 – Verify
The easiest way to verify that HandlerSocket is running is to simply telnet to ports 9998

and 9999 on the localhost.

安裝參考:
http://whitesock.javaeye.com/blog/811339
http://hi.baidu.com/higkoo/blog/item/fdb7a8fc51645deffd037f06.html

 

NoSQL:
NoSQL 是非關係型資料存放區的廣義定義。它打破了長久以來關係型資料庫與 ACID 理論大一統的局面。

NoSQL 資料存放區不需要固定的表結構,通常也不存在串連 操作。在大資料存取上具備關係型資料庫無法

比擬的效能優勢。該術語在 2009 年初得到了廣泛認同。
當今的應用體繫結構需要資料存放區在橫向伸縮性 上能夠滿足需求。而 NoSQL 儲存就是為了實現這個需

求。Google 的 BigTable 與 Amazon 的 Dynamo 是非常成功的商業 NoSQL 實現。一些開源的 NoSQL 體

系,如Facebook 的 Cassandra , Apache 的 HBase ,也得到了廣泛認同。
參考:
http://blog.csdn.net/DL88250/archive/2010/01/14/5191092.aspx

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.