串类型,更新请求少; 最后登录时间,在线时常,访问次数,信件数这些字
段为整数型字段,更新频繁,可以将后面这些更新频繁的字段独立拆出一张数
据表,表内容变少,索引结构变少,读写请求变快。
横向切表
等分切表,如哈希切表或其他基于对某数字取余的切表。等分切表的优点是负
载很方便的分布到不同服务器;缺点是当容量继续增加时无法方便的扩容,需
要重新进行数据的切分或转表。而且一些关键主键不易处理。
递增切表,比如每1kw用户开一个新表,优点是可以适应数据的自增趋势;
缺点是往往新数据负载高,压力分配不平均。
日期切表,适用于日志记录式数据,优缺点等同于递增切表。
个人倾向于递增切表,具体根据应用场景决定。
热点数据分表
将数据量较大的数据表中将读写频繁的数据抽取出来,形成热点数据表。通常
一个庞大数据表经常被读写的内容往往具有一定的集中性,如果这些集中数据
单独处理,就会极大减少整体系统的负载。
热点数据表与旧有数据关系
可以是一张冗余表,即该表数据丢失不会妨碍使用,因源数据仍存在于旧
有结构中。优点是安全性高,维护方便,缺点是写压力不能分担,仍需要
同步写回原系统。
可以是非冗余表,即热点数据的内容原有结构不再保存,优点是读写效率
全部优化;缺点是当热点数据发生变化时,维护量较大。
具体方案选择需要根据读写比例决定,在读频率远高于写频率情况下,优
先考虑冗余表方案。
热点数据表可以用单独的优化的硬件存储,比如昂贵的闪存卡或大内存系统。 热点数据表的重要指标
热点数据的定义需要根据业务模式自行制定策略,常见策略为,按照最新
的操作时间;按照内容丰富度等等。
数据规模,比如从1000万条数据,抽取出100万条热点数据。
热点命中率,比如查询10次,多少次命中在热点数据内。
理论上,数据规模越小,热点命中率越高,说明效果越好。需要根据业务
自行评估。
热点数据表的动态维护
加载热点数据方案选择
定时从旧有数据结构中按照新的策略获取
在从旧有数据结构读取时动态加载到热点数据
剔除热点数据方案选择
基于特定策略,定时将热点数据中访问频次较少的数据剔除
如热点数据是冗余表,则直接删除即可,如不是冗余表,需要回写给
旧有数据结构。
通常,热点数据往往是基于缓存或者key-value 方案冗余存储,所以这里提到
的热点数据表,其实更多是理解思路,用到的场合可能并不多….
表结构设计
查询冗余表设计
涉及分表操作后,一些常见的索引查询可能需要跨表,带来不必要的麻烦。确