Mysql 瓶颈优化(从小业务到大业务的转变)

假设一个网站(discuz)从最开始访问量很小做到日pv千万,我们来推测一下它的mysql服务器架构演变过程。

1. 第一阶段

网站访问量日pv量级在1w以下。单台机器跑web和db,不需要做架构层调优(比如,不需要增加memcached缓存)。此时,数据往往都是每日冷备份的,但有时候如果考虑数据安全性,会搭建一个mysql主从。

2. 第二阶段

网站访问量日pv达到几万。此时单台机器已经有点负载,需要我们把web和db分开,需要搭建memcached服务作为缓存。也就是说,在这个阶段,我们还可以使用单台机器跑mysql去承担整个网站的数据存储和查询。如果做mysql主从,目的也是为了数据安全性。

3. 第三阶段

网站访问量日pv达到几十万。单台机器虽然也可以支撑,但是需要的机器配置要比之前的机器好很多。如果经费允许,可以购买配置很高的机器来跑mysql服务,但是并不是说,配置翻倍,性能也翻倍,到了一定阶段配置增加已经不能带来性能的增加。所以,此阶段,我们会想到做mysql服务的集群,也就是说我们可以拿多台机器跑mysql。但,mysql的集群和web集群是不一样的,我们需要考虑数据的一致性,所以不能简单套用做web集群的方式(lvs,nginx代理)。可以做的架构是,mysql主从,一主多从。为了保证架构的健壮和数据完整,主只能是一个,从可以是多个。
还有一个问题,我们需要想到,就是在前端web层,我们的程序里面指定了mysql机器的ip,那么当mysql机器有多台时,程序里面如何去配置?discuz,其实有一个功能,支持mysql读写分离。即,我们可以拿多台机器跑mysql,其中一台写,其他多台是读,我们只需要把读和写的ip分别配置到程序中,程序自动会去区分机器。当然,如果不使用discuz自带的配置,我们还可以引用一个软件叫做 mysql-proxy, 使用他来实现读写分离。它支持一主多从的模式。

4. 第四阶段

    网站访问量日pv到几百万。之前的一主多从模式已经遇到瓶颈,因为当网站访问量变大,读数据库的量也会越来越大,我们需要多加一些从进来,但是从的数量增加到数十台时,由于主需要把bin-log全部分发到所有从上,那么这个过程本身就是一件很繁琐的事情,再加上频繁读取,势必会造成从上同步过来的数据有很大延迟。所以,我们可以做一个优化,把mysql原来的一主多从变为一主一从,然后从作为其他从的主,而前面的主只负责网站业务的写入,而后面的从不负责网站任何业务,只负责给其他从同步bin-log。这样还可以继续多叠加几个从库。

5. 第五阶段

    网站访问量日pv到1千万的时候,我们发现,网站的写入量非常大,我们之前架构中只有一个主,这里的主已经成为瓶颈了。所以,需要再近一步做出调整。比如,我们可以把业务分模块,把用户相关的单独分离出来,把权限、积分等也可以分离出来单独跑一个库,然后再做主从,也就是所谓的分库。当然也可以换一个纬度,把访问量或者写入量大的表单独分离出来,跑在一台服务器上,也可以把一个表分成多个小表。这一步操作,涉及到一些程序上的改动,所以需要事先和开发同事做好沟通和设计。总之,这一步要做的就是分库分表。再往后发展,继续把大表分小表即可。 而国内阿里淘宝网站的数据量是巨量的,他们的数据库全部都是mysql,他们的mysql架构就是遵循分库分表这个原则的,只不过他们划分规则会有很多纬度,比如可以根据地域划分,可以根据买家、卖家划分,可以根据时间划分等等。

转载于:https://blog.51cto.com/zhongliang/2152921

Mysql 瓶颈优化相关推荐

  1. MySQL 瓶颈分析及优化

    简介 通过sysbench的oltp_read_write测试来模拟业务压力.以此来给指定的硬件环境配置一份比较合理的MySQL配置文件. 环境介绍 硬件配置 软件环境 优化层级与指导思想 优化层级 ...

  2. mysql字段优化_MySQL优化(1):字段的设计

    Web项目中,当Java或者Go等语言速度提升到瓶颈的时候,我们需要关心MySQL的优化 可以优化的方面有很多:设计表.负载均衡.读写分离.SQL语句优化等 (1)IP地址设计 例如我们需要存储IP地 ...

  3. mysql语句生成工具_强烈推荐一款MySQL语句优化辅助工具,值得收藏

    概述 优化SQL,是DBA常见的工作之一.如何高效.快速地优化一条语句,是每个DBA经常要面对的一个问题.对于一名DBA来说,掌握一门语言配合自己的工作是非常必要的.相对于shell的简单.perl的 ...

  4. mysql半连接_mysql表的半连接,反连接导致的mysql性能优化剖析

    [导读] 关于Oracle的半连接,反连接,我一直认为这是一个能讲很长时间的话题,所以在我的新书<Oracle DBA工作笔记>中讲性能优化的时候,我花... 关于Oracle的半连接,反 ...

  5. MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...

    为什么80%的码农都做不了架构师?>>>    文章简介 玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队.他经历过阿里历年双11实战考验,积累了7年对阿 ...

  6. 宝塔mysql优化_宝塔面板下实现MySQL性能优化处理

    在PHP+MYSQL架构网站运行过程中,往往会遇到各种性能问题影响,如MySQL.PHP.CPU.磁盘IO.缓存等,其中MySQL瓶颈就是最常见也最难解决的一种影响网站性能的因素:通常,我们会使用re ...

  7. MySQL性能优化速记

    MySQL性能优化速记http://www.bieryun.com/3064.html 总结自<MySQL 5.7从入门到精通(视频教学版)>刘增杰编著. 优化简介 MySQL数据库优化是 ...

  8. MySQL SQL优化

    前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 ...

  9. MySQL第11天:MySQL索引优化分析之性能分析

    MySQL索引优化分析之性能分析 一.MySQL Query Optimizer 二.MySQL常见瓶颈 三.Explain(执行计划) 1.什么是执行计划?          2.执行计划能干什么? ...

最新文章

  1. MySQL数据类型--------浮点类型实战
  2. 几种开源软件名字的读音
  3. Oracle init.ora常用配置详解
  4. ABAP动态取得数据的方法
  5. 放置奇兵 算法 月度活动 破碎时空记录 1-3关
  6. jquery实现抽奖系统
  7. android webview 加载进度和自定义404错误页面
  8. YOLOv5算法详解
  9. JMetro版本11.6和8.6发布
  10. Eclipse 格式化代码时不换行与自动换行WordWrap插件
  11. hadoop命令使用put上传文件报错
  12. 计算机网络管理工程师技术水平证书,计算机网络管理工程师技术水平证书有什么用...
  13. only 64-bit build environment are supported beyong froyo/2.2
  14. 剖析矩阵的本质及其意义
  15. 中国双酚F树脂市场趋势报告、技术动态创新及市场预测
  16. LQR:Linear Quadratic Regulator 线性二次型调节器
  17. 【复变函数与积分变换】第1章 复数——1.1 复数的定义及其四则运算
  18. ImageJ实践——测量大小/长短(以细胞为例)
  19. NY891 区间选点 找点
  20. 投稿时Cover Letter的重要性

热门文章

  1. AI 世界的硬核之战,Tengine 凭什么成为最受开发者欢迎的主流框架?
  2. K近邻算法你掌握了吗?来测试一下就知道了
  3. 机器学习——线性回归的原理,推导过程,源码,评价
  4. 使用RNNs进行机器翻译——介绍RNN和LSTM网络及其应用
  5. 谷歌“验光师”AI算法,让可控核聚变早日成真!
  6. PPT插入文本框但是字体并不是想要的
  7. latex中的\label标签的作用
  8. 大脑的学习方式如何,机器学习与生物学习的联系将提供「答案」
  9. 如何结合因果与强化学习?看最新《因果强化学习:动机,概念,挑战与应用》报告,85页ppt...
  10. 前端智能化的加速时刻:华为机器视觉的创新方程式