* get(also mutiple get)
* set, add, replace
* append/prepend
* incr, decr
* delete
* stats
Далее нам это надо будет учитывать при использовании модуля Cache::Memcached::Fast (который вам предстоит поставить с CPAN).
Вот простейший пример работы с MemcacheDB:
#!/usr/bin/perl
use strict;
use warnings;
use Cache::Memcached::Fast;
my $memd = new Cache::Memcached::Fast( {
servers => [ { address => 'localhost:7777' } ],
} );
$memd->set("some_key", "some data");
print $memd->get("some_key");
А сейчас давайте попробуем внести 2 миллиона записей в базу (2 млн уникальных ключей, значения поставим равными ключам + некий набор символов, суммарный размер ключей -- 33 102 046 байт (ок 32 мегайбайт), данных чуть больше). Платформа для теста: 4 * Intel(R) Xeon(R) CPU E5420 @ 2.50GHz + 8Гб памяти + SATA винты в RAID1 + Centos5. Перед началом теста БД занимала 28 мегабайт.
Итого время добавления 2 млн записей следующее:
time ./work_db.pl
real 2m35.559s
user 0m6.060s
sys 0m13.745s
Т.е. ~14 000 записей в секунду скорость записи.
Протестируем скорость чтения, просто получим ключи, которые возьмем из файла:
time ./work_db.pl
some data
real 1m46.386s
user 0m9.637s
sys 0m23.029s
Т.е. скорость чтения около ~18 000 записей / в секунду
Кстати, а статистику работу MemcacheDB можно посмотреть опять же Телнетом:
telnet localhost 7777
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 7673
STAT uptime 859
STAT time 1236987371
STAT version 1.2.0
STAT pointer_size 64
STAT rusage_user 3.684439
STAT rusage_system 19.183083
STAT ibuffer_size 512
STAT curr_connections 5
STAT total_connections 256615
STAT connection_structures 9
STAT cmd_get 4
STAT cmd_set 14623
STAT get_hits 4
STAT get_misses 0
STAT bytes_read 14110820
STAT bytes_written 6402248
STAT threads 4
END
Итого, мы получили ~18 000 записей / секунду при чтении, а при записи ~14 000 записей / секунду.
Errata: немного переклинило и считал минуты по 30 секунд, исправил, значения стали меньше :)
Довольно интересно...Еще интересней было бы глянуть здесь же на результаты Postgres и MySql...
ReplyDeletePostgreSQL будет ЯВНО медленнее MySQL, так что сейчас протестирую MySQL с хранилищем MyISAM.
ReplyDelete