作者回复: 赞,写的很完善
作者回复: 没有太好的方案,要么一开始的分表方案就是按照id范围来设计的,要么就需要数据迁移
作者回复: 这个是hash函数实现的一个技巧,当计算hash值的时候,普通做法是取余操作,例如h%len,但如果len是2的N次方,通过位操作性能更高,计算方式为h & (len-1)
作者回复: 关系数据库是行存储,即使不用那一列,也会从存储读取到内存
作者回复: 我们也这样做过,后来受不了了又缩表😂😂😂
作者回复: blob的字段是和行数据分开存储的,而且磁盘上并不是连续的,因此select blob字段会让磁盘进入随机IO模式
作者回复: 这样做没错,如果你们12年就开始分库分表,可能当时的方案也不一定适应后来的业务变化
作者回复: 没有很好的,要么中间件要么代码中间层,业务代码处理总是很麻烦的
作者回复: 分析正确
作者回复: 淘宝的单元化改造就面临你说的问题,最后他们选择了买家纬度拆分,卖家纬度不拆分,详细可以搜网上的公开资料。
作者回复: 读热点加缓存,写热点加缓冲,例如用消息队列,写热点也可以合并写
作者回复: 后台统计库不拆分,冗余一份线上数据,既可以应对复杂的统计需求,也不担心影响线上业务
作者回复: 先分表到不同数据库服务器,估计还能再撑一两年😄
作者回复: 数据写双份,一份给线上用,采用分库分表;一份给运营,不分库分表
作者回复: 高性能mysql,把explain的结果能完全看懂就很厉害了