# mysqlをインストール # 既にインストール済みなら同じverのソースを持ってくる brew install mysql # ここを参考に。 http://www.bigegg.net/post/4651592197/handlersocket-osx cp /Library/Caches/Homebrew/mysql-5.5.20.tar.gz . tar zxvf mysql-5.5.20.tar.gz cd mysql-5.5.20 # configure.cmakeにバグがあるので、下記をみて修正。 http://bugs.mysql.com/bug.php?id=65050 cmake . # 起動するも失敗 mysql.server start ERROR! The server quit without updating PID file (…) # conf cp /usr/local/Cellar/mysql/5.5.20/support-files/my-small.cnf /etc/my.cnf mysql_install_db --verbose --user=`whoami` --basedir=/usr/local/Cellar/mysql/5.5.20 --datadir=/usr/local/var/mysql # 再度起動 mysql.server start Starting MySQL .. SUCCESS! # handler socketをインストール # ここを参考に。 https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL git clone git://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git cd HandlerSocket-Plugin-for-MySQL/ ./autogen.sh ./configure --with-mysql-source=/Users/xxx/src/mysql-5.5.20(mysqlソースパス) --with-mysql-bindir=/usr/local/Cellar/mysql/5.5.20/bin/(mysqlコマンドのパス) --with-mysql-plugindir=/usr/local/Cellar/mysql/5.5.20/lib/plugin make make install # 別コンソールでmysqlを起動し、 mysql> install plugin handlersocket soname 'handlersocket.so'; # プラグインが入ったかな。 ls /usr/local/Cellar/mysql/5.5.20/lib/plugin/ # handlersocketの設定を入れる。 sudo vi /etc/my.cnf handlersocket_port = 9998 handlersocket_port_wr = 9999 handlersocket_address = handlersocket_verbose = 0 handlersocket_timeout = 300 handlersocket_threads = 16 thread_concurrency = 128 open_files_limit = 65535 # mysql再起動 mysql.server stop Shutting down MySQL . SUCCESS! mysql.server start Starting MySQL .. SUCCESS! # 別コンソールでmysqlを起動し、 mysql> show plugins; +-----------------------+--------+--------------------+------------------+---------+ | Name | Status | Type | Library | License | +-----------------------+--------+--------------------+------------------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL | | mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD | +-----------------------+--------+--------------------+------------------+---------+ 18 rows in set (0.00 sec) # 入った!! # 使ってみる use test; CREATE TABLE `user` ( `user_id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NULL DEFAULT NULL, `birthday` DATE NULL DEFAULT NULL, `memo` VARCHAR(255) NULL DEFAULT NULL, PRIMARY KEY (`user_id`) ); # ruby用クライアントを入れる # tarはここからダウンロード https://bitbucket.org/winebarrel/ruby-handlersocket/src cd HandlerSocket-Plugin-for-MySQL/ ←ここでmakeせねばならん。 tar zxvf winebarrel-ruby-handlersocket-c19841e47ea2.tar.gz cp winebarrel-ruby-handlersocket-c19841e47ea2/* . ruby extconf.rb make make install # ------------------------------------ # sample.rb require 'handlersocket' hs = HandlerSocket.new('127.0.0.1', 9999) # Args (default value) # host(localhost), port(9998), timeout(600), listen_backlog(256) # 3は識別子 hs.open_index(3, 'test', 'user', 'PRIMARY', 'user_id,name,birthday,memo'); # select 接続、条件、条件値、count、offset p res = hs.execute_single(3, '>=', ['2'], 100, 0); # insert 接続、行 hs.execute_insert(3, [1,"name1","2001-01-01","memo1"]); hs.execute_insert(3, [2,"name2","2001-01-01","memo2"]); hs.execute_insert(3, [3,"name3","2001-01-01","memo3"]); # delete 接続、条件、条件値、count、offset ← selectして消すため # 詳細はここ # https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/blob/master/docs-ja/perl-client.ja.txt hs.execute_delete(3, '=', ['2'], 1, 0); # 高速なexecute_multi p hs.execute_multi( [ [3, '=', ['3'], 1, 0], [3, '=', ['1'], 1, 0] ] ) hs.close
# ------------------------------------ sample.rb require 'handlersocket' hs = HandlerSocket.new('127.0.0.1', 9999) # Args (default value) # host(localhost), port(9998), timeout(600), listen_backlog(256) # 3は識別子 hs.open_index(3, 'test', 'user', 'PRIMARY', 'user_id,name,birthday,memo'); # select 接続、条件、条件値、count、offset p res = hs.execute_single(3, '>=', ['2'], 100, 0); # insert 接続、行 hs.execute_insert(3, [1,"name1","2001-01-01","memo1"]); hs.execute_insert(3, [2,"name2","2001-01-01","memo2"]); hs.execute_insert(3, [3,"name3","2001-01-01","memo3"]); # delete 接続、条件、条件値、count、offset ← selectして消すため # 詳細はここ # https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/blob/master/docs-ja/perl-client.ja.txt hs.execute_delete(3, '=', ['2'], 1, 0); # 高速なexecute_multi p hs.execute_multi( [ [3, '=', ['3'], 1, 0], [3, '=', ['1'], 1, 0] ] ) hs.close次回はこちら
MacのMySQLでHandlerSocketのベンチマークをとった
0 件のコメント:
コメントを投稿