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

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

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

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

最新文章

  1. Android游戏开发实践(1)之NDK与JNI开发02
  2. iOS开发笔记1:[转]导航栏里的"Back"按钮显示不出来
  3. 每天学点GDB14
  4. sin=in.readLine();
  5. Skyline学习教程
  6. [PS] 透明底图片制作
  7. js获取上传文件扩展名
  8. [转]tomcat部署(1)
  9. copy.copy()与copy.deepcopy()的详解
  10. python学习——读取染色体长度(三、用循环或者函数求总长并获取最长染色体长度)
  11. socket(套接字)初使用
  12. mac 下直接给docker容器加映射 mysql 为例
  13. Johnson算法
  14. JS--bom对象:borswer object model浏览器对象模型
  15. googletest--Death Test和Exception Test
  16. Pairs of Songs With Total Durations Divisible by 60 LT1010
  17. 上传文件夹+php
  18. YOLO end-to-end
  19. 使用 PowerShell 管理 Azure 磁盘
  20. Linux读书笔记第一周

热门文章

  1. Myeclipse中文件已经上传到server文件夹下,文件也没有被占用,可是页面中无法读取和使用问题的解决方法
  2. Solr-5.3.1 dataimport 导入mysql数据
  3. selenium以手机模拟器方式打开Google浏览器
  4. sqls
  5. iOS wkwebview和 uiwebview 内容图片自适应大小
  6. 用shell查找某目录下的最大文件(转)
  7. SQL Server 2008R2发布与订阅的配置
  8. React Native :加载新闻列表
  9. IDC机房与阿里云vpc网络建立高速通道
  10. oracle 创建一个用户,并且设定只能访问指定的对象