关注后回复"领取",可免费领取软件测试必读的七本电子书和近500M性能测试资料。更多软件测试资料敬请期待更新!!! WOT(World Of Tech)2015,互联网运维与开发者大会将在北京举行,会上58同城将分享《大数据量下,58同城mysql实战》的主题,干货分享抢先看。 一、基本概念 大数据量下,搞mysql,以下概念需要先达成一致 1)单库,不多说了,就是一个库 2)分片(sharding),水平拆分,用于解决扩展性问题,按天拆分表 3)复制(replication)与分组(group),用于解决可用性问题 4)分片 分组,这是大数据量下,架构的实际情况 二、大数据量下,mysql常见问题及解决思路 1)常见问题 如何保证可用性? 各色各异的读写比,怎么办? 如何做无缝倒库,加字段,扩容? 数据量大,怎么解决? 2)解决思路 2.1)可用性解决思路:复制 读库可用性 从库复制多个,例如:1主2从 从库挂了读主库,例如:1主1从 写库可用性 双主模式 “双主”当“主从”用 2.2)读写比解决思路-针对特性做设计 读多些少场景:提升读性能,3种常见方案: a)新建索引提高读性能,什么小技巧? b)读写分离,增加从库扩展读性能 c)增加缓存来扩展读性能 a)b)c)方案存在什么问题? 如何解决这些问题? 读写相近场景:不要使用缓存,考虑水平切分 写多读少场景:不要使用缓存,考虑水平切分 2.3)无缝倒库[扩容,增加字段,数据迁移] 追日志方案 a)记录写日志 b)倒库 c)倒库完毕 d)追日志 e)追日志完毕 数据校验 f)切库 双写方案 a)服务双写 b)倒库 c)倒库完毕 数据校验 d)切库 2.4)数据量大解决思路:拆库 三、数据库拆库实战 四类场景覆盖99%拆库业务 a)“单key”场景,用户库如何拆分: user(uid, XXOO) b)“1对多”场景,帖子库如何拆分: tiezi(tid, uid, XXOO) c)“多对多”场景,好友库如何拆分: friend(uid, friend_uid, XXOO) d)“多key”场景,订单库如何拆分:order(oid, buyer_id, seller_id, XXOO) 1)用户库如何拆分 用户库,10亿数据量 user(uid, uname, passwd, age, sex, create_time); 业务需求如下 a)1%登录请求 = |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|