基于MYSQL5.6查询速度慢的问题

        2个月前,公司同事给提出一个问题,说是公司的销售订单每翻一页最少要等个4-5秒钟,最长得等十几秒,这对于每天审批订单来说简直就是折磨。好吧,因为这个模块是前离职同事写的,我想的第一个解决方式就是优化代码,但看了几百行代码我放弃了,毕竟是别人写的不好,优化还不如自己在写一套,没几天代码写好了,开始测试,我了个天,一点效果没有,该慢还是慢。唉,无奈还是找度娘吧!一查真的长知识了,很庆幸因这次机会我又丰满了一些羽翼!

       首先,我们的项目是二次开发,mysql升级为5.6后,之后新建的数据表引擎都是默认的InnoDB,而之前的数据表引擎都是MyISAM,因为项目中有事务(InnoDB支持事务,MyISAM不支持)需求,肯定是得设置成InnoDB的。下面我将优化过程分享一下:

        1、将数据表引擎统一设置为InnoDB;

        2、修改InnoDB缓冲池大小:

        1)默认值为 16M. 这是最主要的优化选项,因为它指定 InnoDB 使用多少内存来加载数据和索引(data+indexes);

        2)针对专用MySQL服务器,建议指定为物理内存的 50-80%这个范围(我这里设置不到内存的50%,mysql会报错);

                      InnoDB缓冲池大小  =  服务器系统内存 * 50-80%

              例如,拥有64GB物理内存的机器,缓存池应该设置为50GB左右. 


        3)如果将该值设置得更大可能会存在风险,比如没有足够的空闲内存留给操作系统和依赖文件系统缓存的某些MySQL子系统(subsystem),包括二进制日志(binary logs),InnoDB事务日志(transaction logs)等

        小知识:

        1、缓冲池是主内存中的一个区域,用于在 InnoDB访问时缓存表和索引数据。缓冲池允许直接从内存访问经常使用的数据,从而加快处理速度。在专用服务器上,多达 80% 的物理内存通常分配给缓冲池

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值