成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

主流NoSQL數據庫評測之HandlerSocket

數據庫 其他數據庫
NoSQL是伴隨著web2.0的迅猛發展而在2009年被提出的一個概念,一般可以通俗的理解為高性能的Key Value存儲結構的數據庫,當然也有其他更廣泛的類型。它基于CAP和BASE理論,強調最終一致性,具有數據結構靈活、擴展方便、大數據量下讀寫性能高效等特點,在互聯網行業被廣泛采用。

NoSQL是伴隨著web2.0的迅猛發展而在2009年被提出的一個概念,一般可以通俗的理解為高性能的Key Value存儲結構的數據庫,當然也有其他更廣泛的類型。它基于CAP和BASE理論,強調最終一致性,具有數據結構靈活、擴展方便、大數據量下讀寫性能高效等特點,在互聯網行業被廣泛采用。本系列文章將評測廣受關注的幾個NoSQL數據庫產品。本文關注的是HandlerSocket Plugin for MySQL。

HandlerSocket簡介:

HandlerSocket是日本DeNA公司的架構師Yoshinori開發的一個NoSQL產品,以MySQL Plugin的形式運行。其主要的思路是在MySQL的體系架構中繞開SQL解析這層,使得應用程序直接和Innodb存儲引擎交互,通過合并寫入、協議簡單等手段提高了數據訪問的性能,在CPU密集型的應用中這一優勢尤其明顯。

另外,HandlerSocket還幫我們解決了緩存的問題,因為Innodb已經有了成熟的解決方案,通過參數可以配置用于緩存數據的內存大小,這樣只要我們分配合理的參數,就能在應用程序無需干涉的情況下實現熱點數據的緩存,降低緩存維護的開發成本。

因為HandlerSocket是MySQL的一個Plugin,集成在mysqld進程中,對于NoSQL無法實現的復雜查詢等操作,仍然可以使用MySQL自身的關系型數據庫功能來實現。在運維層面,原來廣泛使用的MySQL主從復制等經驗可以繼續發揮作用,相比其他或多或少存在一些bug的NoSQL產品,數據安全性更有保障。

可以說這是一個很有創意的產品,因此HandlerSocket的作者在2010年10月在博客上宣稱這一產品能達到75K QPS的時候,在業界引起了廣泛的關注,包括MySQL官方在新的5.6版本中推出的Memcached API,相信也是受了HandlerSocket的啟發。

測試說明:

一、測試環境

Handlersocket部署在一臺PC 服務器上,配置如下:

CPU為Xeon 2.80GHz *4

內存為4G

硬盤為一塊400G SATA盤

操作系統為64位CentOS 5.3版本

二、測試方法

Handlersocket的客戶端幾乎涵蓋了各種語言,都實現了通過以上兩個端口對數據讀寫的操作,其中查詢操作必須通過建立有索引的列來進行。

考慮到NoSQL在互聯網行業應用較為廣泛,采用PHP實現客戶端程序的做法,通過一定的并發去讀寫數據,觀測每秒讀寫的記錄數作為主要的衡量指標。當然也可以利用Java的多線程進行并發測試,但由于篇幅和時間所限,本文不再涉及此方面的內容。

這里采用第三方實現的一個PHP客戶端,網址為http://code.google.com/p/php-handlersocket/,可以編譯到PHP運行環境中。

為了不對測試服務器產生額外的影響,測試客戶端部署在另外一臺獨立的服務器上,運行的PHP的版本是5.3.5,web server是Nginx 0.8.54,通過fastcgi的方式調用PHP服務。使用apache ab工具實現多個請求和并發操作。

測試分為兩個步驟,首先是寫操作,通過500個請求,每個請求寫入10000條記錄,并發度為2來共寫入500萬條數據,數據的key為數字1到5000000,value大小為100個字節。然后是讀操作,也是用500個請求,每個請求隨機根據key值讀出10000條記錄,并發度為10共讀出500萬條記錄,評測的重點是寫入和讀出數據的時間,以及在此過程中服務器的資源使用情況。

MySQL 數據庫安裝:

一、安裝MySQL

通過編譯源碼的方式安裝MySQL,這里選擇的版本是5.5.8版本。由于這不是本文的重點,這里只簡單的提及一下要點。

首先到MySQL的官網http://dev.mysql.com/downloads/mysql/下載源碼,要注意的是從MySQL 5.5版本開始需要Cmake編譯工具和bison。然后開始安裝:

安裝完成后配置my.cnf文件,最重要的參數是分配給innodb存儲引擎的內存大小,也就是innodb_buffer_pool_size參數,這里設置為2G。

  1. [root@localhost mysql558]# vi my.cnf  
  2.  
  3. ……  
  4.  
  5. innodb_buffer_pool_size = 2G  
  6.  
  7. …… 

二、安裝HandlerSocket

首先到以下地址下載代碼:

https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL

開始安裝HandlerSocket:

  1. [root@localhost handlersocket]# tar -zxvf ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-67-g25f4957.tar.gz  
  2.  
  3. [root@localhost handlersocket]# cd handlersocket/  
  4. [root@localhost handlersocket]# ./autogen.sh  
  5.  
  6. [root@localhost handlersocket]# ./configure --with-mysql-source=/home/handlersocket/mysql-5.5.8 --with-mysql-bindir=/home/handlersocket/mysql558/bin --with-mysql-plugindir=/home/handlersocket/mysql558/lib/plugin  
  7.  
  8. [root@localhost handlersocket]# make  
  9.  
  10. [root@localhost handlersocket]# make install 

三、修改MySQL配置

在my.cnf配置文件增加以下內容:

  1. [root@localhost mysql558]# vi my.cnf  
  2.  
  3. [mysqld]  
  4.  
  5. ......  
  6.  
  7. loose_handlersocket_port = 9998 
  8.  
  9. # the port number to bind to (for read requests)  
  10.  
  11. loose_handlersocket_port_wr = 9999 
  12.  
  13. # the port number to bind to (for write requests)  
  14.  
  15. loose_handlersocket_threads = 16 
  16.  
  17. # the number of worker threads (for read requests)  
  18.  
  19. loose_handlersocket_threads_wr = 16 
  20.  
  21. # the number of worker threads (for write requests)  
  22.  
  23. open_files_limit = 65535 
  24.  
  25. # to allow handlersocket accept many concurrent connections  
  26.  
  27. #make open_files_limit as large as possible. 

這里增加的這些主要是針對handlersocket的配置,它有2個端口,9998用來讀數據,9999讀寫均可,但是通過9998來讀的效率更高。這里我們設置處理讀寫的線程數均為16個,另外為了處理更多的并發連接,設置能打開的文件描述符個數為65535。

四、安裝MySQL授權表并啟動數據庫:

  1. [root@localhost mysql558]# scripts/mysql_install_db --user=mysql 
  2.  
  3. [root@localhost mysql558]# bin/mysqld_safe --user=mysql & 

五、登錄MySQL安裝HandlerSocket Plugin:

  1. [root@localhost mysql558]# bin/mysql -u root -p  
  2.  
  3. mysql> install plugin handlersocket soname 'handlersocket.so';  
  4.  
  5. Query OK, 0 rows affected (0.01 sec) 

通過以下命令查看也可見handlersocket已經成功安裝到MySQL中:

  1. mysql> show processlist;  
  2. mysql> show plugins; 

測試結果:

一、寫操作

成功寫入500萬條記錄,共耗時4300秒,平均每秒寫入數據1163筆。

寫入過程中,服務器比較穩定,CPU使用率平穩,Idle值穩定在70到72之間,等待時間穩定在14到19之間。內存分配上的變化較大,free部分從1.3G下降到25M,buffer部分從630M下降到65M,cache部分從1.5G上升到2.9G,虛擬內存從0上升到376K,但是沒有交換區到內存的換入換出。磁盤IO表現平穩,每秒寫入的塊數穩定在10000到12000之間。

二、讀操作

成功讀出500萬條記錄,共耗時193秒,平均每秒讀出數據25906筆。

讀數據過程中沒有發生磁盤IO。CPU較繁忙,Idle在39到51之間,等待CPU資源的進程一直在1到6個之間。內存表現平穩沒有波動。

通過以上測試結果可以說明,寫入的數據完全緩存到了文件系統中,所以cache部分占用的內存大量增加,這也是讀取數據的時候沒有發生磁盤IO的原因。

總結:

要說明的是,雖然這是一份真實的測試數據,但是并不一定具有普遍意義。因為應用場景是千差萬別的,服務器的資源配置、數據記錄的多少、單條數據的大小、讀寫的比例、客戶端程序的質量等因素都會影響測試結果,甚至差別會非常大,對我們來說,更重要的是了解這個NoSQL產品的特性,知道它的適用場景,并且能夠根據自己實際的應用場景針對性的進行測試,這樣才能做到針對性的選型,只有最適合自己需求的產品才是最好的產品。

【編輯推薦】

  1. 數據庫日常維護常用的腳本部分收錄
  2. SQL與NoSQL——MySQL與NoSQL的融合
  3. MySQL中的NoSQL插件
  4. HandlerSocket是神馬
  5. 微軟WP7本地數據庫之Sterling編程技巧

 

責任編輯:艾婧 來源: it68
相關推薦

2011-07-13 09:58:15

HBase

2011-07-06 16:36:40

Redis

2011-05-30 09:27:35

NoSQL評測

2011-06-14 09:09:13

NoSQLMongoDB

2011-09-21 11:21:00

NoSQL

2019-03-20 15:59:11

NoSQLRedis數據庫

2024-02-02 10:51:53

2021-09-28 09:25:05

NoSQL數據庫列式數據庫

2011-10-09 09:38:03

OracleNoSQL

2024-03-28 09:00:00

NoSQL數據庫

2011-07-19 09:08:50

JavaNoSQL

2019-07-08 10:36:34

數據庫WebNoSQL

2010-04-01 09:45:38

NoSQL

2011-03-01 09:10:19

開源數據庫

2020-10-31 22:01:40

NoSQL數據庫

2017-05-25 10:11:46

數據庫令牌節點

2010-08-13 16:40:27

CouchDBAndroid SDKAndroid

2023-03-05 16:25:38

NoSQL數據庫

2025-01-10 09:25:10

NOSQL數據庫ACID

2017-11-08 09:22:36

數據庫NoSQLArangoDB
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品一区二区三区 | 91麻豆精品国产91久久久久久久久 | 青青久在线视频 | 欧美亚洲另类丝袜综合网动图 | 精品一区久久 | 成人在线免费电影 | 国产精品高 | 免费毛片网站 | 久久网亚洲 | 亚洲精品一区在线观看 | 国产日韩欧美中文字幕 | 国产日韩欧美电影 | 亚洲久久久 | 国产成人精品午夜 | 精品一区在线看 | 精品视频一区二区三区在线观看 | 久久里面有精品 | 亚洲视频在线看 | 日韩久草 | 毛片视频免费观看 | 国产一区在线免费 | 九九热视频这里只有精品 | 日韩有码一区 | 视频二区在线观看 | 久久av一区二区三区 | 黄色一级大片在线免费看产 | 国产二区三区 | 国产精品成av人在线视午夜片 | 欧美一级欧美三级在线观看 | 精品九九 | 97精品视频在线 | 欧美三级视频在线观看 | 伊人一区 | 精品国产一区二区三区性色av | 成人在线观看免费观看 | 日本免费在线观看视频 | 在线欧美小视频 | 国产精品国产亚洲精品看不卡15 | 综合色站导航 | 狠狠综合网 | 在线播放国产一区二区三区 |