mysql中使用UDF自動(dòng)同步memcached效率筆記
更新時(shí)間:2011年08月15日 01:17:44 作者:
接上篇:mysql使用mysql-udf-http效率測(cè)試筆記 ,這次不使用rest架構(gòu),而是使用:libmemcached和memcached_functions_mysql
接上篇:mysql使用mysql-udf-http效率測(cè)試筆記 ,這次不使用rest架構(gòu),而是使用:libmemcached和memcached_functions_mysql,測(cè)試版本是:
libmemcached-0.34.tar.gz和memcached_functions_mysql-0.9.tar.gz,其它版本配對(duì)都有問(wèn)題,我安裝測(cè)試過(guò)有問(wèn)題的版本有:
memcached_functions_mysql-1.1在:
libmemcached-0.49\libmemcached-0.48\libmemcached-0.47\libmemcached-0.30\libmemcached-0.43\\libmemcached-0.42\
下安裝有錯(cuò)誤
memcached_functions_mysql-0.10在:
libmemcached-0.42\下安裝有錯(cuò)誤
memcached_functions_mysql-0.8在:
libmemcached-0.49\libmemcached-0.48\libmemcached-0.47\libmemcached-0.44\libmemcached-0.43\
\libmemcached-0.42\下安裝有錯(cuò)誤
MySQL測(cè)試版本:5.1.55,操作系統(tǒng)Centos5.4 64bit,內(nèi)存2G
安裝libmemcached-0.34和memcached_functions_mysql-0.9,
[root@sunss24 libmemcached-0.34]#./configure \
--with-memcached=/home/memcache/bin/memcached
[root@sunss24 libmemcached-0. 34]# make
[root@sunss24 libmemcached-0. 34]# make install
再運(yùn)行一下memstat,算成功了
[root@sunss24 ~]# ln -s /usr/local/lib/libmemcached.so.3 /usr/lib/
[root@sunss24 ~]# cd memcached_functions_mysql-0.9
[root@sunss24 memcached_functions_mysql-0.9]# ./configure \
--with-mysql=/usr/local/mysql/bin/mysql_config \
--libdir=/usr/local/mysql/lib/
[root@sunss memcached_functions_mysql-0.9]# make && make install
安裝完成后將UDFs加載到MySQL中:
mysql> show variables like "%plugin%";
+---------------+-----------------------------------+
| Variable_name | Value |
+---------------+-----------------------------------+
| plugin_dir | /usr/local/mysql/lib/mysql/plugin |
+---------------+-----------------------------------+
1 row in set (0.00 sec)
[root@sunss ~]# find / -name "libmemcached_functions_mysql.so"
/usr/local/mysql/lib/libmemcached_functions_mysql.so
/root/memcached_functions_mysql-0.9/src/.libs/libmemcached_functions_mysql.so
You have new mail in /var/spool/mail/root
[root@sunss ~]# cp /usr/local/mysql/lib/libmemcached_functions_mysql.so /usr/local/mysql/lib/mysql/plugin/
[root@sunss ~]# cd memcached_functions_mysql-0.9/
[root@sunss ~]#cd sql/
mysql> source install_functions.sql;
查看各種版本:
mysql> select memc_udf_version();
+--------------------+
| memc_udf_version() |
+--------------------+
| 0.9 |
+--------------------+
1 row in set (0.00 sec)
mysql> select memc_libmemcached_version();
+-----------------------------+
| memc_libmemcached_version() |
+-----------------------------+
| 0.34 |
+-----------------------------+
1 row in set (0.00 sec)
mysql>
遇到問(wèn)題:
No package 'libmemcached' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables DEPS_CFLAGS
and DEPS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
解決辦法:
[root@sunss24 memcached_functions_mysql-0.9]# whereis pkgconfig
[root@sunss24 memcached_functions_mysql-0.9]# export \
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
導(dǎo)出所有memcache內(nèi)容:
使用:memcached-hack.zip
效率測(cè)試:
插入:
<?php
include_once("gettime.php");
$btime = getmicrotime();
$i = 0;
$mem = new Memcache();
$mem->addServer('192.168.0.10', 11212);
$local_db = mysql_connect("192.168.0.208", "sunss", "123456");
if(!$local_db)
{
die('Could not connect: '.mysql_error());
}
$local_db_sel = mysql_select_db("test", $local_db);
mysql_query("set names utf8", $local_db);
while ( $i < 1000) {
$re_sql = "insert into urls (id,url) values ($i, 'www.gongchang.com')";
$res = mysql_query($re_sql, $local_db);
$i++;
}
mysql_close($local_db);
$etime = getmicrotime();
$runTime = round($etime - $btime, 4);
echo "runTime: ".$runTime."\r\n";
?>
1000條,插入時(shí)間:runTime: 1.4072
刪除:
<?php
include_once("gettime.php");
$btime = getmicrotime();
$i = 0;
$mem = new Memcache();
$mem->addServer('192.168.0.10', 11212);
$local_db = mysql_connect("192.168.0.208", "sunss", "123456");
if(!$local_db)
{
die('Could not connect: '.mysql_error());
}
$local_db_sel = mysql_select_db("test", $local_db);
mysql_query("set names utf8", $local_db);
while ( $i < 1000) {
//$re_sql = "insert into urls (id,url) values ($i, 'www.gongchang.com')";
$re_sql = "delete from urls where id=".$i;
//echo "re_sql_1: ".$re_sql."\n";
$res = mysql_query($re_sql, $local_db);
$i++;
}
mysql_close($local_db);
$etime = getmicrotime();
$runTime = round($etime - $btime, 4);
echo "runTime: ".$runTime."\r\n";
?>
刪除1000條,運(yùn)行時(shí)間:runTime: 1.5534
更新未作
結(jié)論:每秒query大概650條記錄,比上次的mysql-udf-http快多了
libmemcached-0.34.tar.gz和memcached_functions_mysql-0.9.tar.gz,其它版本配對(duì)都有問(wèn)題,我安裝測(cè)試過(guò)有問(wèn)題的版本有:
復(fù)制代碼 代碼如下:
memcached_functions_mysql-1.1在:
libmemcached-0.49\libmemcached-0.48\libmemcached-0.47\libmemcached-0.30\libmemcached-0.43\\libmemcached-0.42\
下安裝有錯(cuò)誤
memcached_functions_mysql-0.10在:
libmemcached-0.42\下安裝有錯(cuò)誤
memcached_functions_mysql-0.8在:
libmemcached-0.49\libmemcached-0.48\libmemcached-0.47\libmemcached-0.44\libmemcached-0.43\
\libmemcached-0.42\下安裝有錯(cuò)誤
MySQL測(cè)試版本:5.1.55,操作系統(tǒng)Centos5.4 64bit,內(nèi)存2G
安裝libmemcached-0.34和memcached_functions_mysql-0.9,
復(fù)制代碼 代碼如下:
[root@sunss24 libmemcached-0.34]#./configure \
--with-memcached=/home/memcache/bin/memcached
[root@sunss24 libmemcached-0. 34]# make
[root@sunss24 libmemcached-0. 34]# make install
再運(yùn)行一下memstat,算成功了
[root@sunss24 ~]# ln -s /usr/local/lib/libmemcached.so.3 /usr/lib/
[root@sunss24 ~]# cd memcached_functions_mysql-0.9
[root@sunss24 memcached_functions_mysql-0.9]# ./configure \
--with-mysql=/usr/local/mysql/bin/mysql_config \
--libdir=/usr/local/mysql/lib/
[root@sunss memcached_functions_mysql-0.9]# make && make install
安裝完成后將UDFs加載到MySQL中:
復(fù)制代碼 代碼如下:
mysql> show variables like "%plugin%";
+---------------+-----------------------------------+
| Variable_name | Value |
+---------------+-----------------------------------+
| plugin_dir | /usr/local/mysql/lib/mysql/plugin |
+---------------+-----------------------------------+
1 row in set (0.00 sec)
[root@sunss ~]# find / -name "libmemcached_functions_mysql.so"
/usr/local/mysql/lib/libmemcached_functions_mysql.so
/root/memcached_functions_mysql-0.9/src/.libs/libmemcached_functions_mysql.so
You have new mail in /var/spool/mail/root
[root@sunss ~]# cp /usr/local/mysql/lib/libmemcached_functions_mysql.so /usr/local/mysql/lib/mysql/plugin/
[root@sunss ~]# cd memcached_functions_mysql-0.9/
[root@sunss ~]#cd sql/
mysql> source install_functions.sql;
查看各種版本:
復(fù)制代碼 代碼如下:
mysql> select memc_udf_version();
+--------------------+
| memc_udf_version() |
+--------------------+
| 0.9 |
+--------------------+
1 row in set (0.00 sec)
mysql> select memc_libmemcached_version();
+-----------------------------+
| memc_libmemcached_version() |
+-----------------------------+
| 0.34 |
+-----------------------------+
1 row in set (0.00 sec)
mysql>
遇到問(wèn)題:
復(fù)制代碼 代碼如下:
No package 'libmemcached' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables DEPS_CFLAGS
and DEPS_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
解決辦法:
[root@sunss24 memcached_functions_mysql-0.9]# whereis pkgconfig
[root@sunss24 memcached_functions_mysql-0.9]# export \
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
導(dǎo)出所有memcache內(nèi)容:
使用:memcached-hack.zip
效率測(cè)試:
插入:
復(fù)制代碼 代碼如下:
<?php
include_once("gettime.php");
$btime = getmicrotime();
$i = 0;
$mem = new Memcache();
$mem->addServer('192.168.0.10', 11212);
$local_db = mysql_connect("192.168.0.208", "sunss", "123456");
if(!$local_db)
{
die('Could not connect: '.mysql_error());
}
$local_db_sel = mysql_select_db("test", $local_db);
mysql_query("set names utf8", $local_db);
while ( $i < 1000) {
$re_sql = "insert into urls (id,url) values ($i, 'www.gongchang.com')";
$res = mysql_query($re_sql, $local_db);
$i++;
}
mysql_close($local_db);
$etime = getmicrotime();
$runTime = round($etime - $btime, 4);
echo "runTime: ".$runTime."\r\n";
?>
1000條,插入時(shí)間:runTime: 1.4072
刪除:
復(fù)制代碼 代碼如下:
<?php
include_once("gettime.php");
$btime = getmicrotime();
$i = 0;
$mem = new Memcache();
$mem->addServer('192.168.0.10', 11212);
$local_db = mysql_connect("192.168.0.208", "sunss", "123456");
if(!$local_db)
{
die('Could not connect: '.mysql_error());
}
$local_db_sel = mysql_select_db("test", $local_db);
mysql_query("set names utf8", $local_db);
while ( $i < 1000) {
//$re_sql = "insert into urls (id,url) values ($i, 'www.gongchang.com')";
$re_sql = "delete from urls where id=".$i;
//echo "re_sql_1: ".$re_sql."\n";
$res = mysql_query($re_sql, $local_db);
$i++;
}
mysql_close($local_db);
$etime = getmicrotime();
$runTime = round($etime - $btime, 4);
echo "runTime: ".$runTime."\r\n";
?>
刪除1000條,運(yùn)行時(shí)間:runTime: 1.5534
更新未作
結(jié)論:每秒query大概650條記錄,比上次的mysql-udf-http快多了
相關(guān)文章
Mysql5.6啟動(dòng)內(nèi)存占用過(guò)高解決方案
vps的內(nèi)存為512M,安裝好nginx,php等啟動(dòng)起來(lái),mysql死活啟動(dòng)不起來(lái)看了日志只看到對(duì)應(yīng)pid被結(jié)束了,后跟蹤看發(fā)現(xiàn)是內(nèi)存不足被killed;mysql5.6啟動(dòng)內(nèi)存占用過(guò)高怎么辦呢,下面小編給大家解答下2016-09-09
Linux中查看MySQL服務(wù)是否開(kāi)啟方式
這篇文章主要介紹了Linux中查看MySQL服務(wù)是否開(kāi)啟方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理
這篇文章主要介紹了詳解MySQL InnoDB存儲(chǔ)引擎的內(nèi)存管理,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2021-04-04
MySQL Sleep連接過(guò)多問(wèn)題解決方法
這篇文章主要介紹了MySQL Sleep連接過(guò)多問(wèn)題解決方法,MySQL Sleep連接過(guò)多一般多為客戶端沒(méi)關(guān)閉連接導(dǎo)致的,解決方法很簡(jiǎn)單,修改一下配置文件即可,需要的朋友可以參考下2015-05-05
MySQL replace函數(shù)替換字符串語(yǔ)句的用法
MySQL replace函數(shù)我們經(jīng)常用到,下面就為您詳細(xì)介紹MySQL replace函數(shù)的用法,希望對(duì)您學(xué)習(xí)MySQL replace函數(shù)方面能有所啟迪。2010-12-12
使用MySQL進(jìn)行千萬(wàn)級(jí)別數(shù)據(jù)查詢的技巧分享
這篇文章主要介紹了如何使用MySQL進(jìn)行千萬(wàn)級(jí)別數(shù)據(jù)查詢的技巧,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03
MySQL數(shù)據(jù)庫(kù)遷移OpenGauss數(shù)據(jù)庫(kù)解析
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)遷移OpenGauss數(shù)據(jù)庫(kù)解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

