数据库存储架构

数据库读写分离

  主从结构,主写从读,主复制数据到从,程序判断写请求只发送主机。    

  复杂度: 复制延迟(主从随机读数据) :读写绑定(写死,业务侵入大)、 二次读取(主机压力大)、业务分级(拆分读写操作时效要求的任务)

       任务分解 

        程序代码封装  sharding-jdbc(语言过多,工作量大)

        中间件封装  sharding-proxy(复杂但可以跨语言)

 

数据库分库分表

  分库

    问题:数据跨库导致join失效。

         1、小表冗余

         2、代码join(内存数据拼接)

         3、字段冗余

       事务问题

          分布式事务

  分表

    水平拆分 (按行)

      优化系统处理性能(建议不要自己写,使用类似sharding-jdbc)

      1、算法路由

      2、如何join其他表

      3、如果统计count  

      4、如何order by

    垂直拆分(按列)

      优化单机处理性能

    拆分时机: b+tree 三层以上,约2000W条、超过innodb buffer pool 配置、表随时增加

分布式事务

  1、2pc :事务协调者统一处理统一提交

      单点故障(事务协调者、参与者)导致事务失败。

  2、3PC: 增加超时机制,过时则自动提交。 

      当单点故障时会脑裂

  3、mysql XA

 

posted on   李某人的窥视  阅读(69)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

点击右上角即可分享
微信分享提示