开发者社区> 漫天花雨> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用sysbench轻松定制自己的测试场景

简介:
+关注继续查看

PostgreSQL的压测方法

PostgreSQL里自带的pgbench可以在SQL语句级别轻松实现造数据,而MySQL自带的mysqlslap则没有那么强大了。

MySQL的压测方法

MySQL的压测方法一般有几种,安装方法到网上一搜一堆,在这里就不在累述。

mysqlslap

优点

MySQL自带,不用单独安装,随便找一台有MySQL的机器上就可以运行。
这种适用于简单的测试,比如已知SQL,想知道在某个并发下跑的性能是什么样的。

缺点

如果需要大量的数据得写成SQL文件导入,非常不方便。

例子

mysqlslap -umyuser -pmypass  -h 127.0.0.1 -P 3306 --iterations=10 --concurrency=50,100,500  --number-of-queries=1 --create-schema='mydb' --query='select * from tb where col1 = **;'

sysbench

sysbench既可以测试MySQL,又可以测试PostgreSQL,还可以自己写lua,根据自己的场景和SQL压测,非常方便。

sysbench的自带的压测场景

在oltp_common.lua可以看到sysbench自带的压测场景。

local stmt_defs = {
   point_selects = {
      "SELECT c FROM sbtest%u WHERE id=?",
      t.INT},
   simple_ranges = {
      "SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ?",
      t.INT, t.INT},
   sum_ranges = {
      "SELECT SUM(k) FROM sbtest%u WHERE id BETWEEN ? AND ?",
       t.INT, t.INT},
   order_ranges = {
      "SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c",
       t.INT, t.INT},
   distinct_ranges = {
      "SELECT DISTINCT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c",
      t.INT, t.INT},
   index_updates = {
      "UPDATE sbtest%u SET k=k+1 WHERE id=?",
      t.INT},
   non_index_updates = {
      "UPDATE sbtest%u SET c=? WHERE id=?",
      {t.CHAR, 120}, t.INT},
   deletes = {
      "DELETE FROM sbtest%u WHERE id=?",
      t.INT},
   inserts = {
      "INSERT INTO sbtest%u (id, k, c, pad) VALUES (?, ?, ?, ?)",
      t.INT, t.INT, {t.CHAR, 120}, {t.CHAR, 60}},
}

自己可以修改sysbech内置lua,根据自己的场景定义表结构和想要测试的数据量。待会细说怎么改。

bulk_insert.lua
oltp_common.lua
oltp_delete.lua
oltp_insert.lua
oltp_point_select.lua
oltp_read_only.lua
oltp_read_write.lua
oltp_update_index.lua
oltp_update_non_index.lua
oltp_write_only.lua
select_random_points.lua
select_random_ranges.lua

定义自己的表结构,修改oltp_common.lua,在187行开始,原始表:

CREATE TABLE sbtest%d(
  id %s,
  k INTEGER DEFAULT '0' NOT NULL,
  c VARCHAR(500) DEFAULT '' NOT NULL,
  pad CHAR(60) DEFAULT '' NOT NULL,
  %s (id)
) %s %s]]

自己的表结构:

CREATE TABLE sbtest%d(
  id %s,
  gmt_create datetime not null,
  gmt_modified datetime not null,
  k INTEGER DEFAULT '0' NOT NULL,
  c VARCHAR(500) DEFAULT '' NOT NULL,
  pad CHAR(60) DEFAULT '' NOT NULL,
  is_used INTEGER DEFAULT '0' NOT NULL,
  %s (id)
) %s %s]]

修改prepare准备数据部分:

       if (sysbench.opt.auto_inc) then
          query = string.format("('%s', '%s', %d, '%s', '%s')",
                                os.date("%Y-%m-%d %H:%M:%S", os.time()), os.date("%Y-%m-%d %H:%M:%S", os.time()),
                                sb_rand(1, sysbench.opt.table_size), c_val,
                                pad_val)
       else
          query = string.format("(%d, '%s', '%s', %d, '%s', '%s')",
                                i, os.date("%Y-%m-%d %H:%M:%S", os.time()), os.date("%Y-%m-%d %H:%M:%S", os.time()), sb_rand(1, sysbench.opt.table_size), c_val,
                                pad_val)
       end

修改完之后按正常的三部曲执行就可以了

sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='123456' --mysql-db=test --db-driver=mysql --tables=1 --table-size=200000000 --report-interval=10 --threads=100 --time=120 prepare/run/cleanup

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Sysbench测试神器:一条命令生成百万级测试数据
Sysbench测试神器:一条命令生成百万级测试数据
0 0
PolarDB-X 1.0-性能白皮书-PolarDB-X Sysbench测试说明
Sysbench 说明 Sysbench是一款开源的、模块化的、跨平台的多线程性能测试工具,可以执行数据库、CPU、内存、线程、IO等方面的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下验证PolarDB-X在Sysbench OLTP和SELECT场景中的性能表现。
0 0
sysbench测试mysql的QPS值
sysbench测试mysql的QPS值
1704 0
sysbench、iostat测试服务器的iops
sysbench、iostat测试服务器的iops
1106 0
使用Sysbench测试Postgresql安装及使用
1.安装sysbench sysbench默认情况下只支持MySQL,需要安装对PG的支持则需要在编译的时候添加对pgsql的支持。short version: unzip /home/tingting/Desktop/sysbench-0.
2541 0
软件测试|测试平台vue3 模版语法
软件测试|测试平台vue3 模版语法
0 0
+关注
漫天花雨
支持阿里云数据库,希望能为更多云用户服务;之前支持阿里巴巴集团数据库,承担了业务的数据库设计,架构优化,异地多活,库存热点优化,稳定性保障等工作,经历数次双11,有丰富的实战和优化经验和对业务的敏感度。关注数据库、数据仓库、大数据等领域。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ICA安全标准组测试认证分享
立即下载
MaxCompute基于BigBench标准的最新测试进展
立即下载
用AI高效测试移动应用
立即下载