Re: [請益] mssql_query的問題

看板PHP作者 (跟著鄉民進來看熱鬧)時間17年前 (2008/03/17 23:33), 編輯推噓0(0018)
留言18則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《okdla (跟著鄉民進來看熱鬧)》之銘言: : 不知道有人遇過這個問題嗎??? : 我用mssql_query擷取3萬筆資料結果當掉了 : 出現allowed memory size of xxx bytes... : 我上google去找解決的方法...發現可以用ini_set("memory_lmit",xx) : 來解決,於是我把我的memory_limit一直加大到500M,終於解決了 : 可是因為資料筆數會一直增加,所以以後查詢的時候一定又會爆記憶體 : 那我就必須一直增加memory_limit,可是主機的記憶體大小只有1G,電腦上的 : 分頁記憶大小也才500M,這樣會對主機有什麼不好的影響嗎??? : 再來就是,mssql並不像mysql有limit 的功能,雖然有top 但是卻不是很好用 : 所以在擷取資料的時候沒有辦法分頁的擷取....只能一次把全部的資料取出來 : 然後再用mssql_data_seek去做分頁..可是一但資料筆數很多再加上查詢的欄位很多.. : 就會如同上述一樣出現當掉的訊息...不知道有沒有什麼方法能夠解決呢??? 我找到解決的方法了... 我發現當mssql_query這個程式在每次查詢200筆(是依我的資料表來說)之內memory都不會 增加(我是用memory_get_usage來實驗的) 所以如果要查上萬筆的資料只要做迴圈利用top n 和 order by 來抓取資料進陣列 就不會有記憶體衝爆的問題了... 3萬筆資料(以我的資料表來說)的memory用陣列儲存不會超過250M(不過欄位一定不能有text) 所以這個方法在資料筆數小於10萬筆(可能memory_limit要設大到900M)都蠻好用的... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.230.168.159

03/18 20:37, , 1F
我發現php裡有內建可以做分頁的 mssql_fetch_batch函式...
03/18 20:37, 1F

03/19 12:02, , 2F
你這樣的做法當系統在比較多人情使用的情況下..系統會死
03/19 12:02, 2F

03/19 12:03, , 3F
資料庫..並不是單純只用來存放資料用的..加油吧
03/19 12:03, 3F

03/19 13:13, , 4F
我是沒用過MSSQL~不過就我的經驗 在討論效能問題時遇到資料庫
03/19 13:13, 4F

03/19 13:14, , 5F
都會抓SQL指令出來一起檢討,沒式子討論再多也沒用
03/19 13:14, 5F

03/19 13:15, , 6F
連你資料庫如何規畫也不清楚 ~
03/19 13:15, 6F

03/19 13:18, , 7F
更何況,你這種例子最根本的解決方法就是在crontab寫一支程式
03/19 13:18, 7F

03/19 13:19, , 8F
固定一段時間統計資料到另一個table去,並給與一個FLAG
03/19 13:19, 8F

03/19 13:20, , 9F
下次統計時再從FLAG開始計算,之後只要直接讀取該table內的
03/19 13:20, 9F

03/19 13:20, , 10F
資料即可
03/19 13:20, 10F

03/19 13:21, , 11F
效能問題不就解決了?
03/19 13:21, 11F

03/19 13:21, , 12F
如果 你的統計用的SQL指令連JOIN IF 這些東西都沒用到
03/19 13:21, 12F

03/19 13:21, , 13F
超過十萬筆就會慢,真的很懷疑你規劃的資料庫有問題 ~
03/19 13:21, 13F

03/20 00:30, , 14F
2F有更好的方法嗎???
03/20 00:30, 14F

03/20 11:03, , 15F
上次就跟你說過了..請設index..
03/20 11:03, 15F

03/20 11:04, , 16F
你現在面對的只是3~5萬筆..就會掛掉.一定是什麼index都沒設
03/20 11:04, 16F

03/20 11:06, , 17F
index的確會稍微影響新增/修改時的時間..但你在設定沒有太
03/20 11:06, 17F

03/20 11:06, , 18F
大的問題下..對新增/修改的慢你根本感覺不出來
03/20 11:06, 18F
文章代碼(AID): #17tezIiv (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #17tezIiv (PHP)