首先肯定的是,如果创建分区表,那么各个主分区会在observer上打散,大查询如果涉及所有observer,并行能力很可观。
我的问题是,如果是小表,默认情况下数据也会在各个observer上均匀分布吗?还是只在某一个observer上存在,所有的obproxy查询都路由到该observer进行查询?
首先肯定的是,如果创建分区表,那么各个主分区会在observer上打散,大查询如果涉及所有observer,并行能力很可观。
我的问题是,如果是小表,默认情况下数据也会在各个observer上均匀分布吗?还是只在某一个observer上存在,所有的obproxy查询都路由到该observer进行查询?
这个问题也可以延伸为小表(非分区表)与unit之间的关系,一个observer上只能有一个租户的一个unit,多个observer上就会有多个unit,那这个租户的表(例如t1),是在这些unit上均匀分布还是只在其中一个unit上占据资源?
一个非分区表,就只会落在一个zone的一个observer上。
多个非分区表,在没有table group的时候,会落在多个observer上。这样也能发挥分布式数据库的并行计算能力。
但是这个问题需要看这些非分区表是不是在一个事务内,如果是业务一个事务内,那么在observer上有大量remote sql,会影响性能。就需要加table group 将非分区表固定到某一台observer上,达到优化性能的效果。
感谢张总答疑解惑,明白了,看起来设计上整体倾向于TP业务,这个也没毛病