测试环境:
本机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阿里,全文检索

网友评论