MariaDB从10.3升级到10.11后特定表出现慢查询问题
MariaDB从10.3升级到10.11后特定表出现慢查询问题
我最近把咱们的数据库服务器从MariaDB 10.3升级到了10.11,结果其中一张表的查询速度显著变慢了。就拿下面这条简单查询来说,在10.11上要跑大概10秒,但在10.3上瞬间就能完成。这张表大概有67000条记录,只要查询的过滤条件没用到索引,速度就会拉胯。我实在搞不懂,为什么升级后只有这一张表出问题——我们还有其他超过10万条记录的表,全表扫描都能秒出结果。这张表需要支持多列查询,所以我不想给所有列都加索引,毕竟升级前完全没这个必要啊。
SELECT * FROM student_repository WHERE LAST_NAME = "DOE"
这张表的建表语句如下:
CREATE TABLE `student_repository` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT, `FIRST_NAME` varchar(255) DEFAULT NULL, `LAST_NAME` varchar(255) DEFAULT NULL, `AID_YEAR` int(11) DEFAULT NULL, `TRANSACTION_NUMBER` int(11) DEFAULT NULL, `ISIR_LINE` varchar(15000) DEFAULT NULL, `ISIR_HEADER_ID` bigint(20) DEFAULT NULL, `SESSION_ID` bigint(20) NOT NULL, `SSN_LAST_FOUR` varchar(4) DEFAULT NULL, `ED_HASH_TRANSFER` varchar(255) DEFAULT NULL, `ED_HASH_CURRENT` varchar(255) DEFAULT NULL, `ED_HASH_ORIGINAL` varchar(255) DEFAULT NULL, `EXPORTED_BY_USER_ID` varchar(255) DEFAULT NULL, `EXPORTED_DATE` datetime DEFAULT NULL, `SID` varchar(255) DEFAULT NULL, `SCHOOL_CODE` varchar(255) DEFAULT NULL, `STATUS` varchar(255) DEFAULT NULL, `STUDENT_ID_FK` bigint(20) DEFAULT NULL, `EOP` bit(1) DEFAULT b'0', `ED_HASH` varchar(255) DEFAULT NULL, PRIMARY KEY (`ID`), KEY `idx_student_repository_ED_HASH_ORIGINAL` (`ED_HASH_ORIGINAL`), KEY `idx_student_repository_STUDENT_ID_FK` (`STUDENT_ID_FK`), KEY `idx_student_repository_ED_HASH_CURRENT` (`ED_HASH_CURRENT`), KEY `idx_student_repository_ED_HASH_TRANSFER` (`ED_HASH_TRANSFER`) ) ENGINE=InnoDB AUTO_INCREMENT=134634 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
我已经尝试过这些操作,但都没解决问题:
- 对表执行
ANALYZE TABLE更新统计信息,没用 - 对比两个版本的服务器配置参数,没找到可能导致慢查询的差异
- 查看了执行计划,发现10.3和10.11有区别,但不确定具体是哪部分影响了性能:
- 10.3执行计划
- 10.11执行计划
- 10.3 Explain结果
- 10.11 Explain结果
另外还有个奇怪的点:10.3的processlist里能看到InnoDB purge线程,但10.11里没有。我怀疑是不是这个线程缺失导致了性能问题,但不知道怎么手动启动它。
备注:内容来源于stack exchange,提问作者Nate L
相关产品推荐
相关产品推荐

