catalog_product_price原来8分钟,最近跑到一小时,代码没改。MySQL里 Created_tmp_disk_tables增长很快,临时目录磁盘也被打满。价格索引的大GROUP BY和JOIN一旦落盘,速度会断崖式下降。

SHOW GLOBAL STATUS LIKE 'Created_tmp%';
SHOW VARIABLES LIKE 'tmp_table_size';
SHOW VARIABLES LIKE 'max_heap_table_size';
SHOW VARIABLES LIKE 'tmpdir';
df -h

不要立刻把tmp_table_size调到几个G,这是每连接上限,很多并发连接会吃光内存。先抓慢SQL和EXPLAIN,确认是不是某个第三方价格表缺索引、客户组或Website维度暴涨。

磁盘也要看延迟

tmpdir放在慢盘或空间接近100%,即使配置没变也会变慢。清理前确认文件归属,不要在MySQL运行时手删临时文件。

优化后用同一数据副本跑完整索引,比较总耗时、临时落盘数量和峰值内存。前台抽查普通价、特价、tier price和可配置商品,不能用“命令变快了”代替正确性验证。