我試圖在MySQL服務器前面實現一個代理層,它將捕獲冗餘SQL查詢並將它們只發送一次到服務器。換句話說,我有許多與MySQL交談的客戶端(在PHP,Perl中,在不同的網絡節點上),並且經常重複相同的查詢。當流量增加時,MySQL通常會崩潰。mysql前面的代理冗餘刪除
問題是 - 你知道任何開源(或商業)工具,可以幫助嗎?我嘗試了MySQL Proxy,但看起來它不能幫助。
我試圖在MySQL服務器前面實現一個代理層,它將捕獲冗餘SQL查詢並將它們只發送一次到服務器。換句話說,我有許多與MySQL交談的客戶端(在PHP,Perl中,在不同的網絡節點上),並且經常重複相同的查詢。當流量增加時,MySQL通常會崩潰。mysql前面的代理冗餘刪除
問題是 - 你知道任何開源(或商業)工具,可以幫助嗎?我嘗試了MySQL Proxy,但看起來它不能幫助。
你可能想看看HAProxy和how it works。
這裏有兩個額外的建議
SUGGESTION#1設置羣集
如果你的數據是所有的InnoDB,你應該嘗試Percona XtraDB Cluster,並連同它使用HAProxy的。您可以在羣集中的所有服務器(包括寫入主文件)上進行負載平衡。
SUGGESTION#2安裝程序通過MySQL複製羣集,以1個或多個數據庫服務器
使用HAProxy的負載平衡你的整個讀取從
如果你的預算是讀取和您的數據比較小,setup multiple MySQL Instances on one server
兩個建議:
通常人們試圖解決這個緩存sql在應用程序端返回的數據。 (使用memchached或類似的應用程序來避免重新查詢數據庫)。我從來沒有想過這件事。 – mobius
問題:當你說「經常重複相同的SELECT查詢」時,請求中是否具有相同的參數,或者是具有不同參數請求的同一查詢? – RolandoMySQLDBA
這是相同的查詢具有相同的參數 – yegor256