Re: [請益] PHP+MySQL大量資料存取
※ 引述《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
02/04 12:26, 4F
推
02/04 15:05, , 5F
02/04 15:05, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
0
18