大众点评的订单表早已突破两百G,因查询维度较多,即使加了两个从库,各种索引优化,依然存在很多查询不理想的情况。加之去年大量的抢购活动的开展,数据库达到瓶颈,应用只能通过限速、异步队列等对其进行保护。同时业务需求层出不穷,原有的订单模型很难满足业务需求,但是基于原订单表的DDL又非常吃力,无法达到业务要求。随着这些问题越来越突出,订单数据库的切分就愈发急迫了。
下面是我们的分库分表实践之路
先对订单库进行垂直切分,将原有的订单库分为基础订单库、订单流程库等。
垂直切分缓解了原来单集群的压力,但是在抢购时依然捉襟见肘,并且原有的的订单模型已经无法满足业务需求,于是我们设计了一套新的统一订单模型,为同时满足C端用户、B端商户、客服、运营等的需求,我们分别通过用户ID和商户ID进行切分,并通过PUMA同步到一个运营库。