性能调优

【问题】

任务管理中的查阅功能,随着使用时间,数据量也是到了几十万条,导致请求响应也到了10s左右,影响到了用户体验,所以需进行性能调用。

【优化】

经过排查了sql语句,业务代码等逻辑都正常,且已使用过mybatis的二级缓存进行响应前端,目前只剩下表的优化。

1. 优化表结构

选择合适的数据类型,使用最小的数据类型存储数据,减少存储空间和 I/O 开销。

例如:使用 INT 而不是 BIGINT,使用 VARCHAR(50) 而不是 VARCHAR(255)。

2. 使用索引

注意:避免过度增加索引,索引虽然会增加查询效率,但也会给插入删除等操作变慢。

3. 分析

通过查询对比加索引和不加索引的区别,检验是否成功使用到。

发现查询速度提升了27倍多,再检查下整体功能。

查询效率也是提高了90多倍,一点卡顿效果也没有了,问题解决,还有些其它优化思路就先不用了。

【其它方法】

4. 优化服务器配置

  1. 调整缓冲池大小
    对于 InnoDB 存储引擎,调整 innodb_buffer_pool_size,使其足够大以缓存数据和索引。

  2. 调整查询缓存
    在 MySQL 8.0 之前,可以使用查询缓存(Query Cache)加速重复查询。
    注意:MySQL 8.0 已移除查询缓存。

  3. 调整连接数
    根据并发请求量调整最大连接数。

5. 使用缓存

  1. 应用层缓存
    使用 Redis、Memcached 等缓存工具缓存热点数据,减少数据库查询压力。

  2. 数据库缓存
    使用 InnoDB 缓冲池缓存数据和索引。

6. 读写分离与分库分表

  1. 读写分离
    将读操作和写操作分离到不同的数据库实例,减轻主库压力。

  2. 分库分表
    对大数据量表进行分库分表,分散查询压力。


__EOF__

  • 本文作者: 写一行代码二次元老婆全白给了
  • 本文链接: https://www.cnblogs.com/lin02/p/18711093
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • posted @ 2025-02-12 10:39  changlinlo  阅读(5)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · DeepSeek-R1本地部署如何选择适合你的版本?看这里
    · 开源的 DeepSeek-R1「GitHub 热点速览」
    · 传国玉玺易主,ai.com竟然跳转到国产AI
    · 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
    · 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
    点击右上角即可分享
    微信分享提示