zoukankan      html  css  js  c++  java
  • mysql 集群的一些概念

    读写分离: 主备机有 master-master方式,mysql自己提供两个机器之间的备份 binlog方式,一个机器master 用于写数据,一个用于读数据,写数据的那个机器也应有读读功能,有既有读又有写的操作,需要在第一个机器上完成。但现在MYSQL的跨库有bug,说以所有的库的表结构应该都一样。

    垂直分区: 把不同的业务(表)放在不同的数据库节点上,不同区上,假如有两个区,两个数据量特别大的表,把两张表分别放在不同区上。这样数据同步的时候,主从master不同的节点(服务器)到备用master的不同的节点效率就高了,但是这样放在不同的服务器,如果这两个表和其他表存在联表查询,那么就只能把原来的sql语句给拆分了,先查询一个表,在查询另一个,虽然说这个会消耗更过性能,但比起那种大量数据同步,负担还是减轻了不少。

    水平分区: 按路由原则将同一个表的不同记录分到不同节点上,路由原则就是用的算法,一般都是动态哈西算法,用表中id取模分配到不同节点上,有4台机器就模4,这样有个问题,如果数据量太大,要增加节点,所有的数据都得重新分区,那么将是一个的很庞大的计算量。新增4个节点,就需要模8了。

    查询问题: 把业务相关的数据尽可能放在一个节点上,这样方便关联查询,要不就要扫描整个路由再扫分库,因为不知道在哪个分库上,就得挨个库,全表查。另一种解决方案,是建立搜索引擎,solr,可以在水平分区前将该记录要存在哪个库等信息存起来,建立索引,这样查询就方便了。

  • 相关阅读:
    谈一谈对象池SafeObjectPool能干什么
    .net core 程序退出事件
    .NETCore 快速开发做一个简易商城
    Git创建子分支,合并分支并提交
    Vue项目中关闭eslint的方法
    Missing space before function parentheses
    单引号变双引号 格式化去掉分号
    Docker Swarm搭建多服务器下Docker集群
    Asp.Net Core中服务的生命周期选项区别和用法
    KnockoutJS-模板绑定
  • 原文地址:https://www.cnblogs.com/weixiaole/p/4281642.html
Copyright © 2011-2022 走看看