小公司订单实时性强的业务系统mysql优化思路

49 阅读1分钟

背景

小公司订单实时性强的业务系统

大表热点数据:订单表 & 订单处理表【处理表是订单表的10-20倍 或更多】

初步方案

处理表中的大部失败的记录,在完成后,基本上处无用状态。对这此内容进行删除操作。

调mysql服务器配置 由8c16----->16c32g ; ps 土豪装备, 对当数据量来说,这不是主要的, 主要的还是mysql 有一个重要的参数需要调整

-- 查看innodb配置参数值
show VARIABLES like 'innodb_%';

show VARIABLES like '%connections%';


-- 计算当前buff_pool_size 以G显示。
select @@innodb_buffer_pool_size/1024/1024/1024;

set global innodb_buffer_pool_size = 10737418240; -- 10G

-- 设置 缓存存大小, 尽可以的让它大些,可以减少io成本
set global innodb_buffer_pool_size = 27917287424; --26G

set global innodb_buffer_pool_size = 21474836480; --20G

业务逻辑分析 :在对mysql配置进行升级之后,仍有慢查询,此时需要对业务代码进行分析。分析在当前数据量情况下,sql语句的执行计划。特别需要对all 全表查询的的语句进行分析, 建立相对应的索引 。

ps: 创建索引时,会对表的更新、插入、删除有影响。 视情况尽可能选择在低峰业务时操作。

本次对处理表增加一个时间索引,查询速度提高10倍。