atjiu / pybbs

更实用的Java开发的社区(论坛),Better use of Java development community (forum)
GNU Affero General Public License v3.0
1.84k stars 706 forks source link

修改数据库表引擎,提高分页查询中统计行数的性能 #119

Closed wtune closed 4 years ago

wtune commented 4 years ago

user, tag, sensitive_words三个表会生成如下的请求:

SELECT COUNT(1) FROM user

这是因为这三个表的 selectAll 函数使用到了 MyBatis-Plus 的分页功能。MyBatis-Plus 在进行分页功能时,会查询表的行数,以便分页功能的进行。

数据库中的表使用了 InnoDB 存储引擎,其实现使得要查询表的行数必须进行一次全表扫描,开销很大。而 MyISAM 存储引擎则将表的行数作为原数据存储,查询表的行数非常快。因此如果将这三个表的存储引擎改为 MyISAM 的话,在数据量较大的时候对性能有较大的优化。

参考:

MySQL count

MyBatis-Plus 分页

atjiu commented 4 years ago

这个pr我就不合并了,数据库的表引擎都保持一致比较好,一直用的都是innodb,见谅