Merge pull request 'docs: correct the 1.4.0 upgrade step for the copy index' (#9) from docs/1.4.0-upgrade-note into main
Anti-EAV Lint + Quality Gate / anti-eav-lint (push) Successful in 11s
Tests / PHP Lint (push) Successful in 22s
Tests / Unit Tests (push) Successful in 1m12s
Tests / Integration Tests (push) Successful in 2m7s
Tests / PHPCS (push) Successful in 1m9s
Tests / PHPStan (push) Successful in 1m10s

This commit was merged in pull request #9.
This commit is contained in:
2026-09-28 00:08:56 +08:00
2 changed files with 9 additions and 5 deletions
+8 -4
View File
@@ -9,7 +9,7 @@ Versioning follows [Semantic Versioning](https://semver.org/).
## [1.4.0] — 2026-09-28 — 百萬級 listing 的路由排序與日期查詢(hardening 2.4)
**性質**:效能 + 修正。無 schema 變更;post status/date 副本的索引改為三欄(`wp tmdo post-status-sync` 就地替換)。
**性質**:效能 + 修正。無 schema 變更;post status/date 副本的索引改為三欄(見「升級後」)。
搭配 HivePress AddOn 0.5.0。來源:dev36 第 3 階壓測(130 萬 listing、121 萬 product、6.2 萬 vendor)。
### Changed
@@ -41,9 +41,13 @@ Versioning follows [Semantic Versioning](https://semver.org/).
### 升級後
- 已啟用 post status/date 副本的站(`tmdo_post_status_columns` 有 `ready` 的 group)執行一次
`wp tmdo post-status-sync`:替換索引並重新同步副本(dev36 130 萬列約 75 s)。未執行前
copy route 照常運作,只是維持 1.3.0 的速度。
- 只需替換索引:對 `tmdo_post_status_columns` 列出的每個 group 表執行
`ALTER TABLE <表> ADD INDEX idx_post_status_date_id (post_status, post_date, post_id), DROP INDEX idx_post_status_date`
(空表瞬間完成,dev36 130 萬列約 5 s)。未替換前 copy route 照常運作,只是維持 1.3.0 的速度。
- **不要為了換索引執行 `wp tmdo post-status-sync`**:它除了替換索引,還會替**所有**尚未有副本的
post group 加上 `post_status` / `post_date` 欄位並逐列回填(大表 ALTER + 全表 UPDATE;dev36
130 萬列約 75 s,上千萬列的站更久)。只有要讓更多 group 啟用 copy route 時才執行,並先在
離峰時段以 `--dry-run` 確認列數。
- 效能數字(dev36 前台,routed):價格區間 0.34 s、價格排序 0.37 s、時薪排序 0.35 s、
評分排序 0.51 s、關鍵字 + 價格 0.59 s(原生 6–43 s)。
+1 -1
View File
@@ -110,7 +110,7 @@ The Classifier tab analyzes your existing `wp_postmeta` data (access frequency,
= 1.4.0 =
* Flat-first sorts read the ID tie-break from the flat post_id, so a declared (column, post_id) index returns rows in order; ties now follow the sort direction
* Meta clauses without a value route as EXISTS; HivePress's featured-listing lookup on every search page uses the flat table
* Date-ordered routed searches drop the redundant GROUP BY and use a (post_status, post_date, post_id) index (run `wp tmdo post-status-sync` once to replace the index)
* Date-ordered routed searches drop the redundant GROUP BY and use a (post_status, post_date, post_id) index (replace the index on the tables listed in `tmdo_post_status_columns`; `wp tmdo post-status-sync` also adds the copy columns to every other post group)
* Rows rebuilt by the migration engine keep their status/date copies and invalidate cached routed counts
* Live test tools no longer flush the object cache