MySQL基准测试套件Benchmark安装DBI组件过程分享
今天打算用MySQL自带的基准测试套件(BenchmarkSuite)来测试一下插入性能,结果出现错误:
#还是交代一下环境吧 [root@beanvm~]#cat/etc/redhat-release RedHatEnterpriseLinuxServerrelease6.2(Santiago) [root@beanvm~]#uname-a Linuxbeanvm2.6.32-220.el6.i686#1SMPWedNov908:02:18EST2011i686i686i386GNU/Linux #下为报错 [mysql@beanvm~]$cd/usr/local/mysql/sql-bench/ [mysql@beanvmsql-bench]$./test-insert--server=mysql--user=root--password=mysql--log Can'tlocateDBI.pmin@INC(@INCcontains:/usr/local/lib/perl5/usr/local/share/perl5/usr/lib/perl5/vendor_perl/usr/share/perl5/vendor_perl/usr/lib/perl5/usr/share/perl5.)at./test-insertline33. BEGINfailed--compilationabortedat./test-insertline33.
很显然这里缺少DBI组件,它是perl连接数据库的重要接口,先来检查一下这个包是否存在
[mysql@beanvm]$rpm-qa|grepperl-DB
可以直接用yum来安装,这里我用的安装包的形式,幸运的是,这些包在RHEL6的安装介质中都可以找到,只要安装下面两个包就可以了:
[root@beanvmPackages]#rpm-ivhperl-DBI-1.609-4.el6.i686.rpm warning:perl-DBI-1.609-4.el6.i686.rpm:HeaderV3RSA/SHA256Signature,keyIDfd431d51:NOKEY Preparing... ###########################################[100%] 1:perl-DBI ###########################################[100%] [root@beanvmPackages]#rpm-ivhperl-DBD-MySQL-4.013-3.el6.i686.rpm warning:perl-DBD-MySQL-4.013-3.el6.i686.rpm:HeaderV3RSA/SHA256Signature,keyIDfd431d51:NOKEY error:Faileddependencies: libmysqlclient.so.16isneededbyperl-DBD-MySQL-4.013-3.el6.i686 libmysqlclient.so.16(libmysqlclient_16)isneededbyperl-DBD-MySQL-4.013-3.el6.i686
在安装perl-DBD-MySQL包时,我们发现提示缺失libmysqlclient.so.16文件,如果是经常安装MySQL的话,应该知道libmysqlclient.so是一个MySQL数据库中必备的库文件,会不会是没有链接到呢?
[root@beanvm~]#ls-l/usr/lib/libmysqlclient.so.16* [root@beanvm~]#ls-l/usr/local/mysql/lib/ total147260 -rw-r--r--.1mysqlmysql 13322694Feb1514:30libmysqlclient.a lrwxrwxrwx.1mysqlmysql 16Feb1514:39libmysqlclient_r.a->libmysqlclient.a lrwxrwxrwx.1mysqlmysql 17Feb1514:39libmysqlclient_r.so->libmysqlclient.so lrwxrwxrwx.1mysqlmysql 20Feb1514:39libmysqlclient_r.so.18->libmysqlclient.so.18 lrwxrwxrwx.1mysqlmysql 24Feb1514:39libmysqlclient_r.so.18.1.0->libmysqlclient.so.18.1.0 lrwxrwxrwx.1mysqlmysql 20Feb1514:39libmysqlclient.so->libmysqlclient.so.18 lrwxrwxrwx.1mysqlmysql 24Feb1514:39libmysqlclient.so.18->libmysqlclient.so.18.1.0 -rwxr-xr-x.1mysqlmysql 7654927Feb1514:30libmysqlclient.so.18.1.0 -rw-r--r--.1mysqlmysql129797464Feb1514:38libmysqld.a -rw-r--r--.1mysqlmysql 10166Feb1514:29libmysqlservices.a drwxr-xr-x.3mysqlmysql 4096Feb1514:39plugin
从上面的结果可以得知,已经存在libmysqlclient.so.18文件了,但是版本不符,因此还是需要这个libmysqlclient.so.16文件,那么从哪里可以找到呢?最简便的方法就是安装MySQLRPM安装套件中的MySQL-shared-compat包:(我的MySQL是编译安装的,但是在同版本的RPM套件中MySQL-shared-compat-5.6.16-1.el6.i686.rpm包却提供了必要的libmysqlclient.so.16文件,就这点来说编译部署还是没有RPM安装来的全面)
#我的MySQL版本:5.6.16 [root@beanvm~]#rpm-ivhMySQL-shared-compat-5.6.16-1.el6.i686.rpm Preparing... ###########################################[100%] 1:MySQL-shared-compat ###########################################[100%]
再次安装perl-DBD-MySQL-4.013-3.el6.i686.rpm就可以了
[root@beanvmPackages]#rpm-ivhperl-DBD-MySQL-4.013-3.el6.i686.rpm warning:perl-DBD-MySQL-4.013-3.el6.i686.rpm:HeaderV3RSA/SHA256Signature,keyIDfd431d51:NOKEY Preparing... ###########################################[100%] 1:perl-DBD-MySQL ###########################################[100%]
综上所述,安装DBI建议顺序安装三个包:
#DBI安装包: perl-DBI-1.609-4.el6.i686.rpm #必备的库文件包,注意版本,这里主要提供的是libmysqlclient.so.16 MySQL-shared-compat-5.6.16-1.el6.i686.rpm #DBD组件 perl-DBD-MySQL-4.013-3.el6.i686.rpm
成功后就可以使用Benchmark进行基准测试了,下面是测试插入性能的部分数据:
[mysql@beanvmsql-bench]$./test-insert--server=mysql--user=root--password=mysql--log Testingserver'MySQL5.6.16'at2014-02-1516:36:17
Testingthespeedofinsertingdatainto1tableanddosomeselectsonit. Thetestsaredonewithatablethathas100000rows.
Generatingrandomkeys Creatingtables Inserting100000rowsinorder Inserting100000rowsinreverseorder Inserting100000rowsinrandomorder Timeforinsert(300000):879wallclocksecs(3.51usr 1.21sys+ 0.00cusr 0.00csys= 4.72CPU)
Testinginsertofduplicates Timeforinsert_duplicates(100000):18wallclocksecs(3.81usr 1.41sys+ 0.00cusr 0.00csys= 5.22CPU)
Testofprepared+execute/oncepreparedmanyexecuteselects Timeforprepared_select(100000):31wallclocksecs(10.87usr 1.81sys+ 0.00cusr 0.00csys=12.68CPU) ......