当数据库单表的存储能力及计算能力到达瓶颈时,常见的操作就是进行分库分表。
假设现在三台服务器,有三种数据对应三张表(solr里面就是三种core),这些数据需要不间断的写入到solr中,由于数据量大,且不断写入(并发高),需要对分core。这个时候有两种方案:
- 一类数据对应一台服务器,按数据总量及增量计算分片策略(按天、按月、按年分core)
- 三类数据同时写入到三台服务器,即每台服务器同时存在三种数据。
在具体运用中,由于第一种方便管理,往往会被采用。第一种方案由于数据往往是随时间变化,故写入性能不会受到影响。但是高强度查询中。solr实例常常假死(就是进程还在,但是无法查询),因为当一类数据全部放置在同一台服务器上时,当查询时间跨度大,需要同时加载对个core,导致内存溢出,而且服务器负载飙升。如果是对三类数据同时进行高负荷的查询,不管何种方式都难以降低负载,但是现实中,往往数据的大小及运用场景各不相同,将不同的数据混搭在不同服务器,充分利用多台服务器的计算能力,反倒能提高单次查询的性能和稳定性。