Re: [請益] PHP+MySQL大量資料存取

看板PHP作者 (吧啦)時間16年前 (2010/01/08 23:50), 編輯推噓3(302)
留言5則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《OpenGoodHate (什麼東西什麼東西)》之銘言: : 如果我想存放的資料超過千萬筆的話 這要從頭說起. 當你流量&資料量大到一種地步, 那所以看似簡單的東西都不再簡單 單單一個 select 要個5~6s, 那頁面要等幾秒,這樣有多少User會想來, 太多人同時上線時, 會造成DB沒辦法吃下那麼多query要怎麼樣改寫程式, 檔案結構一個目錄下放太多檔案會讓讀取的速度變慢(好像要看檔案結構), 用多台Web去吃那麼大的流量,那跨Web時 Session怎麼辦, 還有程式, 圖片同步的問題? 如果你有那麼大的流量&資料,必定有其重要性那機器掛掉怎麼辦?? DB 的分流, 備援, query 的最佳化, 檔案目錄架構, 寫一般程式要注意的地方, NFS 的 SPOF, web 分流, 程式備援 以上這些要去外面找方案是上百萬元的 : 在MYSQL應該要怎麼存放 : 或是說表單設計上應該如何調整 : 還是我架Cluster 架構的資料庫就可以對應了 : 因為沒有用過大型主機的Clustrt架構 : (硬體E5400 CPU + 2G RAM + 7200RPM HDD 先說DB好了, 不用說太多光是你 HD i/o不夠快. 即使cpu吃的下也會卡在寫入. 硬體的東西反正就是吃錢, 架機器. 沒錢那就切小資料量, 這邊 Google是專家 利用低階的機器大量的網格運算, 加速一般要看似永遠的運算(這是雲端的真義啊) 但不管如何寫入DB是個很耗時的動作, 一筆資料進來有可能要把寫入的步驟 拆成數次, 每送一次進DB你就要等一次, 所以在大型的DB 都會支援 stored procedure, 它可以讓你把好幾個 insert 縍在一起, 省點連DB的時間. 但寫入的問題太多了 在多 cluster (Master/Slaver) 下要如何同步(heart-bit, warm, cold 你要那一種), 如果一台Master不夠寫入用, 那在 Multi-Master 的架構下寫入, primary key 衝突? 連線掛掉後的覆原? statement based replication下的DB鎖定? shard disk? 切了那麼多台 DB 後, 該不會你要設那麼多台DB得連線資料吧??? 當然不是, 建 Connecting Pool 統一從個點去分流你的 db 動作 連線排程分流, DB Query Cache, parallel query , 讓connecting pool 把DBs 化成一個大DB . 好像都還沒說到php有關的厚. 續待... ... -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.98.30

01/09 01:06, , 1F
推這篇
01/09 01:06, 1F

01/09 03:03, , 2F
推一下,目前還只有想到從程式的角度減少資料量
01/09 03:03, 2F

01/09 15:15, , 3F
到了你那個數量以上,絕對硬吃硬體效能...
01/09 15:15, 3F

02/04 12:26, , 4F
哇... 2010 續待 現在還沒寫完.
02/04 12:26, 4F

02/04 15:05, , 5F
拖稿很嚴重唷
02/04 15:05, 5F
文章代碼(AID): #1BHrH9kl (PHP)
討論串 (同標題文章)
文章代碼(AID): #1BHrH9kl (PHP)