記事の続きで
ハンドラーソケットと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 | セット | 得る |
---|
Hs | 33,4 | 24.6 * / 26.3 ** |
マック | 16.7 | 15.6 |
Mcdb | 21,4 | 17.5 |
redis | 19,4 | 19.6 |
東京Tr | 22.1 | 22.8 |
秒単位の時間で、平均3〜5回の測定を行いました。
*-読み取りポートへ
**-書き込みポートへ
他に何を比較したいですか:membase&tarantool