在前文 《阿里云自建MySQL的性能测试(多配置对比)》中,我们发现MySQL 8比MySQL5.7的性能低了33%,今天有空,重新探索了下原因(然而并没有彻底解决)。
1 默认参数差异
根据查阅资料,两者主要有以下默认参数差异:
- have_query_cache,8中cache被干没了
- bin-log,8开启,5.7没开启
- innodb_flush_neighbors,8关闭,5.7开启
2 实验1:5.7关闭cache
mysql -pmysql123 -e[......]
在前文 《阿里云自建MySQL的性能测试(多配置对比)》中,我们发现MySQL 8比MySQL5.7的性能低了33%,今天有空,重新探索了下原因(然而并没有彻底解决)。
1 默认参数差异
根据查阅资料,两者主要有以下默认参数差异:
2 实验1:5.7关闭cache
mysql -pmysql123 -e[......]
由于MySQL设计的编码不合理,默认utf8是不能存储emoji表情的,会报错。
1 修改MySQL表的数据集
alter table tbl_xxx character set utf8mb4;
2 修改yaml配置
datasource:
tomcat:
initSQL: SET NAMES utf8mb4
url: jdbc:mysql://xxxxxx-writer:3306/xxxx?Unicode=true&character[......]
delete from YOUR_TABLE where id not in (select id from (select max(id) as id from YOUR_TABLE group by UNIQUE_FIELD) as b);
[......]
ALTER TABLE xxx CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
[......]