ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#分库分表与主从回顾 ##为什么要分库分表 数据装不下了 承压分离 安全隔离 ##如何分库分表 纵向分表依据?(从业务) 分库、拆表 uid、账号、密码、姓名、头像、积分、余额、简介 按字段类型 变长(varchar) 与定长(char) 按是否频繁更新 score 横向分表依据? 拆记录 商品、照片列表、好友动态 ##分库分表的缺点 业务更复杂 事务 关联 id ##主从配置 主库从库配置文件差别 启动停止与查看状态命令 从库出错: set global SQL_SLAVE_SKIP_COUNTER=1; 多级主从 ##备份与扩容 为什么要到从库备份? 从库备份要点? 停止从库->记录节点->导出数据->恢复从库(导出数据和节点记录一起保存) 扩容? #ID解决方案 步长一样 偏移错开 1:1 11 21 31 步长都为10 偏移从1开始 2:2 12 22 32 3:3 13 23 33 4: 问题:id不连续 步长设的长一些 方便增加服务器 ##分表ID生成 1、数据库解决 步长、偏移 问题? 2、代码解决 id、year、mod、md5 3、id生成器 #TP实现分库分表与局限 ##ThinkPHP实现分库分表方式 1、AdvModel 2、扩展Model ##ThinkPHP实现分库分表问题 1、维护 透明、扩展 2、性能 #构建分布式连接池 ##PHP连接池 1、运维分开,透明 2、易于扩展的分库分表、读写分离 3、性能:导出配置、进程缓存 #问题与解决 ###分库分表与主从的逻辑问题 1、主从 同步时间问题,先写后读 2、分表 id、外键 count join order ###分库分表与主从的性能问题 配置库查询 1、缓存到客户端 2、TCP层用不同语言与技术 3、常驻内存