北京北大青鳥:如何用MySQL替代當(dāng)前Oracle?

能否用MySQL替代當(dāng)前Oracl?最近有學(xué)員問到這個問題。下面讓北京北大青鳥學(xué)校的老師給大家做一個簡單的講解。
  
存儲引擎
由于 MySQL 自己一直沒有一個成熟可靠的存儲引擎,估計這讓他們深感痛處(尤其是目前最成熟的事務(wù)型引擎 InnoDB 又在 Oracle 手里)。MySQL 寄予厚望的 Falcon 在開發(fā)了兩年多之后,建樹不大,而該項目帶頭人 Jim Starkey 前不久又離開了 MySQL,陋屋偏逢連夜雨。

Sun會給MySQL一個穩(wěn)健的引擎么? 如果進行大企業(yè)級應(yīng)用,考慮到引擎本身的穩(wěn)定性,似乎可選的也只有 InnoDB 了,但 InnoDB 的備份工具又是收費的。至于 MyISAM ,盡管有人的確喜歡用,但對于并發(fā)能力要求稍微嚴(yán)格一點,MyISAM 根本不行。

在線 DDL 鎖表問題
MySQL中,在線對表對象做 DDL 操作是要鎖表的,對于可用性要求比較高,而應(yīng)用變化又比較頻繁的環(huán)境,這是個非常很糟糕瓶頸。沒想到有什么好的辦法,除非,像大家開玩笑說的,把所有的表都預(yù)留出足夠的空閑列,減少類似增加列的變更麻煩。(北京北大青鳥學(xué)校)

這個 MySQL 天生的缺陷在 PostgreSQL 中是不存在的,比如創(chuàng)建索引,可以用CREATE INDEX CONCURRENTLY 的方式來減小影響。(MySQL 后續(xù)的版本中在逐漸改善這個問題:添加了 ONLINE 關(guān)鍵字).這個看似是個小問題,但實際上卻是對很多人最為困擾的。

在線備份問題
MySQL 6.0 后終于具備在線備份的能力了。但現(xiàn)在,恐怕比較激進的用戶也只能用版本5而已。
很多 MySQL 資深用戶能夠根據(jù)自己應(yīng)用的特點布署適合自己的備份方式(盡管可能也會有缺陷,比如基于時間點的恢復(fù))。

至于另一個常用來衡量 DB 可擴展性的特性:分區(qū),現(xiàn)在 MySQL 已經(jīng)能夠支持了,盡管實現(xiàn)的的確有點晚。而使用 MySQL 的用戶,一般都采取 Sharding 的策略對數(shù)據(jù)進行切分,所以,分區(qū)的問題倒似乎并不是最為關(guān)鍵的。(北京北大青鳥學(xué)校)

北大青鳥網(wǎng)上報名
北大青鳥招生簡章