Skip to content

第 7 站练习答案 ​

← 本站索引

倾斜数据 ​

sql
INSERT INTO sales_order(customer_id, status, total_amount)
SELECT customer_id, 'paid', 1.00
FROM customer
LIMIT 1;

ANALYZE TABLE sales_order UPDATE HISTOGRAM ON status WITH 16 BUCKETS;
EXPLAIN FORMAT=JSON
SELECT * FROM sales_order WHERE status = 'cancelled';

少量实验数据不能形成可靠结论;应批量生成可重复分布并保存数据生成脚本。

基准模板 ​

至少记录:版本与配置、schema、数据量与分布、查询和参数、并发、预热方式、运行次数、P50/P95/P99、扫描行数、CPU/I/O、锁等待、写入吞吐、副本延迟及回滚阈值。

P95 不是唯一约束。CPU 翻倍可能降低容量、增加排队并放大故障,因此需要同时满足资源和吞吐预算。

加码题解:优化器证据 ​

sql
ANALYZE TABLE orders;
SELECT DIGEST_TEXT, AVG_TIMER_WAIT, SUM_ROWS_EXAMINED
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_ROWS_EXAMINED DESC LIMIT 10;

关键推理 ​

更新统计信息并从 digest 观察长期样本,避免用一次偶然查询做结论。

可替代方案 ​

对分布偏斜列使用直方图,并在数据变化后重新评估。

典型错误 ​

只看平均延迟、忽略锁等待和返回数据量,或一次改多个变量无法归因。

复盘时请附上版本、隔离级别、执行计划或恢复位置中的相关证据;没有证据的“看起来正确”不算完成。

用心记录每一步成长