資料記錄
假設,對於來自中心**交換機的所有**呼叫,都是要使用mysql進行實時的資料記錄(logging),或者,apache中已經安裝了mode_log_sql模組,可以將web站點的所有訪問資訊直接記錄到表中,那麼這類應用中,熟讀了能是最重要的設計指標,沒人希望資料庫因此陷入瓶頸狀態,myisam引擎和archive引擎非常適合這類應用,因為他們消耗的系統開銷很小,並且支援每秒鐘高達數千記錄的插入,另外,pbxt儲存引擎可能也很適合這種資料記錄應用,
事情開起來可能很簡單,如果還要執行查詢彙總這些資料的操作這就有問題了 ,嚴重減緩的資料的插入操作
一種使用mysql的複製特性,把資料複製到另乙個伺服器上面去,執行那些對cpu和資源要求苛刻的程式,這可以將主伺服器騰出來,繼續完成插入此操作,同事也不用擔心,實時資料的記錄
當然也可以選擇在低負載的時候進行查詢,不過隨著應用的增長這不是乙個很好地選擇
另一種選擇就是合併表,調整應用,不是將所有的記錄都存在一張表中,而是將資料記錄到不同的表中,表可以根據年份,月份,源表名來規定,例如web_logs_2008_01或者web_logs_jan然後定義乙個合併表,用於相關的查詢,合併表中儲存了彙總的所有的資料,按日或周策略都是一樣的,只需建立特定的表明,例如在web_logs_2008_01的表中不需要進行寫操作,執行相關的查詢操作,而對於當前表可以不斷實時記錄資料
有些表資料用於編制目錄,或分列清單(如工作崗位,競拍物品,不動產等),在這些表上的讀操作遠比寫操作多,對於這類表,加入不介意myisam的崩潰問題,那麼選擇myisam是很合適的,不過不要 低估崩潰的問題的重要性,許多使用者根本不了解那些不確保一定能把資料寫入磁碟的 的風險,(可以模擬,在測試伺服器上模擬真實的負載,執行應用,並真的拔下電源,對於從崩潰中的資料,第一手的資料是無價的)
不要輕易相信myisam比innodb之類快的說法,這並不完全正確,在很多環境下,innodb都遠遠快於myisam,特別是 使用聚集索引,或者將資料裝入記憶體中的應用,
如果涉及任何訂單處理,事物操作一般是必不可少的,另乙個問題是引擎是否要支援外來鍵約束,這可能innodb是最佳的選擇
對於mysql使用者,主題討論論壇,應用是乙個很有趣的問題,目前有數百個基於php或者perl的免費用,支援主題討論的功能,其中大多數應用在處理資料庫中操作效率不高,比如他們常常為了每乙個請求,要執行一堆的查詢,其中有些應用是』非資料庫相關』的,過意他們的查詢不能利用發揮任何一種資料庫的長處,另外這類應用還要常常更新計數器,或者為各種主題討論計算訪問統計資訊,很多這樣的應用只使用的幾個表來儲存所有資料,因此幾個核心的表就會變成讀寫負載非常重,寫操作也很頻繁的表,另外為了保持資料庫的一致性,被迫使用枷鎖的機制,也成為徵用現象的乙個重要源頭
儘管有這些設計的缺陷,大多數這類應用在低負載的情況下,還是可以良好的工作的,不過,如果web站點的規模迅速增長,流量增加巨大,那麼應用可能會因此變得非常慢,一種典型的解決方案,是換一種可以處理高負載的讀/寫儲存引擎,不過,如果使用者這麼做,有時可能驚訝的發現,應用系統比原來更慢了
>select count(*) from table;
問題是,不是所有引擎都能很快執行這類查詢,myisam可以,其他的恐怕不行,對於所有親情來說,都有類似的例子,
如果要發布乙個機遇cd-rom或***-rom,並且使用mysql資料檔案的應用,可以考慮使用myisam表或壓縮的myisam表,這些表容易彼此隔離,並且支援在不同的介質上相互拷貝,比起壓縮的 表,壓縮的myisam表只占用很少的儲存空間但其資料只能是唯讀的,對於某些應用,這可能是乙個問題,但對於那些資料總放在唯讀介質上的應用來書沒有理由不選擇使用壓縮表
mysql儲存引擎選擇
常用的儲存引擎為myisam和innodb,其它引擎有ndb cluster merge memory等等。myisam是mysql的預設搜尋引擎,其中的每乙個表都被存放為三個檔案 frm表結構資訊 myd資料檔案 myi索引檔案。myisam支援b tree索引 r tree索引和full tex...
MySQL儲存引擎 選擇
mysql有多種儲存引擎 myisam innodb merge memory heap bdb berkeleydb example federated archive csv blackhole。mysql支援數個儲存引擎作為對不同表的型別的處理器。mysql儲存引擎包括處理事務安全表的引擎和處...
MySql儲存引擎選擇
1.儲存引擎簡介 外掛程式式儲存引擎是 mysql 資料庫最重要的特性之一,使用者可以根據應用的需要選擇如何儲存和索引資料 是否使用事務等。mysql 預設支援多種儲存引擎,以適用於不同領域的資料庫應用需要,使用者可以通過選擇使用不同的儲存引擎提高應用的效率,提供靈活的儲存,使用者甚至可以按照自己的...