淘宝MySQL十大经典案例
阿里集团-淘宝网DBA
@杨德华Devin 2012-09
个人简介
•负责淘宝用户中心从IOE迁移到MySQL集群的性能测试,高
可用运维,DB可用率达到100%
•管理数据魔方,SNS,淘宝评价,webww,notify等MySQL集群
•服务器优化,成本节省,把某个业务线的MySQL机器数量从
100台减少到70台。
• SAS->SSD/FIO的MySQL服务器升级过程
•->-> Percona
淘宝线上十大MySQL经典案例
•数据库设计相关:
•(一) InnoDB表如何设计主键索引
• SQL相关:
•(二) 字符串索引隐式转换
•(三) 表数据被莫名清空
•(四) InnoDB表更新锁问题
•客户端相关:
•(五) 客户端连接被中断
淘宝线上十大MySQL经典案例
•“灵异事件”相关:
•(六)核心数据库被同时关闭
• Slave相关:
•(七) Slave 事件Loop
•(八) Slave 更新操作找不到对应记录
•(九)备库设置read_only被堵塞
• Swap相关:
•(十) 数据库服务器Swap
一 InnoDB表如何设计主键索引
CREATE TABLE `a` ( CREATE TABLE `b` (
`id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL,
`message_id` int(11) NOT NULL, `message_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL, `msg` varchar(1024) DEFAULT NULL,
`msg` varchar(1024) DEFAULT NULL, `gmt_create` datetime NOT NULL,
`gmt_create` datetime NOT NULL, PRIMARY KEY (`user_id`,`message_id`),
PRIMARY KEY (`id`), KEY `idx_gmt_create` (`gmt_create`)
KEY `user_id` (`user_id`,`message_id`), ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
KEY `idx_gmt_create` (`gmt_create`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
一 InnoDB表如何设计主键索引
CREATE TABLE `a` ( CREATE TABLE `b` (
`id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL,
`message_id` int(11) NOT NULL, `message_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL, `msg` varchar(1024) DEFAULT NULL,
`msg` varchar(1024) DEFAULT NULL, `gmt_create` datetime NOT NULL,
`gmt_create` datetime NOT NULL, PRIMARY KEY (`user_id`,`message_id`),
PRIMARY KEY (`id`), KEY `idx_gmt_create` (`gmt_create`)
KEY `user_id` (`user_id`,`message_id`), ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
KEY `idx_gmt_create` (`gmt_create`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
大多数互联网业务(用户,消息),都可以
选择a或者b来满足业务需求,
但a表和b表有何区别?
一 InnoDB表如何设计主键索引
记录空间优点缺点
A表 500万 509M 主键ID自增,在写入数据?
(顺序) 的时候,Btree分裂成本
低,写性能高
B表 500万 361M ? ?
(随机)
一 InnoDB表如何设
淘宝MySQL十大经典案例 来自淘豆网m.daumloan.com转载请标明出处.