監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
鷹潭網(wǎng)站建設(shè)公司

當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司

PHP/MYSQL 查詢大數(shù)據(jù)

申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114

鷹潭網(wǎng)站建設(shè)www.diyphp.net

PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50)

  MYSQL:5.1.51

  若是我們有的一張表有幾百萬(wàn)或幾千萬(wàn)的記載,我們要運(yùn)用 PHP 將一切的記載都獲取過(guò)來(lái)(遍歷數(shù)據(jù)表)進(jìn)行處置。查詢句子:

  SELECT * FROM largetable;

  PS:為了證明上面的做法是最佳的方法,我測(cè)驗(yàn)運(yùn)用 largetable 中的一個(gè)字段做 where ,以及 LIMIT,OFFSET 。上面那種 WHERE 取得成果很慢,固然用了索引。后邊這種 LIMIT 可以讓你有一種想死的覺得(有愛好可以了解下,《分頁(yè)優(yōu)化》)。

  以 MYSQL 以及PDO_MYSQL 為例,測(cè)驗(yàn)直接運(yùn)用以下代碼,必然會(huì)呈現(xiàn)超內(nèi)存的狀況:

  $result = mysql_query($sql);

  while ($rowset = mysql_fetch_assoc($mysql)) {

  ...

  $stmt = $dbh->prepare($sql);

  $stmt->execute();

  while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {

  ...

  緣由在于在查詢履行后,PHP 的MYSQL、PDO_MYSQL 將查詢成果悉數(shù)緩存到了客戶端,也就是 PHP 履行地點(diǎn)機(jī)器上。這樣若是我們要 SELECT * FROM LARGETABLE 查詢的記載在 百萬(wàn)以上的時(shí)分 ,緩存的成果就會(huì)非常大,超出 PHP 運(yùn)用內(nèi)存。所以為了防止這樣狀況就需要封閉客戶端的緩存。

  這里供給二個(gè)測(cè)驗(yàn)?zāi)_本,分別為 MYSQL、PDO_MYSQL 封閉緩存后查詢樣例。點(diǎn)擊下載:mysql_query

  以下是 PDO_MYSQL 在查詢 ~100W 以及 ~200W (540M)數(shù)據(jù)成果(由于我的 PHP 內(nèi)存運(yùn)用設(shè)置了1G所以沒掛:) )

  可以很明顯的看出在緩存成果后占用內(nèi)存驚人…,當(dāng)我們處置千萬(wàn)數(shù)據(jù)的時(shí)分必掛。

  以下是 PDO_MYSQL 封閉緩存查詢 ~200W 的數(shù)據(jù)成果。這下處置千萬(wàn)以及E級(jí)的數(shù)據(jù)的時(shí)分,對(duì)內(nèi)存表明很淡定。

  PS:若是你要處置的數(shù)據(jù)就幾十萬(wàn),你仍是調(diào)大點(diǎn)內(nèi)存好了。比方 MYSQL:

  mysql_unbuffered_query() 的優(yōu)點(diǎn)是有價(jià)值的:在 mysql_unbuffered_query() 回來(lái)的成果集之上不能運(yùn)用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 發(fā)送一條新的 SQL 查詢之前,必須提取掉一切未緩存的 SQL 查詢所發(fā)生的成果行。

 

發(fā)布:2007-03-31 14:58    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章:
鷹潭OA
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普鷹潭網(wǎng)站建設(shè)公司其他應(yīng)用

鷹潭軟件開發(fā)公司 鷹潭門禁系統(tǒng) 鷹潭物業(yè)管理軟件 鷹潭倉(cāng)庫(kù)管理軟件 鷹潭餐飲管理軟件 鷹潭網(wǎng)站建設(shè)公司