PHP/MYSQL 查詢大數據
PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50)
MYSQL:5.1.51
若是我們有的一張表有幾百萬或幾千萬的記載,我們要運用 PHP 將一切的記載都獲取過來(遍歷數據表)進行處置。查詢句子:
SELECT * FROM largetable;
PS:為了證明上面的做法是最佳的方法,我測驗運用 largetable 中的一個字段做 where ,以及 LIMIT,OFFSET 。上面那種 WHERE 取得成果很慢,固然用了索引。后邊這種 LIMIT 可以讓你有一種想死的覺得(有愛好可以了解下,《分頁優(yōu)化》)。
以 MYSQL 以及PDO_MYSQL 為例,測驗直接運用以下代碼,必然會呈現超內存的狀況:
$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 將查詢成果悉數緩存到了客戶端,也就是 PHP 履行地點機器上。這樣若是我們要 SELECT * FROM LARGETABLE 查詢的記載在 百萬以上的時分 ,緩存的成果就會非常大,超出 PHP 運用內存。所以為了防止這樣狀況就需要封閉客戶端的緩存。
這里供給二個測驗腳本,分別為 MYSQL、PDO_MYSQL 封閉緩存后查詢樣例。點擊下載:mysql_query
以下是 PDO_MYSQL 在查詢 ~100W 以及 ~200W (540M)數據成果(由于我的 PHP 內存運用設置了1G所以沒掛:) )
可以很明顯的看出在緩存成果后占用內存驚人…,當我們處置千萬數據的時分必掛。
以下是 PDO_MYSQL 封閉緩存查詢 ~200W 的數據成果。這下處置千萬以及E級的數據的時分,對內存表明很淡定。
PS:若是你要處置的數據就幾十萬,你仍是調大點內存好了。比方 MYSQL:
mysql_unbuffered_query() 的優(yōu)點是有價值的:在 mysql_unbuffered_query() 回來的成果集之上不能運用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 發(fā)送一條新的 SQL 查詢之前,必須提取掉一切未緩存的 SQL 查詢所發(fā)生的成果行。
- 1JavaScript 性能提升技巧
- 2 玩具租賃商城系統需求2
- 3如何讓搜索引擎看到更真實的網頁
- 4網站備案所需材料
- 5企業(yè)為什么偏愛要求資深的網站維護單位做網站呢?
- 6MySql常用命令總結
- 7企業(yè)四網合一網站升級版1
- 8房地產行業(yè)微信營銷方案3
- 9P2P網貸的營銷戰(zhàn)略特點
- 10p2p網貸系統可分為三部分
- 11PhoneGap新手總是需要一些基礎問題的解答
- 12網站制作如何設計網站
- 13ecshop中jQuery沖突解決
- 14如何使自己的企業(yè)網站和同行業(yè)的網站不類似沖突
- 15網站改版注意的問題
- 16房地產行業(yè)微信營銷方案2
- 17電子商務網站的下一個掘金點-----O2O
- 18Dreamweaver插件
- 19Linux系統平安Shell劇本用于Linux系統的平安初始化劇本
- 20考證輔導網站制作解決方案
- 21泛普軟件-U2ME網站設計方案計劃表
- 22PHP 5中垃圾回收算法的演化
- 23玩具租賃系統功能列表
- 24玩具租賃商城系統需求3
- 25Asia-Pacific Economic Cooperation 工商咨詢理事會亞太中小企業(yè)峰會
- 26企業(yè)信息統計系統開發(fā)方案
- 27魅妝社區(qū)項目開發(fā)文檔
- 28GAE上搭建PHP環(huán)境并開啟URL
- 292014年玩具租賃市場達8億,如何抓住這市場良機?
- 30網貸平臺主要運營模式主要有兩類---債權轉讓模式
成都公司:成都市成華區(qū)建設南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓