1.1.MySQL的分支與變種
MySQL變種有好幾個,主要有三個久經考驗的主流變種:Percona Server,MariaDB和 Drizzle。它們都有活躍的用戶社區和一些商業支持,均由獨立的服務供應商支持。同時還有幾個優秀的開源關系數據庫,值得我們了解一下。
1.1.1.Drizzle
Drizzle是真正的MySQL分支,而且是完全開源的產品,而非只是個變種或增強版本。它并不與MySQL兼容不能簡單地將MySQL后端替換為Drizzle。
Drizzle與MySQL有很大差別,進行了一些重大更改,甚至SQL語法的變化都非常大,設計目標之一是提供一種出色的解決方案來解決高可用性問題。在實現上,Drizzle清除了一些表現不佳和不必要的功能,將很多代碼重寫,對它們進行了優化,甚至將所用語言從C換成了C++。
此外,Drizzle另一個設計目標是能很好的適應具有大量內容的多核服務器、運行Linux的64位機器、云計算中使用的服務器、托管網站的服務器和每分鐘接收數以萬計點擊率的服務器并且大幅度的削減服務器成本。
1.1.2.MariaDB
在Sun收購MySQL后,Monty Widenius,這位MySQL的創建者,因不認同MySQL開發流程而離開Sun。他成立了Monty程序公司,創立了MariaDB。MariaDB的目標是社區開發,Bug修復和許多的新特性實際上,可以將MariaDB視為MySQL的擴展集,它不僅提供MySQL提供的所有功能,還提供其他功能。MariaDB是原版MySQL的超集,因此已有的系統不需要任何修改就可以運行。
諸如Google,Facebook、維基百科等公司或者網站所使用了MariaDB。不過Monty公司不是以贏利為目的,而是由產品驅動的,這可能會帶來問題,因為沒有贏利的公司不一定能長久維持下去。
1.1.3.Percona Server
由領先的MySQL咨詢公司Percona發布,Percona公司的口號就是“The Database Performance Experts”,Percona的創始人也就是《高性能MySQL》書的作者。
Percona Server是個與MySQL向后兼容的替代品,它盡可能不改變SQL語法、客戶端/服務器協議和磁盤上的文件格式。任何運行在MySQL上的都可以運行在Percona Server上而不需要修改。切換到Percona Server只需要關閉MySQL和啟動PerconaServer,不需要導出和重新導入數據。
Percona Server有三個主要的目標:透明,增加允許用戶更緊密地查看服務器內部信息和行為的方法。比如慢查詢日志中特別增加的詳細信息;性能,Percona Server包含許多性能和可擴展性方面的改進,還加強了性能的可預測性和穩定性。其中主要集中于InnoDB;操作靈活性,Percona Server使操作人員和系統管理員在讓MySQL作為架構的一部分而可靠并穩定運行時提供了很多便利。
一般來說,Percona Server中的許多特性會在后來的標準MySQL中出現。
國內公司阿里內部就運行了上千個Percona Server的實例。
1.2.MySQL的替代
1.2.1.Postgre SQL
PostgreSQL稱自己是世界上最先進的開源數據庫,同時也是個一專多長的全棧數據庫。最初是1985年在加利福尼亞大學伯克利分校開發的。
PostgreSQL 的穩定性極強,在崩潰、斷電之類的災難場景下依然可以保證數據的正確;在高并發讀寫,負載逼近極限下,PostgreSQL的性能指標仍可以維持雙曲線甚至對數曲線,到頂峰之后不再下降,表現的非常穩定,而 MySQL 明顯出現一個波峰后下滑;
PostgreSQL多年來在GIS(地理信息)領域處于優勢地位,因為它有豐富的幾何類型,實際上不止幾何類型,PostgreSQL有大量字典、數組、bitmap 等數據類型,相比之下mysql就差很多。所以總的來說,PostgreSQL更學術化一些,在絕對需要可靠性和數據完整性的時候,PostgreSQL是更好的選擇。但是從商業支持、文檔資料、易用性,第三方支持來說,MySQL無疑更好些。
1.2.2.SQLite
SQLite是世界上部署最廣泛的數據庫引擎,為物聯網(IoT)下的數據庫首選,并且是手機,PDA,甚至MP3播放器的下的首選。SQLite代碼占用空間小,并且不需要數據庫管理員的維護。SQLite沒有單獨的服務器進程,提供的事務也基本符合ACID。當然,簡單也就意味著功能和性能受限。
2.MySql基礎
2.1.MySQL體系架構
可以看出MySQL是由連接池、管理工具和服務、SQL接口、解析器、優化器、緩存、存儲引擎、文件系統組成。