ハンドラソケット内のいくつかの微妙なアップデート&挿入

記事の続きでハンドラーソケットとphp_handlersocketの最初の経験更新と挿入のいくつかの機能

UPDATEおよびINSERTの使用に時間がかかりました。
すべてがシンプルなテーブルでテストされた
CREATE TABLE `test`.`test` (
`keyid` varchar(45),
`value` varchar(45),
PRIMARY KEY (`keyid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251


簡単な例
$port = 9998;
$hs = new HandlerSocket($host, $port);
$retval = $hs->executeInsert(0, array( '112233090' , '12212212' ));
var_dump($retval);

* This source code was highlighted with Source Code Highlighter .

発行されたbool(false);
bool(false);


胸が単純に開いたことがわかります:
SHOW PROCESSLISTが表示される場合
プロセスリストハンドラーソケットを表示
次に、モードのState列の17行目は、前のすべての行と異なります。
mode=rd
mode=wr

記事で述べたように、 HandlerSocketを起動するときのHandler Socketとphp_handlersocketの最初の経験 、16の読み取りスレッドと1つの書き込みが開始されます。 このデータはmy.cnfに設定されます
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)

したがって、読み取りスレッド(スレッド)はポート9998にバインドされ、ポート9999に書き込まれます。したがって、INSERT / UPDATE / DELETE操作を実行する場合は、ポート9999でインデックスを開く必要があります。
$host = 'localhost' ;
$port = 9998;
$port_wr = 9999;

$hs = new HandlerSocket($host, $port_ wr);


* This source code was highlighted with Source Code Highlighter .


同様に、ネイティブプロトコル: telnet akalend.local 9998
tlnet: connect to address fe80::217:f2ff:feee:3a60: Connection refused
Trying 192.168.1.10...
Connected to akalend.local.
Escape character is '^]'.
P 0 test test PRIMARY keyid,value
0 1
0 = 1 123123
0 2 123123 asdasdasd
0 = 1 123123 0 0 D
2 1 readonly
telnet akalend.local 9998
tlnet: connect to address fe80::217:f2ff:feee:3a60: Connection refused
Trying 192.168.1.10...
Connected to akalend.local.
Escape character is '^]'.
P 0 test test PRIMARY keyid,value
0 1
0 = 1 123123
0 2 123123 asdasdasd
0 = 1 123123 0 0 D
2 1 readonly

INSERT / UPDATE操作では、 読み取り専用エラーが発生します

telnet akalend.local 9999
Trying fe80::217:f2ff:feee:3a60...
telnet: connect to address fe80::217:f2ff:feee:3a60: Connection refused
Trying 192.168.1.10...
Connected to akalend.local.
Escape character is '^]'.
P 0 test test PRIMARY keyid,value
0 1
0 = 1 123123 1 0 D
0 1 1
0 + 2 1111 12345
0 1
ここではすべてがうまくいっているようです。

これで、リスト1のコードは肯定的な結果をもたらします。
bool(true)


最後に、小さなテストMACX 2Gbの2.3 GHzのCoreDuo、またはその特別hones(デフォルト設定)ではありません。

記録/ memcacheの中で32バイト10万件のレコードを読むには、Redisの、memcacheDb、HS、Totyo暴君
1つのスレッド、1つの接続、ネイティブプロトコル。

結果:
noSqlセット得る
Hs33,424.6 * / 26.3 **
マック16.715.6
Mcdb21,417.5
redis19,419.6
東京Tr22.122.8


秒単位の時間で、平均3〜5回の測定を行いました。
*-読み取りポートへ
**-書き込みポートへ
他に何を比較したいですか:membase&tarantool

Source: https://habr.com/ru/post/J113039/


All Articles