一、分表的前世今生

MySQL5.0以前版本存在单表行数的性能下降拐点,以经典的MySQL4.17或MySQL3.23为例,那个特定年代的存储引擎主要是ISAM或类ISAM存储引擎和BDB存储引擎,运行平台数据库服务器主要是2-4块硬盘,内存几乎都是4G-16G为主。在此背景下,行业内公认ISAM存储引擎的性能拐点为单表500万行记录,故一般会超过拐点的数据量表就会做人为分表和应用程序配合,常见是按日期(例如:每月份一张表)、HASH值等方式。

进入MySQL5.0时代,主要是MyISAM或类MyISAM存储引擎和InnoDB存储引擎,但MySQL同其他商业数据库产品相比依然无表分区特性。部分业务场景存在单表数据删除或数据冷热明显的需求,为方便定期删除数据和归档数据,或进行数据冷热分离而提升性能。

前者MyISAM和InnoDB存储引擎都存在,通常做法是定期切换表,业务低谷期加表级别锁,完成表名称的RENAME操作;后者主要是针对MyISAM存储引擎,只有索引缓存区,此时就会直接进行分表,通常做法是MyISAM存储引擎的表数据分表后,再借助MERG存储引擎合并回来,减少应用程序改造。

二、分区的功能特性

进入MySQL5.1及以上的时代,也随着硬件成本的降低和平民化,X86服务器硬盘更多和内存更大(起步都是6块SAS硬盘,64G内存),InnoDB存储引擎得到迅速的普及,且MySQL数据库支持分区特性。

InnoDB存储引擎具备元数据和索引数据的自适应调节数据活跃度的缓存功能,内存也足够大,同时具备分区功能和支持交换分区,此时往往不再使用分表的方法,而是借助分区功能实现数据的删除和归档等。

三、分库的缘由

分表和分区都是基于同一个数据库里的数据分离技巧,对数据库性能有一定提升,对MySQL数据库的吞吐量无质的变化。当业务系统的数据容量接近或超过单台X86服务器的容量、QPS/TPS接近或超过单个MySQL数据库实例的处理极限等,则重点在于扩展MySQL数据库的吞吐量和数据处理量。此时,往往是采用垂直和水平结合的数据拆分方法,把数据服务和数据存储分布到多台MySQL数据库服务器上。

分库只是一个通俗说法,更标准名称是数据分片,采用类似分布式数据库理论指导的方法实现,对应用程序达到数据服务的全透明和数据存储的全透明,这个领域的知识内容就更复杂,日后慢慢分篇幅介绍。

四、总结

1.png

补充说明:

若MyISAM存储引擎分表后,借助类MyISAM的MERG存储引擎,则不需要改造应用程序,存在少量限制;

五、结束语

本文写于2016年5月14日北京南站候车室。收起

mysql 表分区使用场景_MySQL的分区和分表应用场景分析相关推荐

  1. mysql 分表后如何扩展_MySQL横向扩展-分库分表解决方案总结

    从业务场景看分库分表 互联网行业中,业务场景通常写少读多的情况居多,在MySQL的使用前期,读性能大多可以通过SQL优化来解决,但随着业务的持续发展,单纯依靠SQL的查询优化会越来越难以达到业务服务要 ...

  2. mysql 分表后如何扩展_mysql扩展至分库分表

    MySQL互联网Oracle企业应用数据结构 . 数据库的复制能解决访问问题,并不能解决大规模的并发写入问题,要解决这个问题就要考虑mysql数据切分了 数据切分,顾名思义,就是数据分散,将一台主机上 ...

  3. 查询各个分区的数据量_分库、分表、分区的区别,傻傻分不清?

    作者:GrimMjxwww.cnblogs.com/GrimMjx/p/11772033.html 一.分分合合 说过很多次,不要拘泥于某一个技术的一点,技术是相通的.重要的是编程思想,思想是最重要的 ...

  4. mysql 横向分表合并_MySQL横向扩展-分库分表解决方案总结

    从业务场景看分库分表 互联网行业中,业务场景通常写少读多的情况居多,在MySQL的使用前期,读性能大多可以通过SQL优化来解决,但随着业务的持续发展,单纯依靠SQL的查询优化会越来越难以达到业务服务要 ...

  5. mysql为什么要分库_mysql为什么要分库分表?

    1 基本思想之什么是分库分表? 从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上. 2 基本思想之为什么要分库分表? 单表操作数据量有最优值 ...

  6. 高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制)

    高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制) 视频地址:https://www.bilibili.com/video/BV1ry4y1v7Tr?p=8& ...

  7. mysql为什么要分库_我们为什么要分库分表

    当一张表的数据达到几千万时,查询一次所花的时间会变长.这时候,如果有联合查询的话,可能会卡死在那儿,甚至把系统给拖垮. 而分库分表的目的就在于此:减小数据库的负担,提高数据库的效率,缩短查询时间.另外 ...

  8. MySQL集群架构(三):分库分表

    分库分表 前言 拆分方式 垂直拆分 垂直拆分优点 垂直拆分缺点 水平拆分 水平拆分优点 水平拆分缺点 主键策略 UUID COMB(UUID变种) SNOWFLAKE 数据库ID表 Redis生成ID ...

  9. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

  10. .Net下的分库分表帮助类——用分库的思想来分表 - 秋夜 - 博客园

    .Net下的分库分表帮助类--用分库的思想来分表 - 秋夜 - 博客园

最新文章

  1. Django - 分页器
  2. java中的后台线程、前台线程、守护线程区别
  3. Traveling on the Axis (The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online)
  4. 当前工作目录Python
  5. DDD实战课--学习笔记
  6. ORA-03113: end-of-file on communication channel
  7. Nginx部署前后端分离项目,配置SSL证书,结果刷新报500异常
  8. 线上只执行一次的脚本编写注意事项
  9. windows server 2008 NLB 集群
  10. NMEA0183协议详细解析(GPS、北斗、GNSS)
  11. 如何生成PSSM矩阵
  12. MC2D v0.0.6 Source Code
  13. 基于web的医院预约挂号系统-java ssm springboot
  14. iOS GameCenter
  15. 3年功能测试经验,面试想拿到15k很难吗?
  16. 英雄联盟7月23日维修服务器,lol维护到几点今天 英雄联盟7月23日停机维护多长时间...
  17. 学习笔记——day09(抽象final接口)
  18. 十三款流行的无线网络黑客工具介绍
  19. 巧妙地用继电器实现直流电机正反转
  20. hi3559AV100调试记录

热门文章

  1. 这家日本餐厅第一!2022年度亚洲50最佳餐厅榜单出炉,上海、深圳、香港均有上榜...
  2. 树莓派RP2040 100M 24通道逻辑分析仪开源项目
  3. 【56期分享】4款毕业答辩PPT模板免费下载
  4. 【MQL】简单语句记录
  5. 软件公司如何做好产品研发和项目实施的经验和思考
  6. 邮箱验证-正则表达式
  7. Python POST 爬虫爬取掘金用户信息
  8. Kubeadm-K8s1.20-高可用部署-详细-生产环境(四)
  9. 房贷利率要不要转换,选LPR还是固定利率?这样思考就不会再迷茫
  10. “特殊值、类型和转换”学习笔记