MySQL資料庫基礎

來源:互聯網
上載者:User

標籤:Mysql   MySQL   資料庫   MySQL資料庫   

一、MySQL資料庫的介紹

MySQL是一個關係型資料庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS應用軟體之一。MySQL 是一種關聯資料庫管理系統,關聯資料庫將資料儲存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL 所使用的 SQL 語言是用於訪問資料庫的最常用標準化語言。MySQL 軟體採用了雙授權政策(本詞條“授權政策”),它分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。由於其社區版的效能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。


系統特性:

使用 C和 C++編寫,並使用了多種編譯器進行測試,保證了原始碼的可移植性。
支援 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種作業系統。
為多種程式設計語言提供了 API。這些程式設計語言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和 Tcl 等。
支援多線程,充分利用 CPU 資源。
最佳化的 SQL查詢演算法,有效地提高查詢速度。
既能夠作為一個單獨的應用程式應用在用戶端伺服器網路環境中,也能夠作為一個庫而嵌入到其他的軟體中。
提供多語言支援,常見的編碼如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作資料表名和資料列名。
提供 TCP/IP、ODBC 和 JDBC等多種資料庫連接途徑。
提供用於管理、檢查、最佳化資料庫操作的管理工具。
支援大型的資料庫。可以處理擁有上千萬條記錄的大型資料庫。
支援多種儲存引擎。
MySQL 是開源的,所以你不需要支付額外的費用。
MySQL 使用標準的 SQL資料語言形式。
MySQL 對 PHP 有很好的支援,PHP是目前最流行的 Web 開發語言。
MySQL是可以定製的,採用了 GPL協議,你可以修改源碼來開發自己的 MySQL 系統。
線上 DDL/更改功能,資料架構支援Live App程式和開發人員靈活性(5.6新增)
複製全域事務標識,可支援自我修複式叢集(5.6新增)
複製無崩潰從機,可提高可用性(5.6新增)
複製多線程從機,可提高效能(5.6新增


應用環境組合

與其他的大型資料庫例如 Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有餘,而且由於 MySQ L是開放源碼軟體,因此可以大大降低總體擁有成本。Linux作為作業系統,Apache和 Nginx作為 Web 服務器,MySQL 作為資料庫,PHP/Perl/Python作為伺服器端指令碼解譯器。由於這四個軟體都是免費或開放源碼軟體(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個穩定、免費的網站系統,被業界稱為“LAMP“或“LNMP”組合。

儲存引擎

MyISAM在MySQL 5.0 之前是預設資料庫引擎,最為常用。擁有較高的插入,查詢速度,但不支援事務
InnoDB事務型資料庫的首選引擎,支援ACID事務,支援行級鎖定, MySQL 5.5 起成為預設資料庫引擎
BDB源 自 Berkeley DB,事務型資料庫的另一種選擇,支援Commit 和Rollback 等其他事務特性
Memory所有資料置於記憶體的儲存引擎,擁有極高的插入,更新和查詢效率。但是會佔用和資料量成正比的記憶體空間。並且其內容會在 MySQL 重新啟動時丟失
Merge將一定數量的 MyISAM 表聯合而成一個整體,在超大規模資料存放區時很有用
Archive非常適合儲存大量的獨立的,作為記錄的資料。因為它們不經常被讀取。Archive 擁有高效的插入速度,但其對查詢的支援相對較差
Federated將不同的 MySQL 伺服器聯合起來,邏輯上組成一個完整的資料庫。非常適合分布式應用
Cluster/NDB高冗餘的儲存引擎,用多台資料機器聯合提供服務以提高整體效能和安全性。適合資料量大,安全和效能要求高的應用
CSV: 邏輯上由逗號分割資料的儲存引擎。它會在資料庫子目錄裡為每個資料表建立一個 .csv 檔案。這是一種普通文字檔,每個資料行佔用一個文本行。CSV 儲存引擎不支援索引。
BlackHole:黑洞引擎,寫入的任何資料都會消失,一般用於記錄 binlog做複製的中繼
EXAMPLE 儲存引擎是一個不做任何事情的存根引擎。它的目的是作為 MySQL 原始碼中的一個例子,用來示範如何開始編寫一個新儲存引擎。同樣,它的主要興趣是對開發人員。EXAMPLE 儲存引擎不支援編索引。


ACID

ACID,指資料庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。一個支援事務(Transaction)的資料庫,必需要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證資料的正確性,交易過程極可能達不到交易方的要求。原子性    整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被復原(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。一致性    在事務開始之前和事務結束以後,資料庫的完整性條件約束沒有被破壞。具體來說就是,比如表與表之間存在外鍵約束關係,那麼你對資料庫進行的修改操作就必需要滿足約束條件,即如果你修改了一張表中的資料,那你還需要修改與之存在外鍵約束關係的其他表中對應的資料,以達到一致性。隔離性    隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為序列化,為了防止事務操作間的混淆,必須序列化或序列化請求,使得在同一時間僅有一個請求用於同一資料。持久性    在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被復原。 由於一項操作通常會包含許多子操作,而這些子操作可能會因為硬體的損壞或其他因素產生問題,要正確實現ACID並不容易。ACID建議資料庫將所有需要更新以及修改的資料一次操作完畢,但實際上並不可行。目前主要有兩種方式實現ACID:第一種是Write ahead logging,也就是日誌式的方式。第二種是Shadow paging。


MySQL替代產品

隨著 MySQL 被 Oracle 收購,MySQL 的使用者和開發人員開始質疑開來源資料庫的命運,與此同時他們開始尋找替代品。MariaDB:從 MySQL 轉向 MariaDB的代錶廠家:Google(2013年9月)、RedHat(2013年6月)、維基百科(2013年4月) 。MariaDB如同 MySQL 的影子版本,MariaDB是 MySQL 的一個分支版本(branch),而不是衍生版本(folk),提供的功能可和 MySQL 完全相容。PostgreSQL:從 MySQL 轉向 PostgreSQL的代錶廠家:蘋果(2011年) 。NoSQL:(NoSQL = Not Only SQL),意即 不僅僅是 SQL ,是一項全新的資料庫革命性運動。NoSQL指的是非關係型的資料庫。

MySQL資料庫基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.