`

分库分表(Mysql篇)

 
阅读更多

[转载自]http://blog.chinaunix.net/uid-7374279-id-3874363.html

 

关于分库分表(Mysql篇) 2013-08-29 19:07:02
 

关于分库分表,要关心硬件,业务,分布式,和数据库选型.
基本指标:库物理文件大小<100G
表<100
字段<200
单表记录数<500W

可以用说用到MySQL的地方,只要数据量一大, 马上就会遇到一个问题,要分库分表.
这里引用一个问题为什么要分库分表呢?MySQL处理不了大的表吗?
其实是可以处理的大表的.我所经历的项目中单表物理上文件大小在80G多,单表记录数在5亿以上,而且这个表
属于一个非常核用的表:朋友关系表.

但这种方式可以说不是一个最佳方式. 因为面临文件系统如Ext3文件系统对大于大文件处理上也有许多问题.
这个层面可以用xfs文件系统进行替换.但MySQL单表太大后有一个问题是不好解决: 表结构调整相关的操作基
本不在可能.所以大项在使用中都会面监着分库分表的应用.

从Innodb本身来讲数据文件的Btree上只有两个锁, 叶子节点锁和子节点锁,可以想而知道,当发生页拆分或是添加
新叶时都会造成表里不能写入数据.
所以分库分表还就是一个比较好的选择了.

那么分库分表多少合适呢?
经测试在单表1000万条记录一下,写入读取性能是比较好的. 这样在留点buffer,那么单表全是数字类型的保持在
800万条记录以下, 有字符型的单表保持在500万以下.

如果按 100库100表来规划,如用户业务:
500万*100*100 = 50000000万 = 5000亿记录.

心里有一个数了,按业务做规划还是比较容易的.

分库的原因,更多的为将来扩展及性能考虑. 性能是,一个进程下打开的文件句柄有限,这是分库分表要限制在单个进程下的数量.当然这些表也可以全放到一个库下.但引入另外一个问题,单机性能达到瓶颈时,扩展又是一个麻烦事. 所以引入了一个分库,这样,才开始时,所有的库都可以在事一个事例下,等到压力增大后,单机成为瓶颈了,可以通过移库的形式能快速的移动数据.
这个要看单机的容量, 如果单机IO不是问题如果Fusion-io这种IO设备+SAS ,单库可以达到800G甚至1T都没问题.如果是传统的SAS建议单机单库别超过200G. 如果可能控制在100G以内,不然不容易运维.

分享到:
评论

相关推荐

    MySQL分库分表篇相关代码

    MySQL分库分表篇相关代码

    mysql运维篇,mycat分库分表

    mysql运维,包含主从赋值,log讲解,mycat安装,分库分表案列等等

    Mysql超详细知识梳理-分库分表篇-思维导图.xmind

    对应企业开发的Mysql知识梳理

    MySQL分库分表总结讲解

    今天小编就为大家分享一篇关于MySQL分库分表总结讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    spring-boot-sharding-sphere:SpringBoot + ShardingSphere 实现读写分离 分库分表

    有关ShardingSphere实现分库分表前面写了7篇博客作为该项目做详细说明。 1、 2、 3、 4、 5、 6、 7、 该项目拉下后配置数据库地址,和创建相应的库和表后就可以运行成功。 一、项目概述 1、技术架构 项目总体技术...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ │ 2_MyCat分库分表原理和常见方法.mp4 │ │ 3_MyCat管理操作.mp4 │ │ 4_Atlas配置和读写分离实现.mp4 │ │ 5_Atlas分库分表实现.mp4 │ │ 6_MHA搭建和故障切换原理剖析.mp4 │ │ │ └─MySQL DBA_课堂...

    MySQL.xmind

    学习Mysql整理复习的思维导图,涵盖Web开发程序员需要掌握的大部分关于Mysql的知识,从基础篇,架构篇,索引篇,锁和事务篇,性能分析优化篇,集群分库分表篇等深入理解Mysql数据库的底层原理。

    聊聊高并发高可用那些事(Kafka、Redis、MySQL)

    - 分库、分表、分区 - 存储过程、定时任务 - MySQL 视图 (VIEW) - Redis 和 MySQL 双写一致性 - 高并发高可用方案 - Join语句还能不能用? - 主从同步有延迟怎么办? - .frm .myi .myd .ibd 文件 - 为什么表数据删掉...

    MySql知识学习.docx

    通过学习视频网站整理的一篇mysql优化文档,mysql基础知识介绍,mysql存储引擎介绍,事务介绍,mysql索引介绍,集群分库分表读写分离介绍...比较详细的介绍体系知识,本人学习时详细的记录学习文档。

    大厂面试专栏,冲击大厂必备

    DDD、系统架构、分库分表、高性能、吞吐量 第六篇:面试那点破事!面试技巧、职业规划、谈薪资 第七篇:Redis 缓存那点破事 !单线程、数据类型、淘汰机制、集群模式 第八篇:MySQL 那点破事!索引、SQL调优、事务、...

    Mysql 教程之运维系列

    日志篇:错误日志、查询日志、慢查询日志 同步篇:主从复制概述、原理、主从配置、主从复制 分库分表:拆分方式、Mycat学习入门、配置、分片、分库、读写分离、双主从搭建

    详解MySQL数据库优化的八种方式(经典必看)

    关于数据库优化,网上有不少资料和方法,但是不少质量参差不齐,有些总结的不够到位,内容冗杂。今天给大家分享一篇文章关于mysql数据库优化的八种方式,非常经典,需要的的朋友参考下

    MYSQL 数据库水平切分的实现原理解析

    看过一篇文章,学到一些东西,和大家共享! 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定...

    开源bbs源码java-mybatis-generator:MyBatisGenerator(MBG),写扩展类,以适应MySQL大小写敏感配

    的分库分表项目 ,用到了本项目的 说明 曾尝试将数据库表名、字段名也采用驼峰命名法。 现在已经改成: 数据库表名、字段名保持下划线命名法。 针对自定义 SQL 查询结果,对应的自定义 POJO 保持驼峰命名法,查询...

    面试题-中国平安篇.zip

    1. redis各种应⽤场景 a. 更多的数据结构; b. 可持久化; c. 计数器; d. 发布-订阅功能; e....f....g....h....a....b....3. mysql调优 a....b....c....d....e....f....g....h. 分表分库分区。 4. 有没了解Docker,Docker和虚拟机有什

    spring-boot-mybatis-interceptor:mybatis自定义主键插件,通过该插件生成分布式唯一雪花ID作为数据库表的主键

    2、分表分库会有ID冲突。 UUID: 1、太长,并且有索引碎片,索引多占用空间的问题 2、无序。 雪花算法就很适合在分布式场景下生成唯一ID,它既可以保证唯一又可以排序,该插件项目的原理是 通过拦截器拦截Mybatis的...

Global site tag (gtag.js) - Google Analytics