首页 使用Sysbench测试PostgreSQL、Oracle、MySQL

使用Sysbench测试PostgreSQL、Oracle、MySQL

举报
开通vip

使用Sysbench测试PostgreSQL、Oracle、MySQL使用Sysbench测试PostgreSQL/Oracle/MySQL 唐成@2015.09.19为什么使用Sysbench?为什么使用Sysbench?简单性实时显示支持多种数据库可扩展03.简单性只有一个sysbench可执行文件,简单易用04.实时显示可以象iostat等工具一样每秒显示一次结果01.多种数据库02.可扩展可以用lua脚本灵活写不同的测试用例少有的能同时支持PostgreSQL/MySQL/Oracle的测试工具Sysbench的编译在PostgreSQL下的编译安装依赖包yuminstall...

使用Sysbench测试PostgreSQL/Oracle/MySQL 唐成@2015.09.19为什么使用Sysbench?为什么使用Sysbench?简单性实时显示支持多种数据库可扩展03.简单性只有一个sysbench可执行文件,简单易用04.实时显示可以象iostat等工具一样每秒显示一次结果01.多种数据库02.可扩展可以用lua脚本灵活写不同的测试用例少有的能同时支持PostgreSQL/MySQL/Oracle的测试工具Sysbench的编译在PostgreSQL下的编译安装依赖包yuminstallautomakeyuminstalllibtool.x86_64编译命令./autogen.sh./configure--without-mysql\--without-drizzle\--with-pgsql\--with-pgsql-includes=/usr/local/pgsql/include\--with-pgsql-libs=/usr/local/pgsql/libmakePGSQL_LIBS="-L/usr/local/pgsql/lib-lpq"PGSQL_CFLAGS="-I/usr/local/pgsql/include”在Oracle下的编译安装依赖包yuminstallautomakeyuminstalllibtool.x86_64编译命令./autogen.sh./configure--with-oracle--without-mysql--without-drizzlemakeORA_LIBS="-L$ORACLE_HOME/lib-lclntsh"ORA_CFLAGS="-I$ORACLE_HOME/rdbms/demo-I$ORACLE_HOME/rdbms/public"Sysbench的基本使用方法运行Sysbench一般方法Prepare命令用于生成测试数据命令行格式为sysbench<options>prepareRun命令运行测试的命令命令行格式为sysbench<options>runCleanup命令清除测试数据命令行格式为sysbench<options>cleanupSysbench测试PG准备测试数据的命令sysbench--test=sysbench_lua/oltp_pg.lua\--db-driver=pgsql\--pgsql-host=127.0.0.1\--pgsql-port=5432\--pgsql-user=osdba\--pgsql-password=sysbench\--pgsql-db=testdb\--oltp-tables-count=10\--oltp-table-size=10000000\prepare指定测试所用的lua脚本的路径指定如何连接到PostgreSQL数据库指定建多少张测试 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 。本例子中建10张测试表。每张测试表的结构及数据量完全相同。指定每表测试表中生成多少行测试数据,本例子生成1千万行测试数据。Sysbench测试PG运行测试sysbench--test=sysbench_lua/oltp_pg.lua\--db-driver=pgsql\--pgsql-host=127.0.0.1\--pgsql-port=5432\--pgsql-user=osdba\--pgsql-password=sysbench\--pgsql-db=testdb\--oltp-tables-count=10\--oltp-table-size=10000000\--num-threads=32\--max-requests=100000000\--max-time=300\--report-interval=1\run指定启动多少线程进行并发测试,线程数越多,压力越大指定最多发送多少个请求后退出指定运行多久退出,本例中运行300秒退出。多长时间输出一次测试结果,本用例中1秒打印一次测试结果Sysbench测试Oracle生成测试数据./sysbench--test=tests/db/oltp.lua\--db-driver=oracle\--oltp-table-name=sysbench\--oltp-table-size=10000000\--oltp-tables-count=10\--oracle-db=testdb\--oracle-user=sysbench\--oracle-password=sysbench\--max-time=300\--max-requests=100000000\--num-threads=32\--report-interval=1\prepare这个名称是$ORACLE_HOME/network/admin/tnsnames.ora中配置的服务名,不是实例名称Sysbench测试Oracle运行测试./sysbench--test=tests/db/oltp.lua\--db-driver=oracle\--oltp-table-name=sysbench\--oltp-table-size=10000000\--oltp-tables-count=10\--oracle-db=testdb\--oracle-user=sysbench\--oracle-password=sysbench\--max-time=300\--max-requests=100000000\--num-threads=32\--report-interval=1\run我对Sysbench做的一点改进改进说明在githua上放了三个工程https://github.com/osdba/sysbench2放了原先的源代码https://github.com/osdba/sysbench_lua把lua脚本分离出来,这部分脚本针对PostgreSQL和Oracle有一些改进https://github.com/osdba/sysbench_bin放了在Redhat6.X下编译好的二进制可执行文件sysbench_pg:对应PostgreSQL的版本sysbench_ora:对应Oracle的版本sysbench_mysql:对应MySQL的版本使用我的Sysbench从githua上把我的sysbench拉下来gitclonehttps://github.com/osdba/sysbench_bin.gitgitclonehttps://github.com/osdba/sysbench_luamkdirsysbenchcdsysbenchcp../sysbench_bin/*.cp-r../sysbench_lua/lua.使用我的Sysbench在githua上放了三个工程gitclonehttps://github.com/osdba/sysbench_bin.gitgitclonehttps://github.com/osdba/sysbench_luamkdirsysbenchcdsysbenchcp../sysbench_bin/bin/*.cp-r../sysbench_lua/lua.使用我的Sysbench因为命令较长,写一个测试脚本test.sh:#!/bin/bash./sysbench_pg--test=lua/oltp.lua\--db-driver=pgsql\--pgsql-host=127.0.0.1\--pgsql-port=5432\--pgsql-user=postgres\--pgsql-password=sysbench\--pgsql-db=postgres\--oltp-tables-count=1\--oltp-table-size=100000\--num-threads=32\--max-requests=100000000\--max-time=300\--report-interval=1\$*使用我的Sysbench准备测试数据[postgres@pg01sysbench]$./test.shpreparesysbench0.5:multi-threadedsystemevaluationbenchmarkCreatingtable'sbtest1'...Inserting100000recordsinto'sbtest1’使用我的Sysbench开始测试数据[postgres@pg01sysbench]$./test.shrunsysbench0.5:multi-threadedsystemevaluationbenchmarkRunningthetestwithfollowingoptions:Numberofthreads:32Reportintermediateresultsevery1second(s)Randomnumbergeneratorseedis0andwillbeignoredThreadsstarted![1s]threads:32,tps:179.45,reads/s:2864.73,writes/s:756.65,responsetime:296.61ms(95%)[2s]threads:32,tps:290.98,reads/s:4080.77,writes/s:1167.93,responsetime:149.80ms(95%)[3s]threads:32,tps:303.67,reads/s:4248.45,writes/s:1223.69,responsetime:152.02ms(95%)[4s]threads:32,tps:319.15,reads/s:4481.10,writes/s:1274.60,responsetime:131.83ms(95%)使用我的Sysbench测试结果lua脚本的修改说明脚本关系说明oltp.lua脚本使用dofile包含了common.luadofile(pathtest.."common.lua")common.lua脚本主要负责生成测试数据主要修改common.lua:原来的脚本没有支持Oracle数据库oltp.lua:原来的脚本PostgreSQL下不能正确运行测试lua脚本的修改说明update_index.lua=>update_index_with_commit.lua原先的脚本中每次操作没有commit语句,这样在测试的输出中tps值为零。tps全是零lua脚本的修改说明直接使用sysbench的接口db_prepare函数时不能正确运行问题原因:sysbench中代码有问题解决 办法 鲁班奖评选办法下载鲁班奖评选办法下载鲁班奖评选办法下载企业年金办法下载企业年金办法下载 :PREPAREtestplan(text,int)ASUPDATEsysbench1SETc=$1WHEREid=$2;EXECUTEtestplan(‘xxxx’,1);lua脚本的其它改进update_index.lua=>update_index_ora.lua原先的脚本测试Oracle时,Sysbench本身会占用大量的CPU,导致数据库本身的压力上不去。原因是Sysbench中原先的drv_oracle.c代码中访问Oracle的部分不够优化,每次执行时都会调用rc=OCIHandleAlloc(ora_env,...)和OCIHandleFree(stmt,OCI_HTYPE_STMT);而多线程下这两个函数的调用会导致了强烈的锁竞争。解决办法:使用绑定变量,但使用绑定变量也有一些问题,问题描述见下一页lua脚本的其它改进Oracle中直接使用Sysbech提供的绑定变量函数db_prepare的问题直接报错,不能正常运行原因是代码有BUG,但可以绕过去。解决方法是另加一个无用的字符串类型的绑定变量具体代码见下一页:lua脚本的其它改进Sysbech测试Oracle绕过绑定变量bug的方法:functionthread_init(thread_id)localtable_nameset_vars()table_name="sbtest"..(thread_id+1)stmt=db_prepare("UPDATE"..table_name.."SETk=k+1WHEREid=to_number(:x)and'a'=:y")params={}params[1]='444'params[2]='a'db_bind_param(stmt,params)endfunctionevent(thread_id)localtable_nameparams[1]=string.format("%d",sb_rand(1,oltp_table_size))params[2]='a'db_execute(stmt)db_query('COMMIT')end增加了一个无用的绑定变量:y其它一些问题的解决在某此机器上sysbench占用的CPU比较高,而另一些机器却没有这么高有可能是机器或操作系统不支持tsc时钟或没有使用上tsc时钟[root@pg01~]#cat/sys/devices/system/clocksource/clocksource0/available_clocksourcetscheptacpi_pm[root@pg01~]#cat/sys/devices/system/clocksource/clocksource0/current_clocksourcetscQ&A我的网名:osdba我的微博:osdba
本文档为【使用Sysbench测试PostgreSQL、Oracle、MySQL】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xrp27580
暂无简介~
格式:ppt
大小:693KB
软件:PowerPoint
页数:
分类:生活休闲
上传时间:2019-03-07
浏览量: