美文网首页
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