程序员修神之路--做好分库分表其实很难之二(继续送书)
菜菜哥,上次听你给我讲了分库的情况后,我明白了很多,能再给我讲讲分表吗 有收获就好,分表其实有很多情况和分库类似 还有不一样的情况吗? 有呀,本来数据库和表是不同层面的东西,肯定有差异 那你给讲讲呗 讲可以,一杯coffee如何? 为什么分 在正式开始之前,菜菜还是要强调一点,你的数据表是否应该分,需要综合考虑很多因素,比如业务的数据量是否到达了必须要切分的数量级,是否可以有其他方案来解决当前问题?我不止一次的见过,有的leader在不考虑综合情况下,盲目的进行表拆分业务,导致的情况就是大家不停的加班,连续几周996,难道leader你不掉头发吗?还有的架构师在一个小小业务初期就进行表拆分,大家为了配合你也是马不停蹄的加班赶进度,上线之后反而发现业务数据量很小,但是代码上却被分表策略牵制了太多。拆表引起的问题在特定的场景下,有时候代价真的很大。 数据库表的拆分解决的问题主要是存储和性能问题,mysql在单表数据量达到一定量级后,性能会急剧下降,相比较于sqlserver和Oracle这些收费DB来说,mysql在某些方面还是处于弱势,但是表的拆分这个策略却适用于几乎所有的关系型数据库。 数据库进行表拆分不要太盲目 分表策略 表的拆分和数据库的拆分有相似之处,但是拆分的规则也有不同。以下的拆分规则针对的是拆分一个表。 横向切分 横向切分是诸多业务中最常用的切分方式