中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

MySQL下的NoSQL解決方案HandlerSocket
來源:易賢網 閱讀:1038 次 日期:2015-03-05 14:05:29
溫馨提示:易賢網小編為您整理了“MySQL下的NoSQL解決方案HandlerSocket”,方便廣大網友查閱!

目前使用MySQL的網站,多半同時使用Memcache作為鍵值緩存。雖然這樣的架構極其流行,有眾多成功的案例,但過于依賴Memcache,無形中讓Memcache成為故障的根源:

Memcache數據一致性的問題:當MySQL數據變化后,如果不能及時有效的清理掉過期的數據,就會造成數據不一致。這在強調即時性的Web2.0時代,不可取。

Memcache崩潰后的雪崩效應:作為緩存的Memcache一旦崩潰,MySQL很可能在短時間內承受高負載而宕機。據說前段時間新浪微博就遭遇了這樣的問題。

注:關于清理過期數據的問題,可以在程序架構上想辦法,如果數據操作有統一DAO封裝的話,可以利用Observer模式來清理過期數據,非主題內容,資料自查。

面對這些問題,HandlerSocket項目是個不錯的解決方案,它通過插件的方式賦予MySQL完整的NoSQL功能,從原理上講,它跳過MySQL中最耗時的語法解析,查詢計劃等步驟,直接讀取數據,如果內存夠大,能裝下索引,MySQL的查詢效率能提高若干倍!

性能測試實例:Using MySQL as a NoSQL – A story for exceeding 750,000 qps (GFW)

因為HandlerSocket的性能足夠好,所以就沒有必要使用Memcache了,能節省大量的硬件資源,相當低碳!而且HandlerSocket操作的是MySQL放在內存中的索引,沒有額外的緩存,所以自然就不存在數據一致性的問題。

安裝

如果使用Percona Server版本的MySQL就簡單了,因為它已經內置了HandlerSocket支持,不過考慮到其內置的版本不夠新,存在一些早已修復的BUG,所以最好采用源代碼編譯。

官方已經有了一份簡單的安裝文檔,但在我實際安裝時,遇到了一些其他未說明的問題,所以這里就把相應的安裝過程再寫一遍。

首先要確保已經安裝了MySQL5.1以上的版本,我用的是Ubuntu操作系統,事先已經用apt安裝了MySQL5.1.37,同時還需要相應的mysql_config,如果是Ubuntu的話,可以:

shell> aptitude install libmysqld-dev

注:如果你用的MySQL是從源代碼編譯的或官方提供的二進制版本,可以略過此步。

接著下載一份和系統MySQL版本一致的MySQL源代碼和HandlerSocket源代碼:

mysql-5.1.37.tar.gz

ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-76-gf5f7443.tar.gz

shell> tar zxf mysql-5.1.37.tar.gz

shell> tar zxf ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-76-gf5f7443.tar.gz

shell> cd ahiguti-HandlerSocket-Plugin-for-MySQL-f5f7443

shell> ./autogen.sh

shell> ./configure --with-mysql-source=../mysql-5.1.37 \

--with-mysql-bindir=/usr/bin \

--with-mysql-plugindir=/usr/lib/mysql/plugin

其中的參數含義如下:with-mysql-source表示MySQL源代碼目錄,with-mysql-bindir表示MySQL二進制可執行文件目錄(也就是mysql_config所在目錄),with-mysql-plugindir表示MySQL插件目錄,如果不清楚這個目錄在哪,可以按如下方法查詢:

mysql> SHOW VARIABLES LIKE 'plugin%';

+---------------+-----------------------+

| Variable_name | Value |

+---------------+-----------------------+

| plugin_dir | /usr/lib/mysql/plugin |

+---------------+-----------------------+

運行命令后,如果你使用的是MySQL5.1.37版本的話,會遇到如下錯誤信息:

MySQL source version does not match MySQL binary version

明明我們的MySQL源代碼版本和二進制版本都是5.1.37,為什么還會出現這個錯誤呢?通過查詢HandlerSocket的編譯腳本,發現原來它會檢索MySQL源代碼目錄中的VERSION文件,可MySQL5.1.37的源代碼目錄里不知何故竟然沒有這個文件,所以就報錯了,既然知道了原因,那我們就照貓畫虎做一個VERSION文件放到MySQL源代碼目錄,內容如下:

MYSQL_VERSION_MAJOR=5

MYSQL_VERSION_MINOR=1

MYSQL_VERSION_PATCH=37

MYSQL_VERSION_EXTRA=

再次運行configure腳本,應該就OK了,把剩下的步驟進行完:

shell> make

shell> make install

接著需要配置一下HandlerSocket,編輯MySQL配置文件,加入如下內容:

[mysqld]

loose_handlersocket_port = 9998

# the port number to bind to (for read requests)

loose_handlersocket_port_wr = 9999

# the port number to bind to (for write requests)

loose_handlersocket_threads = 16

# the number of worker threads (for read requests)

loose_handlersocket_threads_wr = 1

# the number of worker threads (for write requests)

open_files_limit = 65535

# to allow handlersocket accept many concurrent

# connections, make open_files_limit as large as

# possible.

此外,InnoDB的innodb_buffer_pool_size,或MyISAM的key_buffy_size等關系到緩存索引的選項盡可能設置大一些,這樣才能發揮HandlerSocket的潛力。

注:apt包管理下的配置文件一般是/etc/mysql/my.cnf,否則一般是/etc/my.cnf

最后登陸MySQL并激活HandlerSocket插件:

mysql> INSTALL PLUGIN handlersocket soname 'handlersocket.so';

如果沒有問題的話,就能在MySQL里看到HandlerSocket的線程了:

mysql> SHOW PROCESSLIST;

也可以通過查詢剛配置的端口是否已經被MySQL占用來確認是否安裝成功:

shell> lsof -i :9998

shell> lsof -i :9999

完活兒!現在你的MySQL已經具備NoSQL的能力了!

實戰

首先創建一個測試用的表:

CREATE TABLE IF NOT EXISTS `test`.`t` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`a` varchar(10) NOT NULL,

`b` varchar(10) NOT NULL,

PRIMARY KEY (`id`),

KEY `a_b` (`a`,`b`)

) ENGINE=InnoDB;

注:理論上HandlerSocket支持MyISAM,InnoDB等各種引擎,不過推薦使用InnoDB。

HandlerSocket的協議非常簡單,指令通過TAB分割,一行就是一個請求。

打開索引:P <索引標識> <數據庫> <表> <索引> <字段>

插入數據:<索引標識> ‘+’ <參數個數> <參數1> … <參數N>

讀取數據:<索引標識> <操作> <參數個數> <參數1> … <參數N> <條數> <偏移>

SQL原型:INSERT INTO test.t (id, a, b) VALUES (1, ‘a1′, ‘b1′), (2, ‘a2′, ‘b2′)

shell> telnet localhost 9999

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

P 1 test t PRIMARY id,a,b

0 1

1 + 3 1 a1 b1

0 1 0

1 + 3 2 a2 b2

0 1 0

注:使用HandlerSocket時,因為沒有實際運行SQL,所以Binlog記錄的是Row格式。

SQL原型:SELECT id, a, b FROM test.t WHERE id = 1 LIMIT 1

shell> telnet localhost 9999

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

P 1 test t PRIMARY id,a,b

0 1

1 = 1 1 1 0

0 3 1 a1 b1

SQL原型:SELECT id, a, b FROM test.t WHERE id >=1 LIMIT 2

shell> telnet localhost 9999

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

P 1 test t PRIMARY id,a,b

0 1

1 >= 1 1 2 0

0 3 1 a1 b1 2 a2 b2

SQL原型:SELECT id, a, b FROM test.t WHERE a = ‘a1′ AND b = ‘b1′ LIMIT 1

shell> telnet localhost 9999

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

P 1 test t a_b id,a,b

0 1

1 = 2 a1 b1 1 0

0 3 1 a1 b1

對HandlerSocket一個常見的誤解是只能執行PRIMARY類型的KV查詢,實際上只要支持索引,一般的簡單查詢它都能勝任,篇幅所限,這里就不多說了,如果你覺得直接操作telnet有些吃力,也可以使用自己熟悉的客戶端來測試,官方文檔里有介紹。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:MySQL下的NoSQL解決方案HandlerSocket
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产精品看片你懂得| 伊人狠狠色j香婷婷综合| 亚洲国产色一区| 国产精品欧美日韩久久| 免费观看日韩av| 久久九九精品99国产精品| 亚洲免费一区二区| 一区二区三区欧美| 99精品国产福利在线观看免费 | 亚洲女优在线| 99热精品在线| 99re视频这里只有精品| 日韩视频免费| 亚洲视频一区二区| 亚洲欧美在线另类| 久久精品国产久精国产思思| 欧美一区二区三区在线| 久久国产福利| 看欧美日韩国产| 欧美日韩国产另类不卡| 国产精品黄视频| 国产亚洲精品一区二区| 尤物网精品视频| 亚洲精品一区二区三区在线观看| 最新高清无码专区| 日韩一级在线| 午夜精品久久久久久久久久久久久| 亚洲欧美久久| 久久久久久精| 欧美日韩18| 国产精品手机视频| 又紧又大又爽精品一区二区| 亚洲精品四区| 久久www成人_看片免费不卡| 免费h精品视频在线播放| 欧美日韩情趣电影| 国产亚洲精品美女| 一本色道久久综合一区| 久久国产精品久久精品国产| 欧美风情在线| 国产日韩欧美中文在线播放| 亚洲第一福利在线观看| 亚洲一区日本| 欧美高清日韩| 国产综合色产在线精品| 一区二区高清在线观看| 久久这里只有| 国产精品最新自拍| 日韩视频在线一区二区| 久久精品91久久久久久再现| 欧美日本韩国| 伊人激情综合| 欧美资源在线| 国产精品国产三级国产aⅴ浪潮| 永久域名在线精品| 午夜亚洲精品| 欧美日韩亚洲一区二区三区在线观看| 国产一区二区三区免费在线观看| 99精品热视频只有精品10| 久久久久久成人| 国产九区一区在线| 99热这里只有精品8| 久久男人资源视频| 国产欧美在线看| 一区二区欧美在线观看| 久久网站免费| 国产亚洲欧洲| 亚洲欧美日韩国产另类专区| 欧美精品一区二区视频| 亚洲国产99| 久久久噜噜噜久久久| 国产欧美日韩在线| 亚洲一区在线观看免费观看电影高清| 欧美成人a∨高清免费观看| 国内精品久久久久久久97牛牛| 亚洲手机成人高清视频| 欧美日韩国产免费| 亚洲三级国产| 欧美成人亚洲成人| 亚洲国产精品成人va在线观看| 久久爱另类一区二区小说| 国产精品高清在线| 亚洲午夜未删减在线观看| 欧美日韩人人澡狠狠躁视频| 亚洲精品久久久久中文字幕欢迎你 | 欧美精彩视频一区二区三区| 黄色成人av网站| 久久精品30| 精品成人国产在线观看男人呻吟| 欧美尤物一区| 国产亚洲精品福利| 久久久久久亚洲精品不卡4k岛国| 国产一区视频在线观看免费| 欧美一区亚洲二区| 国产视频欧美| 久久亚洲精品网站| 亚洲高清激情| 欧美人牲a欧美精品| 日韩视频一区| 国产精品拍天天在线| 欧美亚洲日本国产| 黄色一区二区在线观看| 嫩草国产精品入口| 一区二区三区四区蜜桃| 国产精品国产三级国产aⅴ入口| 亚洲综合欧美日韩| 国产亚洲网站| 牛人盗摄一区二区三区视频| 亚洲精品日韩综合观看成人91| 欧美日韩精品免费看| 亚洲综合另类| 黑人一区二区| 欧美激情一区二区三区蜜桃视频| 亚洲最黄网站| 国产欧美日韩一区二区三区在线| 久久午夜色播影院免费高清| 91久久在线播放| 国产精品视频精品视频| 久久香蕉精品| 亚洲天堂偷拍| 在线观看视频一区二区| 欧美日韩视频在线| 久久精品30| 99国产精品99久久久久久| 国产精品自拍三区| 欧美国产免费| 香蕉成人伊视频在线观看| 亚洲黄色一区二区三区| 国产精品嫩草99a| 模特精品在线| 欧美在线视频全部完| 99pao成人国产永久免费视频| 国产欧美一区二区精品性| 欧美高清一区| 久久精品欧美日韩| 亚洲性xxxx| 亚洲免费观看高清在线观看 | 亚洲一区久久久| 一区二区三区在线免费播放| 欧美久久久久中文字幕| 久久国产精品一区二区三区| 亚洲美女福利视频网站| 国产在线精品自拍| 国产精品免费网站| 欧美激情一区在线| 久久影院亚洲| 久久国产精品久久久久久久久久| 亚洲天堂av在线免费| 亚洲欧洲精品一区| 精品成人一区二区| 国产手机视频精品| 国产精品亚洲一区| 国产精品mm| 欧美日韩精选| 欧美伦理91i| 欧美精品亚洲| 欧美成人精品在线| 噜噜噜在线观看免费视频日韩| 香蕉久久国产| 亚洲欧美综合另类中字| 一本久久综合亚洲鲁鲁| 亚洲每日更新| 亚洲精品国产精品国自产观看浪潮| 国户精品久久久久久久久久久不卡| 国产精品毛片在线看| 欧美网站在线观看| 欧美性色aⅴ视频一区日韩精品| 欧美激情综合在线| 欧美精品福利在线| 欧美精品aa| 欧美日韩国产大片| 欧美日韩高清免费| 欧美午夜电影完整版| 欧美视频在线观看免费| 欧美日韩三级电影在线| 欧美午夜精品久久久久久人妖| 欧美视频亚洲视频| 国产精品萝li| 国产视频在线一区二区| 国产区精品在线观看| 国产亚洲精品aa| 伊甸园精品99久久久久久| 亚洲第一视频网站| 亚洲美女91| 亚洲影音先锋| 欧美亚洲视频一区二区| 欧美亚洲日本网站| 久久久久久9| 欧美激情网友自拍| 欧美性大战久久久久| 国产精品一区二区男女羞羞无遮挡| 国产精品影院在线观看| 国产一区欧美| 亚洲国产精品一区二区www| 日韩午夜黄色| 亚洲午夜国产成人av电影男同| 性色av一区二区三区红粉影视| 久久久亚洲国产天美传媒修理工| 欧美 日韩 国产 一区| 欧美日韩国产精品一卡|