MySQL互联网Oracle企业应用数据结构 .

数据库的复制能解决访问问题,并不能解决大规模的并发写入问题,要解决这个问题就要考虑mysql数据切分了

数据切分,顾名思义,就是数据分散,将一台主机上的数据分摊到多台,减轻单台主机的负载压力,有两种切分方式,一种是分库,即按照业务模块分多个库,每个库中的表不一样,还有一种就是分表,按照一定的业务规则或者逻辑将数据拆分到不同的主机上,每个主机上的表是一样的,这个有点类似于Oracle的表分区。

分库又叫垂直分区,这种方式实现起来比较简单,重要的是对业务要细化,分库时候要想清楚各个模块业务之间的交互情况,避免将来写程序时出现过多的跨库操作。

分表又叫水平分区,这种方式实现起来就比垂直分区复杂些,但是它能解决垂直分区所不能解决的问题,即单张表的访问及写入很频繁,这时候就可以根据一定的业务规则(PS:如互联网BBS论坛的会员等级概念:根据会员等级来分表)来分表,这样就能减轻单表压力,并且还能解决各个模块的之间的频繁交互问题。

分库的优点是:实现简单,库与库之间界限分明,便于维护,缺点是不利于频繁跨库操作,单表数据量大的问题解决不了。

分表的优点是:能解决分库的不足点,但是缺点却恰恰是分库的优点,分表实现起来比较复杂,特别是分表规则的划分,程序的编写,以及后期的数据库拆分移植维护。

实际应用中,一般互联网企业的路线都是先分库再分表,两者结合使用,取长补短,这样发挥了mysql扩展的最大优势,但是缺点是架构很大,很复杂,应用程序的编写也比较复杂。

以上是mysql的数据切分的一些概念,数据切完了,现在要做的是怎么样在整合起来以便于外界访问,因为程序访问的入口永远只有一个,现在比较常用的解决方案是通过中间代理层来统一管控所有数据源。

常用的代理层方案:

1.mysql proxy

类似于连接池,所有连接通过它进行转发。

2.Amoeba

是一个开发代理层的框架,有对应版本Amoeba for mysql,对于数据切分规则,连接数控制,以及读写分离路由支持较好。

3.HiveDB

仅支持水平切分,底层由hibernate shards实现。

4.其他

HSCALE,Spock Proxy(ROR),Pyshards(Python)

最后值得注意的是mysql分库分表的缺点:

缺少好的分布式事务解决方案,目前仅有Innodb提供解决方案,性能值得商榷。

缺少类似于DBLink的跨节点SQL解决方案,Federated提供支持了,但是还是简单的支持,对于表结构的变化就不能为力。

这些缺点只能通过应用程序层来解决,不过话说回来,如果所有缺点都解决了,Oracle也不会卖那么贵了。

分享到:

2012-09-05 21:47

浏览 3723

分类:数据库

评论

mysql 分表后如何扩展_mysql扩展至分库分表相关推荐

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

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

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

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

  3. mysql 表分区使用场景_MySQL的分区和分表应用场景分析

    一.分表的前世今生 MySQL5.0以前版本存在单表行数的性能下降拐点,以经典的MySQL4.17或MySQL3.23为例,那个特定年代的存储引擎主要是ISAM或类ISAM存储引擎和BDB存储引擎,运 ...

  4. docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...

    一.MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Communi ...

  5. mysql 先删后增 更新_MySQL 高级操作——新增数据、更新数据、删除数据、查询数据...

    新增数据 多数据插入 只要写一次insert指令,但是可以插入多条记录 语法:insert into 表名 [(字段列表)] values (值列表1),(值列表2),(值列表3); 主键冲突 主键冲 ...

  6. mysql 分库分表中间件 mycat_阿里开源的分布式分库分表中间件之MyCat从入门到放弃...

    原标题:阿里开源的分布式分库分表中间件之MyCat从入门到放弃 1.非分片字段查询 Mycat中的路由结果是通过分片字段和分片方法来确定的.例如下图中的一个Mycat分库方案: 根据 tt_waybi ...

  7. MySQL高性能:索引、锁、事务、分库分表如何撑起亿级数据

    最近项目增加,缺人手,面试不少,但匹配的人少的可怜.跟其他组的面试官聊,他也抱怨了一番,说候选人有点儿花拳绣腿,回答问题不落地,拿面试最常问的MySQL来说,并不只是懂"增删改查" ...

  8. 主从复制MySQL的安装和用数据库中间件MyCat实现分库分表、读写分离

    1.MySql主从复制 1.1.安装mysql 1.1.1.下载 下载地址:https://dev.mysql.com/downloads/mysql/ 1.1.2.卸载预装mysql #查看已安装: ...

  9. mysql数据意外删了怎么办_MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办...

    MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办 发布时间:2020-07-20 13:45:46 来源:亿速云 阅读:57 作者:小猪 这篇文章主要为大家展示了MySQL数据库意外崩溃导致表 ...

最新文章

  1. 19.3.21 计算机网络基础知识
  2. Hotmail 开始支持完全 HTTPS 加密以增强安全性
  3. SQL SERVER 数据库邮件配置
  4. UNIX环境C - 系统信号
  5. CentOS7桌面版系统使用的一些小技巧
  6. float32精度_PyTorch 1.6来了:新增自动混合精度训练、Windows版开发维护权移交微软...
  7. 2019 renew 博客目录
  8. 多个浏览器同时访问mysql_48- 多线程启动多个不同浏览器
  9. mysql 大量close wait_线上大量CLOSE_WAIT原因排查
  10. java代码 软件_适合新手的java代码编写软件有哪些?
  11. 研发项目如何配置看板的任务流转
  12. asp.net组件检查网站探针
  13. android手机速度太慢,如果我的Android手机速度变慢该怎么办?加快手机速度的五种方法...
  14. 简单的微信聊天模拟(W-01)
  15. postman,请求前置脚本,Pre-requests Script
  16. java的逻辑判断和结构
  17. windows无法启动MySQL服务(位于本地计算机上)。错误1067:进程意外终止
  18. vnc移植_【安富莱】开源原创高级玩法,用F429接SDRAM虚拟远程VNC桌面
  19. 视频怎么消除人声?一款视频去人声软件,轻松去除视频人声
  20. 360路由器登录协议的分析和模拟实现

热门文章

  1. java hasfocus_Android·Focus机制解析和常见问题
  2. mysql字符乱码_MySQL字符乱码解决方案
  3. 皮一皮:只恨不为女儿身...
  4. 皮一皮:这几天最容易搞错的事情...
  5. 百亿数据量下,掌握这些Redis技巧你就能Hold全场
  6. 我说分布式事务之最大努力通知型事务
  7. open3d python 学习笔记
  8. c++ 指针的指针参数
  9. tenserflow.js 环境搭建
  10. pytorch模型转换