前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL毫秒必争的优化场景

MySQL毫秒必争的优化场景

作者头像
jeanron100
发布2019-07-30 13:59:23
9380
发布2019-07-30 13:59:23
举报
文章被收录于专栏:杨建荣的学习笔记

这几天在做一个极限优化的问题,问题的瓶颈不是几分钟优化到几秒钟,而是需要从近2毫秒优化到1毫秒以内,至于这个指标1毫秒到底是怎么来的,这是一个业务层面可见的指标体系,即如果超过了一定的延迟范围,则整个数据通道都会产生阻塞,所以优化目标有些过于清晰,导致整个优化过程还是蛮有压力的。

整体的系统架构是这样的三层结构,LVS使用负载均衡和转发,而中间件层使用了路由转发。数据分片节点有8个。

对于读写延迟,指标是不一样的,对于读延迟是在1毫秒以内,而写延迟是在5毫秒以内。可参考的系统使用了存储,所以这是和MySQL的一种平行的较量,即商业数据库采用了存储来满足IO需求,而MySQL使用水平扩展来提高IO吞吐率。

整个优化的过程有一个重要的拐点,那就是初期会认为主要的性能开销是在LVS的三层架构的通信代价层面,所以在开始的时候是使用了2个中间件,测试时由LVS模式改造为直连中间件的模式,这种模式下,性能不降反升,从我们的分析来看,感觉主要是单个中间件层面的使用情况有限。

而通过负载均衡可以对性能进行扩展,所以改造为3个中间件节点之后,性能有了明显的提升,即从1.5毫秒优化到了1.1毫秒。

ID

改进方案

读延迟(平均值)

写延迟(平均值)

1

LVS模式测试,2个中间件

1.5ms

5.0ms

2

由LVS模式改进为直连中间件,

1.6ms

5.2ms

只连接一个中间件节点

3

切换为LVS模式,2个中间件

1.5ms

5.0ms

4

增加积分中间件,

1.1ms

4.5ms

由2个中间件扩展为3个

5

修改中间件连接数配置,

1.1ms

4.5ms

分片节点由200缩减为100

6

修改SQL语句逻辑

0.8ms

3.2ms

7

调整为2倍压力

0.8ms

3.0ms

8

调整为4倍压力(压测1个多小时)

0.8ms

3.3ms

而在这个过程中,尝试了很多种方案,都收效甚微,比较明显的改进还是在SQL层面,有一条SQL语句,使用了主键,语句类似于:

select count(1),value from test_data where id=xxx;

这条语句优化为:

select value from test_data where id=xxxx;

之后,性能从1.1毫秒直接提升了0.3毫秒,到了0.8毫秒。

达到了性能标准之后,让人提心吊胆的阶段就是把目前的压力提高2倍,是否能够支持1毫秒以内的性能延迟。

通过测试来看,还是很稳定的,平均延迟没有任何变化,而经过业务高峰期的洗礼之后,整个延迟的平均值稳定在0.8毫秒,在这个基础上,我们继续进行压力测试,把压力提高到了4倍,读写延迟依然比较稳定,所以到了这个阶段之后,我们的性能测试算是有了一个好的开始。

当然从后续的规划来看使用LVS模式需要在同一个网段,对于跨IDC的场景来说,还是存在一些限制情况,所以我们也在考虑进行consul方向的压力测试,来评估在这种业务压力之下,consul的性能表现。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档