mysql convert函数性能测试

得到了这样一个需求,需要按照拼音字母排序,而mysql数据库使用的是utf编码。

如果使用gbk的话,排序规则是按拼音的。

而mysql中convert函数,可以对数据进行转换。

我们对这个convert进行了简单的性能测试,下面介绍一下测试过程,以及测试结果,如有问题,请各位指出。

软硬件环境

硬件配置:2核CPU、2G内存

数据库:Mysql 5.5

表结构

1
2
3
4
5
CREATE TABLE `test_gbk` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(12) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB

测试用例

测试sql:
select * from test_gbk order by convert(name using gbk) limit 1;

select * from test_gbk order by name limit 1;”

测试目标

分别用上面两种sql测试4线程和16线程压力测试,主要关注QPS

测试结果

4万行数据

4线程,性能下降14%

16线程,性能下降17%

1万行数据

4线程,性能下降15%

16线程,性能下降15%

结论

从简单测试能够看出,性能下降在14%-17%范围内

是否要使用这个函数,大家自己斟酌。

我的建议是尽量不要使用,因为相比于前端应用,我认为数据库服务器的计算资源更加珍贵。