最近,由于流量过大,我们的数据库实例CPU负载过重(超过98%利用率)。因此,我们决定将我们的db分片成多个实例。据我所知,在postgres中,db级别的分片主要是通过对表进行分区并将每个分区移动到单独的实例中来完成的,就像下面展示的那样。
我认为这可能会使查询速度更快,但不能减轻主分区的负载太多,因为所有查询都是针对主分区本身进行的。因此,我决定在我们的节点后端实现应用程序级别的分片。
对使用分区键执行的所有CRUD操作,应用程序级别的分片效果非常好。但是,如果查询需要根据其他键执行,则需要逐个遍历每个分区。因此,在这种情况下,最好拥有一个未分区的表,以便可以使用同一张表查询所有数据。
修复问题的好方法是什么?只实现如上图所示的db级别分片是否足以减少主实例的CPU利用率?
我认为这可能会使查询速度更快,但不能减轻主分区的负载太多,因为所有查询都是针对主分区本身进行的。因此,我决定在我们的节点后端实现应用程序级别的分片。
对使用分区键执行的所有CRUD操作,应用程序级别的分片效果非常好。但是,如果查询需要根据其他键执行,则需要逐个遍历每个分区。因此,在这种情况下,最好拥有一个未分区的表,以便可以使用同一张表查询所有数据。
修复问题的好方法是什么?只实现如上图所示的db级别分片是否足以减少主实例的CPU利用率?