压缩、向量聚合与 ProxySQL 读写分离

共 24 题
#

1. 位图编码(Bitpacking)对低基数列的压缩

A Bitpacking 按实际最小位宽打包整数,低基数列(映射为小 ID)位宽小、压缩率高,常与字典编码配合 ✓ 正确答案
B Bitpacking 固定用 32 位存储每个整数
C Bitpacking 是损失性压缩
D Bitpacking 只适用于高基数列
#

2. 向量化 Hash 聚合的批量探测

A 对一批 key 批量算哈希、探测哈希表并 SIMD 累加聚合值,配合 radix 分区提升缓存命中,显著提升分组聚合吞吐 ✓ 正确答案
B 哈希聚合只能逐 key 处理
C 批量探测无法聚合
D 哈希聚合不需要哈希表
#

3. 向量化 Hash Join 的构建/探测批处理

A 构建阶段批量建哈希表、探测阶段批量匹配,用 SIMD 哈希/比较与 radix 分区提升缓存命中,实现吞吐高的 join ✓ 正确答案
B Hash Join 的构建和探测都只能逐行进行
C 探测阶段不需要哈希表
D radix 分区会降低 join 性能
#

4. 向量化排序(基数排序)的应用

A 基数排序基于比较,复杂度 O(nlogn)
B 基数排序按位分桶、无比较,可 SIMD 向量化,适合整型 key 排序,配合 SIMD 提升吞吐 ✓ 正确答案
C 基数排序只适用于字符串
D 基数排序无法向量化
#

5. 向量化引擎的算子融合(operator fusion)

A 算子融合把相邻算子合并为一次遍历,减少中间结果物化与调度开销,提升缓存与执行效率 ✓ 正确答案
B 算子融合会增加中间数据物化
C 算子融合只适用于 join
D 算子融合会降低性能
#

6. 向量化执行中的分支预测优化

A 用 SIMD 比较生成掩码、以掩码/位运算替代逐行 if 分支,降低分支预测失败率,提升吞吐 ✓ 正确答案
B 分支预测失败对性能无影响
C 分支越多越好
D 向量化无法避开分支
#

7. ProxySQL 的读写分离与主从延迟感知

A 用查询规则按 SQL 类型路由读写到不同 hostgroup,并检查从库复制延迟,超过阈值则摘除该从库避免读到陈旧数据 ✓ 正确答案
B ProxySQL 无法感知主从延迟
C 所有请求都必须走主库
D 读流不分发到从库
#

8. ProxySQL 在分库分表前的流量治理

A ProxySQL 提供连接池、读写分离、限流、路由与监控等统一治理,为分库分表前的流量演进与后端隔离做准备 ✓ 正确答案
B ProxySQL 只能做请求转发,不能治理流量
C ProxySQL 会破坏分库分表
D 流量治理与分库分表无关
#

9. 轻量压缩(Lightweight Compression)在内存中的解码

A 轻量压缩用 SIMD 友好的编码按块批量解码,解码开销远小于带宽节省,适合内存常驻列与向量化计算 ✓ 正确答案
B 内存数据压缩后无法解码使用
C 轻量压缩解码极慢
D 内存压缩只用于磁盘
#

10. ProxySQL 的查询路由规则(mysql_query_rules)

A 查询规则按随机顺序匹配
B 规则只能匹配 IP,不能匹配 SQL
C mysql_query_rules 按 rule_id 优先级匹配 SQL,命中后路由到目标 hostgroup 并可 apply 终止,支持读写分离、路由与治理 ✓ 正确答案
D 规则无法热更新
#

11. ProxySQL 的连接多路复用(multiplexing)

A 每个客户端都独占一条后端连接
B 多路复用让多个客户端共享少量后端连接,显著降低后端连接数,但事务/会话状态请求需独占连接不能复用 ✓ 正确答案
C 多路复用会强制所有请求共享同一连接
D 复用与事务状态无关
#

12. ProxySQL 的查询重写(rewrite)能力

A ProxySQL 不能修改 SQL
B 通过 match_pattern 匹配 + replace_pattern 正则替换改写 SQL,可与路由结合实现不改应用的查询调整 ✓ 正确答案
C 重写会破坏所有查询
D 重写只能改库名,不能改 SQL
#

13. ProxySQL 的管理接口与运行时配置

A ProxySQL 配置修改后必须重启才生效
B 管理接口用 SQL 管理配置,经 memory→runtime→disk 三级加载,支持热更新与持久化 ✓ 正确答案
C 控制台与客户端接口共用同一端口
D 配置无法保存到磁盘
#

14. 差分编码对时序/自增列的效果

A 差分编码对随机列压缩率最高
B 差分编码只适用于字符串
C 差分编码会增加存储
D 时序/自增列相邻差小,差分后数值小、用更少位数表示,压缩率极高,可用 Delta-of-Delta、Varint 等变体 ✓ 正确答案
#

15. 字典编码的全局/局部字典选择

A 全局字典和局部字典完全没有区别
B 字典编码不能用于高基数
C 全局字典利于跨块谓词/join 优化但维护成本高,局部字典简单自适应但缺跨块优化,按基数与更新频率选择 ✓ 正确答案
D 局部字典跨块 ID 统一
#

16. 压缩与查询性能(解压代价)的权衡

A 压缩率越高越好,无需考虑解压
B 压缩和解压完全无关
C 高压缩省 IO 但解压 CPU 高,需分层算法、按需解压与 SIMD 解压让总 IO+CPU 成本最小 ✓ 正确答案
D 解压代价永远可忽略
#

17. 列式压缩在对象存储上的传输优化

A 对象存储读取必须下载整个文件
B 压缩会增加传输量
C 对象存储不支持 Range 读取
D 列式压缩减少传输字节,配合 Range 按需读取、footer 元数据先读与并行下载,只传输所需列与块 ✓ 正确答案
#

18. 自适应编码(根据数据特征选择)

A 自适应编码固定使用一种编码
B 自适应编码只考虑压缩率,不考虑解码
C 自适应编码根据数据块特征(基数、重复、有序、位宽)自动选择最优编码,兼顾压缩率与解码性能 ✓ 正确答案
D 数据特征无法影响编码选择
#

19. 编码对 SIMD 解码友好的设计

A 变长编码(Varint)最利于 SIMD 解码
B SIMD 解码需要逐元素分支
C 固定宽度、规则布局、无分支、可批量解码的编码(如 Bitpacking、定宽字典)对 SIMD 友好 ✓ 正确答案
D 编码与解码性能无关
#

20. 向量化过滤(选择)的位图结果集

A 向量化过滤用掩码位图标记满足的行,可紧凑传递、延迟物化、用位运算组合条件 ✓ 正确答案
B 过滤后必须立即物化所有列
C 位图无法表示过滤结果
D 过滤与位图无关
#

21. 向量化表达式求值的批量执行

A 表达式必须逐行解释求值
B 表达式求值与向量化无关
C 批量求值无法处理 null
D 表达式编译为对列向量的批量操作序列,SIMD 批量计算并处理 null,消除逐行解释开销 ✓ 正确答案
#

22. 向量化执行与 JIT 编译的组合

A JIT 与向量化互斥
B JIT 只能用于解释执行
C JIT 编译无启动开销
D 向量化提供批处理框架,JIT 把热路径编译为特化机器码(含 SIMD),消除解释开销,两者结合提升性能 ✓ 正确答案
#

23. ProxySQL 的查询缓存与黑名单

A 查询缓存不能减少后端压力
B ProxySQL 无法实现查询缓存
C 黑名单会缓存在结果
D 查询缓存通过 cache_ttl 缓存高频查询结果,黑名单通过规则拒绝/限流异常查询,共同实现减负与防护 ✓ 正确答案
#

24. ProxySQL 的故障转移与健康检查

A ProxySQL 不做健康检查
B ProxySQL 定期探测后端(SELECT 1),失败则摘除并从路由中剔除,恢复后重新加入,实现自动故障转移 ✓ 正确答案
C 健康检查失败也会继续路由流量
D 故障转移与健康检查无关