能使用kv的场景下,尽量使用kv存储。
随机读、扫描等简单操作的性能会明显优于表格模式,cpu的利用效率也会更高。表格存储提供了更高级的功能,应该将更核心、更复杂的逻辑应用在其上。
刚建的表只有一个tablet,只能使用一台机器,吞吐必然很低。随着读写的持续进行,tera会进行分裂,将负载分散。
也可以在建表时预分多个tablet,这样就可以直接利用更多的机器资源。
有可能,如果存在单行更新频率很高的情况,可以将该表格配置为内存compact模式,可以大幅提升此情况下的读性能。
如果热点不是非常集中的情况下,可以将对应tablet进行拆分,分散压力。
如果非常集中,极端情况下,可能读写热点全部集中在某一行上(比如dns中,80%的读写可能全集中在少数几个站点上):
- 读热点,极端情况下,可能一行的读取压力(每秒数万以上)将cpu占满,此时需要客户端进行适当缓存。
- 写热点,开启内存compact功能,可大幅提升写性能。
当某表列很多时,只扫描其中一列,会将所有列数据扫描一遍,速度会很慢,cpu也会消耗很高。
此时可以针对不同列的扫描需求,将不同列拆分至不同Locality Groups,进行IO隔离,扫描时访问所需列数据,节省资源,提高性能。