美文网首页
Gaussdb 测试

Gaussdb 测试

作者: crazysungogogo | 来源:发表于2020-09-11 11:03 被阅读0次

用mysqlslap工具对华为GaussDb mysql版 16核64G版进行了性能测试

测试数据生成

 //创建表
DROP TABLE IF EXISTS `test`;
create table test(id bigint AUTO_INCREMENT,data json ,PRIMARY KEY (`id`)) ;
// 生成虚拟列
alter table test add name varchar(50) generated always as(data->"$.name") virtual;
//添加索引
 alter table test add index ix_name(name);

//创建存储过程,
DELIMITER $$
DROP PROCEDURE IF EXISTS `addTest`$$
CREATE  PROCEDURE `addTest`(IN total int,IN body int)
BEGIN
    DECLARE i INT UNSIGNED DEFAULT 1;
    SET i=0;
    set @str='asbhjakdshkjahgdkjghaskdhkhaskdjlasjldjlsajldjlksajdkljklasjdkhwoiqdknkasndkjbjkbacjskjcbkahkhsdihaskhdkhkahskdhkjhaskhdkhaskbdkbaskjbdkbkjbckbakbdjksajkdhkashkhjskdhkjaskbscxkjasbkqwoueiyrwqutyrurtu';

    loop1: LOOP
      SET i=i+1;
      if i>total then
      LEAVE loop1;
      end if;
      set @t=JSON_OBJECT("name",SUBSTRING(@str,FLOOR(rand()*(length(@str)/3-20)),5+FLOOR(rand()*body)));
      insert INTO test(`data`) values (@t);
      select i,total-i;
    END LOOP loop1;
END$$
DELIMITER ;

//mysqlslap调用存储过程 100个并发 调用生成
./mysqlslap --create-schema="test" --query="call addTest(1000000,50)"  --concurrency=50   -uroot -pxxx -h192.168.0.1

//测试读
//不走索引
select * from test where data->>'$.name' like 'a%'
//走索引
./mysqlslap --create-schema="test" --query="select * from test where name like '\"a%' limit 20" --c=100   -uroot -pxxx  -h192.168.0.1

结论
1、gaussdb 写7000/s cpu 50% 内存20%
2、用存储过程生成测试数据效率较高
3、在1千万数据时不走索引查json数据 9s
4、在亿级数据量走虚拟列索引时单个查询0.2s 并发查询时效率有所下降 模拟200并发同时查询 1s多。前缀索引。
5、count 查询 select count(*) from test; 5s count查询还是一般般

对比一下阿里的adb

查询结果 执行计划

特别注意的是mysql8 的虚拟列 json格式转字符串的会带上引号 查询时需要加上" 用json查询时不带"

相关文章

网友评论

      本文标题:Gaussdb 测试

      本文链接:https://www.haomeiwen.com/subject/ocaemftx.html