欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

數(shù)據(jù)庫中排序的對比及使用條件詳解

 更新時間:2012年02月23日 21:49:28   作者:  
PHP與MySQL數(shù)據(jù)庫中排序的對比及使用條件是本文我們主要要介紹的內容,通常來說,執(zhí)行效率需要考慮CPU、內存和硬盤等的負載情況
假定MySQL服務器和PHP服務器都已經(jīng)按照最適合的方式來配置,那么系統(tǒng)的可伸縮性(Scalability)和用戶感知性能(User-perceived Performance)是我們追求的主要目標。在實際運行中,MYSQL 中數(shù)據(jù)往往以 HASH tables、BTREE 等方式存貯于內存,操作速度很快;同時INDEX 已經(jīng)進行了一些預排序;很多應用中,MySQL 排序是首選。

  PHP與MySQL相比具有如下優(yōu)勢:

  1、考慮整個網(wǎng)站的可伸縮性和整體性能,在應用層(PHP)中排序明顯會降低數(shù)據(jù)庫的負載,從而提升整個網(wǎng)站的擴展能力。而數(shù)據(jù)庫的排序,實際上成本是非常高的,消耗內存、CPU,如果并發(fā)的排序很多,DB 很容易到瓶頸。

  2、如果在應用層(PHP)和MYSQL之間還存在數(shù)據(jù)中間層,合理利用,PHP會有更好的收益。

  3、PHP在內存中的數(shù)據(jù)結構專門針對具體應用來設計,比數(shù)據(jù)庫更為簡潔、高效;

  4、PHP不用考慮數(shù)據(jù)災難恢復問題,可以減少這部分的操作損耗;

  5、PHP不存在表的鎖定問題;

  6、MySQL中排序,請求和結果返回還需要通過網(wǎng)絡連接來進行,而PHP中排序之后就可以直接返回了,減少了網(wǎng)絡IO。

  至于執(zhí)行速度,差異應該不會很大,除非應用設計有問題,造成大量不必要的網(wǎng)絡IO。另外,應用層要注意PHP 的 Cache 設置,如果超出會報告內部錯誤;此時要根據(jù)應用做好評估,或者調整Cache。具體選擇,將取決于具體的應用。

  列出一些PHP中執(zhí)行排序更優(yōu)的情況:

  1、數(shù)據(jù)源不在MySQL 中,存在硬盤、內存或者來自網(wǎng)絡的請求等;

  2、數(shù)據(jù)存在 MySQL 中,量不大,而且沒有相應的索引,此時把數(shù)據(jù)取出來用PHP排序更快;

  3、數(shù)據(jù)源來自于多個MySQL 服務器,此時從多個 MySQL 中取出數(shù)據(jù),然后在PHP中排序更快;

  4、除了MySQL 之外,存在其他數(shù)據(jù)源,比如硬盤、內存或者來自網(wǎng)絡的請求等,此時不適合把這些數(shù)據(jù)存入MySQL 后再排序;

  列出一些必須在MySQL中排序的實例:

  1、MySQL中已經(jīng)存在這個排序的索引;

  2、MySQL中數(shù)據(jù)量較大,而結果集需要其中很小的一個子集;比如 1000000 行數(shù)據(jù),取TOP 10;

  3、對于一次排序、多次調用的情況,比如統(tǒng)計聚合的情形,可以提供給不同的服務使用,那么在MySQL 中排序是首選的。另外,對于數(shù)據(jù)深度挖掘,通常做法是在應用層做完排序等復雜操作,把結果存入MySQL即可,便于多次使用。

  4、不論數(shù)據(jù)源來自哪里,當數(shù)據(jù)量大到一定的規(guī)模后,由于占用內存/Cache 的關系,不再適合PHP中排序了;此時把數(shù)據(jù)復制、導入或者存在MySQL ,并用INDEX 優(yōu)化,是優(yōu)于PHP 的。不過,用 Java,甚至 C++ 來處理這類操作會更好。 有些類似大數(shù)據(jù)集聚合或者匯總的數(shù)據(jù),在客戶端排序得不償失。當然,也有用類似搜索引擎的思路來解決類似應用的情況。

  從網(wǎng)站整體考慮,就必須加入人力和成本的考慮。假如網(wǎng)站規(guī)模和負載較小,而人力有限(人數(shù)和能力都可能有限),此時在應用層(PHP)做排序要做不少開發(fā)和調試工作,耗費時間,得不償失;不如在DB 中處理,簡單快速。對于大規(guī)模的網(wǎng)站,電力、服務器的費用很高,在系統(tǒng)架構上精打細算,可以節(jié)約大量的費用,是公司持續(xù)發(fā)展之必要;此時如果能在應用層(PHP) 進行排序并滿足業(yè)務需求,盡量在應用層進行。

  關于PHP中執(zhí)行排序與MySQL中執(zhí)行排序的相關知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!

相關文章

  • PHP滾動日志的代碼實現(xiàn)

    PHP滾動日志的代碼實現(xiàn)

    所謂滾動日志,顧名思義,就是記錄一個模塊的日志用一系列的日志文件,同一模塊文件個數(shù)有限制,最多maxNum個,大小也有限制,最大maxSize字節(jié),文件名有一定的命名方式,比如:testlog.log、testlog_1.log,testlog_2.log、、、、、、
    2015-06-06
  • PHP實現(xiàn)通過文本文件統(tǒng)計頁面訪問量功能示例

    PHP實現(xiàn)通過文本文件統(tǒng)計頁面訪問量功能示例

    這篇文章主要介紹了PHP實現(xiàn)通過文本文件統(tǒng)計頁面訪問量功能,涉及php文件讀寫、數(shù)值計算及圖形操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • PHP生成唯一的促銷/優(yōu)惠/折扣碼(附源碼)

    PHP生成唯一的促銷/優(yōu)惠/折扣碼(附源碼)

    每一個電子商務網(wǎng)站,現(xiàn)在有一種或多種類型的優(yōu)惠/折扣/優(yōu)惠券系統(tǒng),給大家分享一下如何在PHP生成唯一的促銷/折扣碼;因此,今天將討論這樣一個優(yōu)惠碼的實現(xiàn)過程,需要了解的朋友可以參考下
    2012-12-12
  • 啟用Csrf后POST數(shù)據(jù)時出現(xiàn)的400錯誤

    啟用Csrf后POST數(shù)據(jù)時出現(xiàn)的400錯誤

    這篇文章主要介紹了啟用Csrf后POST數(shù)據(jù)時出現(xiàn)的400錯誤的相關資料,需要的朋友可以參考下
    2015-07-07
  • PHP的Yii框架中View視圖的使用進階

    PHP的Yii框架中View視圖的使用進階

    這篇文章主要介紹了PHP的Yii框架中View視圖的使用進階,包括布局和數(shù)據(jù)塊的創(chuàng)建使用等,需要的朋友可以參考下
    2016-03-03
  • PHP7正式版測試,性能驚艷!

    PHP7正式版測試,性能驚艷!

    本周迎來2015年編程語言界的兩件大事,Swift7 開源, PHP7 發(fā)布,這兩件大事,都是可以載入相應的編程語言的史冊級的事件,感興趣的小伙伴們可以參考一下
    2015-12-12
  • php基于curl實現(xiàn)隨機ip地址抓取內容的方法

    php基于curl實現(xiàn)隨機ip地址抓取內容的方法

    這篇文章主要介紹了php基于curl實現(xiàn)隨機ip地址抓取內容的方法,可生成隨機IP進行訪問,涉及curl設置與使用技巧,需要的朋友可以參考下
    2016-10-10
  • PHP使用正則表達式獲取微博中的話題和對象名

    PHP使用正則表達式獲取微博中的話題和對象名

    這篇文章主要介紹了PHP使用正則表達式獲取微博中的話題和對象名,涉及php正則匹配與字符串操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • set_include_path和get_include_path使用及注意事項

    set_include_path和get_include_path使用及注意事項

    set_include_path 設置默認包含路徑,本文將介紹下其的使用方法,及注意事項,感興趣的朋友可以了解下,或許對你學習php有所幫助
    2013-02-02
  • php array_map()函數(shù)實例用法

    php array_map()函數(shù)實例用法

    在本篇文章里小編給大家分享了一篇關于php array_map()函數(shù)實例用法,有興趣的朋友們可以學習下。
    2021-03-03

最新評論