使用场景
1 由于polardb本身构建是基础两个实例,存储花费比较大,所以需要的场景大概是以下几点
1 程序本身需要做读写分离,由于polardb基础已经拥有一个读实例,和rds做对比,就节省了一个读实例的花费
2 预估现有数据量和未来数据增长量的磁盘占用,尽量将磁盘成本控制降低,只保留有效的活跃数据,其他不必要的历史查询都放置在es/hdfs或者其他rds实例上
3 使用场景本身不必要频繁的DDL或者在迁移前将DDL变更一次性做好,polardb本身对于DDL操作的成本还是有点高的,所有实例都是共享MDL锁,防止因为慢查询或者其他事务导致全局性的MDL锁等待
4 设置好备份的保留机制,控制备份的成本花费
5 慢查询做好监控,防止产生锁问题
2 并行查询
1 可以分为以下几个阶段
1 版本并不支持任何并行查询
2 版本支持有限场景的并行查询,大概有以下几个
1 单表聚合函数的场景 sum() count()等
2 多表并行JOIN的场景 各种join
3 collector组件 负责做后续的GROUP BY、ORDER BY及LIMIT操作 组件只有一个,负责所有的线程结果
2 基于什么
1 必须基于成本,优化器进行判定,表扫描行数是否需要并行查询,否则可能极大浪费资源
2 并行包括 并行读取到BUFF,并行进行处理 最后 由一个专门线程进行合并处理
3 polardb如果使用了并行查询会在explain出现parallel scan(xx workers)关键特征 xx代表多少线程参与了活动
3 补充
1 如果想对比polardb和rds的性能,则需要按照同等条件下对比大SQL的查询性能
2 polardb只有8.0版本才支持并行查询和ddl加速