|
php與MySQL相比具有如下優勢:
1、考慮整個網站的可伸縮性和整體性能,在應用層(php)中排序明顯會降低數據庫的負載,從而提升整個網站的擴展能力。而數據庫的排序,實際上成本是非常高的,消耗內存、CPU,如果并發的排序很多,DB 很容易到瓶頸。
2、如果在應用層(php)和MYSQL之間還存在數據中間層,合理利用,php會有更好的收益。
3、php在內存中的數據結構專門針對具體應用來設計,比數據庫更為簡潔、高效;
4、php不用考慮數據災難恢復問題,可以減少這部分的操作損耗;
5、php不存在表的鎖定問題;
6、MySQL中排序,請求和結果返回還需要通過網絡連接來進行,而php中排序之后就可以直接返回了,減少了網絡IO。
至于執行速度,差異應該不會很大,除非應用設計有問題,造成大量不必要的網絡IO。另外,應用層要注意php 的 Cache 設置,如果超出會報告內部錯誤;此時要根據應用做好評估,或者調整Cache。具體選擇,將取決于具體的應用。
列出一些php中執行排序更優的情況:
1、數據源不在MySQL 中,存在硬盤、內存或者來自網絡的請求等;
2、數據存在 MySQL 中,量不大,而且沒有相應的索引,此時把數據取出來用php排序更快;
3、數據源來自于多個MySQL 服務器,此時從多個 MySQL 中取出數據,然后在php中排序更快;
4、除了MySQL 之外,存在其他數據源,比如硬盤、內存或者來自網絡的請求等,此時不適合把這些數據存入MySQL 后再排序;
列出一些必須在MySQL中排序的實例:
1、MySQL中已經存在這個排序的索引;
2、MySQL中數據量較大,而結果集需要其中很小的一個子集;比如 1000000 行數據,取TOP 10;
3、對于一次排序、多次調用的情況,比如統計聚合的情形,可以提供給不同的服務使用,那么在MySQL 中排序是首選的。另外,對于數據深度挖掘,通常做法是在應用層做完排序等復雜操作,把結果存入MySQL即可,便于多次使用。
4、不論數據源來自哪里,當數據量大到一定的規模后,由于占用內存/Cache 的關系,不再適合php中排序了;此時把數據復制、導入或者存在MySQL ,并用INDEX 優化,是優于php 的。不過,用 Java,甚至 C++ 來處理這類操作會更好。 有些類似大數據集聚合或者匯總的數據,在客戶端排序得不償失。當然,也有用類似搜索引擎的思路來解決類似應用的情況。
從網站整體考慮,就必須加入人力和成本的考慮。假如網站規模和負載較小,而人力有限(人數和能力都可能有限),此時在應用層(php)做排序要做不少開發和調試工作,耗費時間,得不償失;不如在DB 中處理,簡單快速。對于大規模的網站,電力、服務器的費用很高,在系統架構上精打細算,可以節約大量的費用,是公司持續發展之必要;此時如果能在應用層(php) 進行排序并滿足業務需求,盡量在應用層進行。
關于php中執行排序與MySQL中執行排序的相關知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!
php技術:數據庫中排序的對比及使用條件詳解,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。