Sphinx 原生支援分散式搜尋:多節點分片索引 + 聚合節點合併結果。單機模擬多節點 即可並行化查詢。
source src1 { type = mysql; sql_query = SELECT id, text FROM table; }
index idx1 { type = plain; source = src1; }
searchd { dist_threads = 0; }
source src1 { type = mysql; sql_query = SELECT id, text FROM table; }
source src1p0 : src1 { sql_query = SELECT id, text FROM table WHERE id % 3 = 0; }
source src1p1 : src1 { sql_query = SELECT id, text FROM table WHERE id % 3 = 1; }
source src1p2 : src1 { sql_query = SELECT id, text FROM table WHERE id % 3 = 2; }
index idx1_template { type = plain; source = src1; }
index idx1p0 : idx1_template { source = src1p0; }
index idx1p1 : idx1_template { source = src1p1; }
index idx1p2 : idx1_template { source = src1p2; }
index idx1 { type = distributed; local = idx1p0; local = idx1p1; local = idx1p2; }
searchd { dist_threads = 3; }
id % 3 將資料均分 3 片 (生產環境建議用輔助表配合 sql_query_range)dist_threads = 3:啟用 3 執行緒並行查詢本地分片indexer 可同步並行建立 idx1p0~idx1p2idx1,Sphinx 內部自動分發合併matches 數量評估合併成本無需修改應用與資料庫,僅調整 Sphinx 配置即可釋放多核算力,極高性價比優化方案。