我壓力測試我的數據庫的地理定位搜索系統。在執行弧距離計算之前,已經有很多優化建立在已有的方框長/拉特索引系統中以縮小搜索範圍。我的目標是從一張桌上爲10,000,000個用戶提供服務。MySQL(MariaDB)在查詢中執行超時從PHP調用
目前我的查詢時間是基於其他條件,如年齡,性別等,在0.1到0.01秒之間。這是爲10,000,000個用戶在英國各地均勻分佈。
我有一個限制條件,因爲我需要向用戶顯示X人,其中X可以是16和40之間
的問題是,當沒有其他用戶匹配,查詢可以/用戶數需要很長時間,因爲它不能很快達到極限,並且可能必須掃描400,000行。
可能有其他的優化技術,我可以看,但我的問題是:
有沒有辦法讓查詢X秒後放棄?如果它需要超過1秒,那麼它不會返回結果,我很高興這發生。在僞查詢代碼會是這樣的:從表
SELECT數據WHERE .......上限16 GIVEUP 1秒後
我曾經想過一個cron解決殺死查詢速度慢,但就是不是很優雅。查詢將在生產中每隔幾秒鐘調用一次,因此cron需要連續開啓。
有什麼建議嗎?
- 版本是10.1.14,MariaDB的
mysql的版本? – asurbernardo
http://serverfault.com/questions/401828/how-to-automatically-kill-slow-mysql-queries-after-n-seconds –
可能的重複版本是10.1.14-MariaDB – PlatformDating