资源描述:
《淘宝MySQL十大经典案例_final.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、淘宝MySQL十大经典案例阿里集团-淘宝网DBA@杨德华Devin2012-09个人简介•负责淘宝用户中心从IOE迁移到MySQL集群的性能测试,高可用运维,DB可用率达到100%•管理数据魔方,SNS,淘宝评价,webww,notify等MySQL集群•服务器优化,成本节省,把某个业务线的MySQL机器数量从100台减少到70台。•SAS->SSD/FIO的MySQL服务器升级过程•负责MySQL5.1.45->5.1.48->Percona5.5.18的工作淘宝线上十大MySQL经典案例•数据库设计相关
2、:•(一)InnoDB表如何设计主键索引•SQL相关:•(二)字符串索引隐式转换•(三)表数据被莫名清空•(四)InnoDB表更新锁问题•客户端相关:•(五)客户端连接被中断淘宝线上十大MySQL经典案例•“灵异事件”相关:•(六)核心数据库被同时关闭•Slave相关:•(七)Slave事件Loop•(八)Slave更新操作找不到对应记录•(九)备库设置read_only被堵塞•Swap相关:•(十)数据库服务器Swap一InnoDB表如何设计主键索引CREATETABLE`a`(CREATETABLE`b
3、`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`user_id`int(11)NOTNULL,`message_id`int(11)NOTNULL,`message_id`int(11)NOTNULL,`user_id`int(11)NOTNULL,`msg`varchar(1024)DEFAULTNULL,`msg`varchar(1024)DEFAULTNULL,`gmt_create`datetimeNOTNULL,`gmt_create`datetimeNOTNULL,
4、PRIMARYKEY(`user_id`,`message_id`),PRIMARYKEY(`id`),KEY`idx_gmt_create`(`gmt_create`)KEY`user_id`(`user_id`,`message_id`),)ENGINE=InnoDBDEFAULTCHARSET=gbk;KEY`idx_gmt_create`(`gmt_create`))ENGINE=InnoDBDEFAULTCHARSET=gbk;一InnoDB表如何设计主键索引CREATETABLE`a`(CREA
5、TETABLE`b`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`user_id`int(11)NOTNULL,`message_id`int(11)NOTNULL,`message_id`int(11)NOTNULL,`user_id`int(11)NOTNULL,`msg`varchar(1024)DEFAULTNULL,`msg`varchar(1024)DEFAULTNULL,`gmt_create`datetimeNOTNULL,`gmt_create`datetim
6、eNOTNULL,PRIMARYKEY(`user_id`,`message_id`),PRIMARYKEY(`id`),KEY`idx_gmt_create`(`gmt_create`)KEY`user_id`(`user_id`,`message_id`),)ENGINE=InnoDBDEFAULTCHARSET=gbk;KEY`idx_gmt_create`(`gmt_create`))ENGINE=InnoDBDEFAULTCHARSET=gbk;大多数互联网业务(用户,消息),都可以选择a或者b来
7、满足业务需求,但a表和b表有何区别?一InnoDB表如何设计主键索引记录空间优点缺点A表500万509M主键ID自增,在写入数据?(顺序)的时候,Btree分裂成本低,写性能高B表500万361M??(随机)一InnoDB表如何设计主键索引记录空间优点缺点A表500万509M主键ID自增,在写入数据?(顺序)的时候,Btree分裂成本低,写性能高B表500万361M1.物理空间相对减少?(随机)2.根据user_id查数据,直接走主键拿到数据,无需回表一InnoDB表如何设计主键索引记录空间优点缺点A表50
8、0万509M主键ID自增,在写入数物理空间相对较多据的时候,Btree分裂成如果根据user_id来查本低,写性能高记录,需要走两次IOB表500万361M1.物理空间相对减少?2.根据user_id查数据,直接走主键拿到数据,无需回表一InnoDB表如何设计主键索引记录空间优点缺点A表500万509M主键ID自增,在写入数物理空间相对较多据的时候,Btree分裂成如果根据user_id来查本低,写性能高记录,需