
MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓реЗрдЦ NoSQL рдХреЗ рд░реВрдк рдореЗрдВ - рдХреИрд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 750,000 рдХреНрд╡реЗрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХрд╣рд╛рдиреА (рдореЗрд░реЗ рджреЛрд╕реНрдд рд╡рд╛рджрд┐рдо рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд) рдХреЛ рдереЛрдбрд╝рд╛ рдЪрдХреНрдХрд░ рдЖрдпрд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдиреНрдп рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рд╣рд╛рде рдкреНрд░рдпреЛрдЧреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдПред
PHP рдХреЗ рд▓рд┐рдП рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛрдб. google.com/p/php-handlerocket
PEAR openpear.org/package/Net_HandlerSocket
PHP рджреЗрд╢реА github.com/tz-lom/HSPHP
рдиреАрдЪреЗ рдореЗрд░реЗ рдкрд╣рд▓реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЗрдВрдкреНрд░реЗрд╢рди рд╣реИрдВред
рдореИрдВ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрд░реЛрдд рд╕реЗ MySQL рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд╣реИрдВрдбрд▓рд░рдмреЛрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ SHOW PROCESSLIST рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж; рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЬрдм рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪрд┐рддреНрд░ рд▓рдЧрднрдЧ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛

рднрд░реА рд╣реБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ, рд╣рдо рд╣реИрдВрдбрд▓рдмрд╛рд░ рд▓реЛрдбрд┐рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЫрд╡рд┐ рджрд┐рдЦрд╛рддреА рд╣реИ рдХрд┐ рддреАрди рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓реЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдХреНрд░рд┐рдп рд╣реИ (рдкреНрд░рдЧрддрд┐ рдореЗрдВ)ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдзрд╛рдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ my.conf рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
loose_handlersocket_threads = 16
loose_handlersocket_threads_wr = 1
рдпрджрд┐ рдЖрдкрдиреЗ PHP рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рд╣реИ, рддреЛ php-hanlpersocket рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдкреНрд░рд▓реЗрдЦрди рдХреА рдХрдореА рд╕реЗ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рддред рдЙрджрд╛рд╣рд░рдг рдФрд░ рджреГрд╢реНрдпрддрд╛ рдХреА рдкрд╕рдВрдж рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рд╣реИред MyISAM рдФрд░ InnoDb рджреЛрдиреЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдЪрдпрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг php-handlerocket рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╣реИред
рдЪрдпрди рдХреА рдЦреЛрдЬ рдСрдкрд░реЗрд╢рди "=" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ, рд╕рдВрдЪрд╛рд▓рди рднреА рд╕рдВрднрд╡ рд╣реИ:
рдЕрдзрд┐рдХ '>',
'<' рд╕реЗ рдХрдо
'> =' рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ
'<=' рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо
рдЪрд░рд┐рддреНрд░ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдЗрдХрдирд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рдЖрдк рдмрд╣реБрдд рд╕рдордп рдЦреЛ рджреЗрдВрдЧреЗред
рдирд╛рдо рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
CREATE TABLE `test`.`cities` (
`id_city` int (10) unsigned NOT NULL AUTO_INCREMENT,
`id_region` int (10) unsigned NOT NULL ,
`id_country` mediumint(8) unsigned NOT NULL ,
`city_name` varchar (255) NOT NULL ,
`city_order` int (10) unsigned NOT NULL ,
PRIMARY KEY (`id_city`),
KEY `id_region` (`id_region`),
KEY `name` (`city_name`)
) ENGINE=MyISAM
$hs = new HandlerSocket($host, $port);
if (!($hs->openIndex(0, $dbname, $table, 'name', 'city_name,id_city,id_region')))
{
echo $hs->getError(), PHP_EOL;
die( 'error open index');
}
$retval = $hs->executeSingle(0, '=', array(''), 10);
рдЙрддреНрддрд░ рд╣реИ:
array(1) {
[0]=> array(2) {
[0]=> string(6) ""
[1]=> string(4) "1976"
[2]=> string(1) "72"
}
}
рдЖрдк рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирдореВрдирд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (id_region = 1):
if (!($hs->openIndex(0, $dbname, $table, 'id_region', 'city_name,id_city,id_region')))
{
die($hs->getError());
}
$retval = $hs->executeSingle(0, '=', array(1), 100, $off);
рд▓рдЧрд╛рддрд╛рд░ 100 - рдирдореВрдирд╛ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛, $ рдСрдл - рдСрдлрд╕реЗрдЯ, рд▓рд┐рдорд┐рдЯ рдХреЗ рд╕рдорд╛рди, рдЪрдпрди рдореЗрдВ OFFSETред
рдЙрддреНрддрд░ SQL рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди 100 рдпрд╛ рдЙрд╕рд╕реЗ рдХрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕рд░рдгреА рд╣реИ: SELECT 'id_region', 'city_name, id_city, id_region' FROM cityes WHERE id_region = 1 LIMIT 100, $ off;
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЬрдм рд╕рдВрдЪрд╛рд▓рди (рд╕рдВрдХреЗрдд) '> =' рдпрд╛ '<=' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рдХреБрдЫ рдЕрдХреНрд╖рд░реЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдорд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдмреИрдЪреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЛрдИ рднреА рд╕рд░рд▓ рдирдореВрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдЙрдирдХрд╛ рдЬреНрдЮрд╛рди рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░, рдЦрд╛рд╕рдХрд░ рдЬрдм рдХреБрдЫ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЯреЗрд▓рдиреЗрдЯ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╡рд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓.рдЗрди.рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдЕрдиреБрд╡рд╛рдж "рд╣реИрдВрдбрд▓рд░рд╕реЙрдХреЗрдЯ рдХрд╛ рдкрд░рд┐рдЪрдп: рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╡рд░рдг рдФрд░ php- рд╣реИрдВрдбрд▓рд░рдмреЛрд░реНрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рдореЗрдВ рд╣реИ
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ: рдЯреЗрд▓рдиреЗрдЯ рдореЗрдВ, рдкреЛрд░реНрдЯ 9998 рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
telnet localhost 9998
P 0 test cities name city_name,id_city
// TAB (\t), NULL, TAB
0 1 ---> 0 1
///
0 > 1 a 10
/// (int), (<>= ...) - , [, Limit, Offset]
0 2 A Baa 10564 A Barqueira 10565 A Corua 10566 A da Beja 15510 A dos Arcos 15511 A dos Bispos 15512 A dos Cunhados 15513 A dos Francos 15514 A Merca 11120 A Nario 13257
// =0 (), (city_name,id_city)
// , TAB, BK(\n)
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдмрд╣реБ-рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд╢реНрд░рд┐рдд рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдкреНрд░рд╢реНрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдХрдИ рдЕрдиреБрд░реЛрдз:
$hs->openIndex(0, $dbname, $table, 'PRIMARY' , 'city_name,id_city,id_region' );
$hs->openIndex(1, $dbname, $table, 'id_region' , 'city_name,id_city,id_region' );
$retval = $hs->executeMulti(
array(array(0, '=' , array( '23' ), 1, 0),
array(1, '=' , array( '3' ), 10, 0)));
* This source code was highlighted with Source Code Highlighter .
INSERT / UPDATE / DELETE рд╕рдВрдЪрд╛рд▓рди рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд░рд╣рд╛ред рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдореАрдХреНрд╖рд╛ рджреЗрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВред
рд╣реИрдВрдбрд▓рд░рдХреЗрдЯ рдиреЗ рд╕реНрдлрд┐рдВрдХреНрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рд╕реНрдлрд┐рдВрдХреНрд╕ рдХреА рдорджрдж рд╕реЗ, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдИрдбреА рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣реИрдВрдбрд▓рд░рдмреЛрд░реНрдб рдХреА рдорджрдж рд╕реЗ рд╣рдо рддреБрд░рдВрдд рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред
рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛
рд╢реАрд░реНрд╖ рдкрдВрдХреНрддрд┐ phhhs
рд▓реЛрдЕрд░ php- рд╣реИрдВрдбрд▓рд░рдХреЗрдЯ
рд╕рдорд╛рд╡реЗрд╢рди рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдЧрдВрджрд╛ рд╕рдордп
0.005791
0.001404
---
0.007095
0.001383
---
0.00456
0.002563
---
0.006104
0.001384
рд╕рдордп рдФрд░ рд╢рд╛рдорд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд┐рдирд╛, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдкреАрдХреЗ рдкреНрд░рддрд┐ рдПрдХ рдЪрдпрди
$t1 = microtime();
$retval = $hs->executeSingle(2, '=', array('60187'));
echo microtime()-$t1, PHP_EOL;
$t1 = microtime();
$res = $rs->select('=','60187');
echo microtime()-$t1, PHP_EOL;
0.000451
0.000632
---
0.00039400000000001
0.00020700000000007
---
0.00040000000000007
0.00021399999999994
---
0.00053999999999998
0.002058
---
0.002926
0.0002089999999999
---
0.000386
0.00021100000000002
рдмрдЧ рдХреА рдкрд╣рдЪрд╛рди рдХреА
рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдореИрдВрдиреЗ рдЯреЗрд▓рдиреЗрдЯ рдХреЛ рдХрд┐рд▓ -9 рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╕реЙрдХреЗрдЯ рд▓рдЯрдХрд╛ рд╣реБрдЖ рдерд╛ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд╛рдж рдХреЗ рдкреБрдирд░рд╛рд░рдВрдн рдиреЗ рдЗрд╕реЗ рдлреНрд░реАрдЬ рдХрд░ рджрд┐рдпрд╛ (рд╕реЙрдХреЗрдЯ рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛)ред
рд╢реЛрдХреЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рддреА рд╣реИрдВ
рдорд╛рдВрд╕рдкреЗрд╢рд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рдерд╛ред