美文网首页
MySql, 阿里云porlarDb的模糊检索、全文检索效率测试

MySql, 阿里云porlarDb的模糊检索、全文检索效率测试

作者: 许国标 | 来源:发表于2022-02-21 15:09 被阅读0次

    测试环境:

    本机Mysql,版本5.7.9, win10,中等配置笔记本电脑

    阿里云porlarDb, 2核4G入门配置

    测试表:

    在本机和阿里云数据库中,都创建4个表, 

    test_fulltext_03、test_fulltext_04、test_fulltext_05、test_fulltext_06

    表结构相同,都是id,province、name、content 4个varchar字段

    测试数据准备

    用java先生成300万行和500万行的两个文本文件,内容格式如下:

    再使用 LOAD DATA命令导入表里(速度极快,300万行仅需1分钟),比如:

     LOAD DATA LOCAL INFILE "d:/temp/data3.txt" INTO TABLE test_fulltext_03 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

    表03和04都导入data3.txt, 300万行, 

    表05和06都导入data5.txt, 500万行

    对表04和06的name和content字段加上全文检索索引:

    CREATE fulltext INDEX index_name ON test_fulltext_04(name, content);

    CREATE fulltext INDEX index_name ON test_fulltext_06(name, content);

    添加后的状态

    ================ 本机Mysql  300万行 性能测试 =====================

    3.1:表03,直接用 like %%模糊匹配,检索前1000行

                  速度惊人,0.016秒

    3.2:表03,直接用 like %%模糊匹配,检索第2000 - 3000行

                  0.234秒,可以看到时间明显增加

    3.3:表03,直接用 like %%模糊匹配,检索第8000 - 9000行,2万- 2万1千行

                 可以看到耗时迅速变多

    3.4:表03,直接用 like %%模糊匹配,检索条件匹配不到数据的情况

              耗时4秒,可见like查询,时间和目标数据在什么位置有关

    3.5:表03,直接用 like %%模糊匹配,统计目标记录数量

            耗时也是4秒,可见统计数量很慢

    3.6:表03,直接用 like %%模糊匹配,统计目标记录数量,条件找不到的情况

             耗时3.8秒,还是慢

    4.1:表04,使用全文索引进行匹配,检索前1000行

      令人惊奇,0.59秒,比直接like的要慢的多

    4.2:表04,使用全文索引进行匹配,检索前2000-3000行,8000-9000行,20000-21000行

        时间也在增加,但是增幅较小,比较稳定。之前表03匹配2万-2万1千行,要2.3秒

    4.2:表04,使用全文索引进行匹配,统计数量

           这个耗时达到12秒,无法忍受的程度

    4.3:表04,使用全文索引进行匹配,统计数量,匹配不到的情况

         更慢的效果。。。

    ================ 阿里云PolarDb  300万行 性能测试 =====================

    阿里3.1:表03,直接用 like %%模糊匹配,检索前1000行

             0.09秒,基本是网络传输耗时

    阿里3.2:表03,直接用 like %%模糊匹配,检索第2000 - 3000行、8000-9000行,20000-21000行

                  时间增加的情况与本机mysql类似,性能基本持平

    阿里3.3:表03,直接用 like %%模糊匹配,检索条件匹配不到数据的情况

              耗时3秒,比本机快1秒

    阿里3.4:表03,直接用 like %%模糊匹配,统计目标记录数量

                      耗时1.3秒,比本机的4秒快很多

    阿里3.5:表03,直接用 like %%模糊匹配,统计目标记录数量,条件找不到的情况

                    耗时1.1秒,比本机的4秒快很多

    阿里4.1:表04,使用全文索引进行匹配,检索1000行,处于不同位置的数据

        速度和本机全文检索基本一致

    阿里4.2:表04,使用全文索引进行匹配,统计数量

           6秒7,虽然慢,但是比本机全文检索快很多(12秒)

    阿里4.3:表04,使用全文索引进行匹配,统计数量,匹配不到的情况

         3秒,比本机全文检索快很多(13秒)

    ================== 300万行测试的基本结论 ===========================

    1:直接like查询,数据靠前时,速度很快,越靠后越慢

    2:全文检索时,数据靠后带来的效率影响较小,性能更稳定

    3:count数量比查询数据要慢的多, 本机mysql 全文检索的count更慢

    4:阿里polarDb的like查询,性能和本机基本一致, 阿里like查询的统计数量,比本机要快的多

    5:阿里polarDb的全文检索查询,性能和本机基本一致,统计数量比本机快得多

    500万行数据的测试,方法和以上一致,只贴数据

    5.1 本机,like查询

    5.2本机,全文检索

    5.1阿里,like查询

               可以注意到,count(*)的效率远超本机

    5.2阿里,全文检索

    全文检索的 count(*),效率也远超本机

    相关文章

      网友评论

          本文标题:MySql, 阿里云porlarDb的模糊检索、全文检索效率测试

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