




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、使用Sysbench测试PostgreSQL/Oracle/MySQL唐成2015.09.19为什么使用Sysbench?2为什么使用Sysbench?简单性实时显示支持多种数据库可扩展03.简单性只有一个sysbench可执行文件,简单易用04.实时显示可以象iostat等工具一样每秒显示一次结果01.多种数据库02.可扩展可以用lua脚本灵活写不同的测试用例少有的能同时支持PostgreSQL/MySQL/Oracle的测试工具3Sysbench的编译4在PostgreSQL下的编译 安装依赖包 yum install automake yum install libtool.x86_64
2、 编译命令./autogen.sh./configure -without-mysql -without-drizzle -with-pgsql -with-pgsql-includes=/usr/local/pgsql/include -with-pgsql-libs=/usr/local/pgsql/libmake PGSQL_LIBS=-L/usr/local/pgsql/lib -lpq PGSQL_CFLAGS=-I/usr/local/pgsql/include”在Oracle下的编译 安装依赖包 yum install automake yum install libtool.x
3、86_64 编译命令./autogen.sh./configure -with-oracle -without-mysql -without-drizzlemake ORA_LIBS=-L$ORACLE_HOME/lib -lclntsh ORA_CFLAGS=-I$ORACLE_HOME/rdbms/demo -I$ORACLE_HOME/rdbms/publicSysbench的基本使用方法7运行Sysbench一般方法 Prepare命令 用于生成测试数据 命令行格式为sysbench prepare Run命令 运行测试的命令 命令行格式为sysbench run Cleanup命令
4、清除测试数据 命令行格式为sysbench cleanup指定测试所用的lua脚本的路径Sysbench测试PG 准备测试数据的命令sysbench -test=sysbench_lua/oltp_pg.lua -db-driver=pgsql -pgsql-host= -pgsql-port=5432 -pgsql-user=osdba -pgsql-password=sysbench -pgsql-db=testdb -oltp-tables-count=10 -oltp-table-size=10000000 prepare指定如何连接到PostgreSQL数据库指定建
5、多少张测试表。本例子中建10张测试表。每张测试表的结构及数据量完全相同。指定每表测试表中生成多少行测试数据,本例子生成1千万行测试数据。Sysbench测试PG 运行测试sysbench -test=sysbench_lua/oltp_pg.lua -db-driver=pgsql -pgsql-host= -pgsql-port=5432 -pgsql-user=osdba -pgsql-password=sysbench -pgsql-db=testdb -oltp-tables-count=10 -oltp-table-size=10000000 -num-thread
6、s=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=1
7、0 -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=sys
8、bench -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做的一点改进13改进说明 在githua上放了三个工程 https:/ 放了原先的源代码 https:/ 把lua脚本分离出来,这部分脚本针对PostgreSQL和Oracle有一些改进
9、https:/ 放了在Redhat 6.X下编译好的二进制可执行文件 sysbench_pg:对应PostgreSQL的版本 sysbench_ora:对应Oracle的版本 sysbench_mysql:对应MySQL的版本使用我的Sysbench 从githua上把我的sysbench拉下来 git clone https:/ git clone https:/ mkdir sysbench cd sysbench cp ./sysbench_bin/* . cp -r ./sysbench_lua/lua .使用我的Sysbench 在githua上放了三个工程 git clone ht
10、tps:/ git clone https:/ mkdir sysbench cd sysbench cp ./sysbench_bin/bin/* . cp -r ./sysbench_lua/lua .使用我的Sysbench 因为命令较长,写一个测试脚本test.sh:#!/bin/bash./sysbench_pg -test=lua/oltp.lua -db-driver=pgsql -pgsql-host= -pgsql-port=5432 -pgsql-user=postgres -pgsql-password=sysbench -pgsql-db=postgr
11、es -oltp-tables-count=1 -oltp-table-size=100000 -num-threads=32 -max-requests=100000000 -max-time=300 -report-interval=1 $*使用我的Sysbench 准备测试数据postgrespg01 sysbench$ ./test.sh preparesysbench 0.5: multi-threaded system evaluation benchmarkCreating table sbtest1.Inserting 100000 records into sbtest1使用
12、我的Sysbench 开始测试数据postgrespg01 sysbench$ ./test.sh runsysbench 0.5: multi-threaded system evaluation benchmarkRunning the test with following options:Number of threads: 32Report intermediate results every 1 second(s)Random number generator seed is 0 and will be ignoredThreads started! 1s threads: 32,
13、 tps: 179.45, reads/s: 2864.73, writes/s: 756.65, response time: 296.61ms (95%) 2s threads: 32, tps: 290.98, reads/s: 4080.77, writes/s: 1167.93, response time: 149.80ms (95%) 3s threads: 32, tps: 303.67, reads/s: 4248.45, writes/s: 1223.69, response time: 152.02ms (95%) 4s threads: 32, tps: 319.15,
14、 reads/s: 4481.10, writes/s: 1274.60, response time: 131.83ms (95%)使用我的Sysbench 测试结果lua脚本的修改说明 脚本关系说明 oltp.lua脚本使用dofile包含了common.lua dofile(pathtest . common.lua) common.lua脚本主要负责生成测试数据 主要修改 common.lua:原来的脚本没有支持Oracle数据库 oltp.lua:原来的脚本PostgreSQL下不能正确运行测试lua脚本的修改说明 update_index.lua=update_index_with
15、_commit.lua 原先的脚本中每次操作没有commit语句,这样在测试的输出中tps值为零。tps全是零lua脚本的修改说明 直接使用sysbench的接口db_prepare函数时不能正确运行 问题原因: sysbench中代码有问题 解决办法: PREPARE testplan (text, int) AS UPDATE sysbench1 SET c=$1 WHERE id=$2; EXECUTE testplan(xxxx,1);lua脚本的其它改进 update_index.lua = update_index_ora.lua 原先的脚本测试Oracle时,Sysbench本身
16、会占用大量的CPU,导致数据库本身的压力上不去。 原因是Sysbench中原先的drv_oracle.c代码中访问Oracle的部分不够优化,每次执行时都会调用rc = OCIHandleAlloc(ora_env,.)和OCIHandleFree(stmt, OCI_HTYPE_STMT);而多线程下这两个函数的调用会导致了强烈的锁竞争。 解决办法:使用绑定变量,但使用绑定变量也有一些问题,问题描述见下一页lua脚本的其它改进 Oracle中直接使用Sysbech提供的绑定变量函数db_prepare的问题 直接报错,不能正常运行 原因是代码有BUG,但可以绕过去。 解决方法是另加一个无用的
17、字符串类型的绑定变量 具体代码见下一页:lua脚本的其它改进 Sysbech测试Oracle绕过绑定变量bug的方法:function thread_init(thread_id) local table_name set_vars() table_name = sbtest. (thread_id+1) stmt = db_prepare(UPDATE . table_name . SET k=k+1 WHERE id=to_number(:x) and a = :y) params = params1 = 444 params2 = a db_bind_param(stmt, params)endfunction event(thread_id) local table_name params1 = string.format(%d, sb_rand(1, oltp_table_size) params2 = a db_execute(stmt) db_query(COMMIT)end增加了一个无用的绑定变量:y其它一些问题的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 果酒代理协议书
- 标准劳动协议书
- 2025年中级社会法规试题及答案
- 2025年中国男篮考试题库及答案
- 2025年python考试题目及答案
- 2025年制造业供应链数字化协同下的供应链协同风险管理与实践
- 树木嫁接协议书
- 校产赠与协议书
- 校园保密协议书
- 校园秩序协议书
- 2025至2030中国线式溶解氧变送器行业项目调研及市场前景预测评估报告
- 银监会联合贷款管理办法
- 安全生产责任制落实评价
- 公司食堂燃气改造方案
- 2025年事业单位公基考试题库及答案(100题)
- 数据资产目录建设方案
- 2023年江苏省社区工作者人员招聘考试题库及答案解析
- 中职语文专项题目及答案
- 医院关于开展整治重复医疗检查检验、违规收费问题工作实施方案的通知
- 大数据与会计专业的毕业论文
- 失智老人护理课件
评论
0/150
提交评论