搜尋
首頁資料庫mysql教程MySQL数据库存储引擎和分支现状分析_MySQL

bitsCN.com MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光大起来。 

在MySQL经历了2008年Sun的收购和2009年Oracle收购Sun的过程中,基本处于停滞发展的情况,在可以预见的未来,MySQL是肯定会被Oracle搁置并且逐步雪藏消灭掉的。MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光大起来。

本文大致讲解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB 等引擎之外的其他引擎的发展和现状,以及MySQL主干以外的分支的状况,为了我们未来更好的使用MySQL或者其他分支建立一个了解基础。

MySQL存储引擎介绍

Falcon存储引擎

Falcon存储引擎是MySQL当时寄以厚望的存储引擎,主要是为了面对当时Oracle收购了InnoBase公司的情况,用来取代InnoDB的一个存储引擎。Falcon引擎的主导人员是大师Jim Starkey,从2006年开始开发,到2008年发布Beta版本,至今为止也没有走入主流。2008年中旬,Falcon的主架构师Jim Starkey宣布从MySQL公司辞职,加入了一家创业公司NimbusDB担任CEO,去设计和开发运行在云计算上面的关系/语义数据库,按照2010年目前NoSQL市场的发展来看,他的选择是正确的,但是带来的结果是Falcon陷入一个没有主导人员的地步,导致了至今都属于性能糟糕,半死不活的状态。

Falcon引擎是MySQL AB公司基于Netfrastrucure公司的产品开发的(Netfrastrucure公司被MySQL AB收购),Falcon 当初的目标是嵌入到MySQL 6.0中用来取代InnoDB引擎,基本很多功能设计都是按照InnoDB的目标去设计的。

Falcon是面向多CPU、拥有大量内存的当代硬件环境和典型Web应用的 数据库操作特点而开发的,主要功能包括多版本并发控制、完善的ACID支持、支持前缀压缩的B+树索引、数据页压缩(在磁盘上以压缩形式存储,在内存中以 非压缩形式存储)、成组提交等。从功能方面来说没有什么新鲜事,大体也就实现了一个事务型存储引擎必须要有的功能(很多高级的功能如多表空间、分区等都还 没有),但其架构上却有很多独特之处。

通过网上的一些测试结果Falcon的性能还是很糟糕的,写入速度是 MyISAM 的 1/10 ~ 1/20,Select 的优化也有问题,添加了索引感觉还会进行全表扫描。所以,我终究感觉 Falcon 是个杯具的引擎。

Falcon特性:http://dev.mysql.com/doc/falcon/en/se-falcon-features.html

Falcon测试:http://blog.gslin.org/archives/2008/02/12/1425/

Falcon手册:http://dev.mysql.com/doc/falcon/en/

SolidDB存储引擎

SolidDB存储引擎是由Solid Information Technology(http://www.SolidDB.com) 开发的,这是一款利用MVCC来实现的事务型存储引擎。它既同时支持悲观和乐观并发控制,这一点其他的存储引擎目前都不支持。solibDB的MySQL 版本包括对外键的完全支持。它在许多方面与InnoDB很相似,比如它使用了簇索引。SolidDB还包括一个没有额外开销的在线备份功能。

SolidDB公司已经由2008年被IBM收购,主要是用于整合为IBM数据库整合方案的一部分,目前是作为一个前端数据缓存的这么一个角色存在。IBM收购SolidDB公司,主要是因为甲骨文在2005年6月收购了Solid Information Technology主要竞争对手TimesTen,为了在内存数据库这块市场上有所依托,所以收购了 SolidDB公司。

SolidDB产品是一个完整的打包程序,包括SolidDB存储引擎、MyISAM存储引擎以及MySQL服务器。SolidDB与MySQL之间的结合出现于2006年的晚些时候。但是底层的技术以及代码却是经过了该公司15年的完善。Solid公司保证和支持了整个产品。它是基于GPL协议的,并且提供了一个类似于MySQL服务器形式的商业版本。

性能上来说,SolidDB for MySQL开源数据库再次被证明能够完全满足高吞吐量、关键任务级应用对系统性能和可扩展性的要求。

但是就 SolidDB被IBM收购,MySQL对Oracle收购的情况来看,基本上 SolidDB for MySQL 是一个没法继续被MySQL使用的引擎,所以也是一个杯具的MySQL引擎。

官方网站:http://www.ibm.com/software/data/SolidDB/

XtraDB存储引擎

XtraDB存储引擎是percona公司对于innodb存储引擎进行改进加强后的产品,第一个版本发布于2008年底。XtraDB兼容innodb的所有特性,并且在IO性能,锁性能,内存管理等多个方面进行了增强。

Percona是一个MySQL技术咨询公司,他们有一个在MySQL领域很有名的技术博客叫做 Mysql Performance Blog,同时他们编写了一本很有名的MySQL书叫做《High Performance MySQL》,目前也出版了中文版。他们公司还有一个很有名的MySQL备份工具叫做 XtraBackup。

XtraDB的设计目标也是取代InnoDB作为目标,它是基于InnoDB来做的开发,XtraDB 100%的兼容 InnoDB,通常可以认为 XtraDB 是 InnoDB的升级或者替代版本。在性能上来说,目前 XtraDB 是非常高的,在大部分情况下也是比较稳定的,值得你尝试使用。同样XtraDB也是未来感觉很有前途的一个存储引擎,值得我们期待。

性能测试:http://www.mysqlperformanceblog.com/2009/07/14/performance-improvements-in-percona-5-0-83-and-xtradb/

使用情况:http://www.ningoo.net/html/2009/xtradb_storage_engine.html

引擎介绍:http://www.percona.com/docs/wiki/percona-xtradb:start

引擎下载:http://www.percona.com/percona-builds/Percona-XtraDB/

公司官网:http://www.percona.com

性能博客:http://www.mysqlperformanceblog.com

Maria存储引擎

Maria由MySQL的创始人,MyISAM的作者Monty (Michael Widenius) 开发,命名为Maria是因为他的第三个小孩就叫Maria。Maria是Monty在MySQL公司的时候就开始开发的一个MySQL的分支引 擎,Sun收购MySQL后,因为与Sun针对MySQL团队的一些问题不和,然后在2009年初离开了Sun,成立了 Monty Program Ab 公司,专门用于针对 Maria 引擎的开发,同时开发了一个MySQL的分支,叫做 MariaDB。

Maria是一个MySQL的存储引擎,利用它来扩展MyISAM使之在异常退出时文件不至于损坏。Maria的主要目的是作为更好的 MyISAM,提供崩溃后的故障恢复功能。更长远的目标是成为一个全功能的事务型存储引擎,支持ACID、回滚、多版本并发控制、行级锁、成组提交,同时 也可以选择不支持事务,最终代替MyISAM成为MySQL的默认存储引擎。

目前Maria引擎有针对MySQL 5.1 的版本,基本上就是一个增加了崩溃恢复功能的MyISAM,使用表级锁,但可以做到读写不冲突,即在进行任何类型的更新操作的同时都可以进行读操作,但多个写操作不能并发。

Maria的特点:

◆多版本并发控制,ACID支持

◆通过拷贝日志就能进行增强备份

◆高效的磁盘存储

Maria 引擎开发之初就是用来取代MyISAM的存储引擎,并且目前按照我了解有些在使用公司的情况,运行情况挺不错,大家也可以尝试一下。Maria 在目前有MySQL创始人带领的情况下,也是一个非常有前途的的存储引擎,值得期待。

Maria下载:http://askmonty.org/wiki/MariaDB:Download

Maria手册:http://askmonty.org/wiki/Maria

PrimeBase XT (PBXT) 存储引擎

PBXT 是 PrimeBase 公司推出的MySQL插件引擎,其功能和 InnoDB 类似,它是一款事务型存储引擎,并且它的设计是很独特的。它的一个很与众不同的特征就是如何来使用事务日志和数据文件来防止“write-ahead”日 志,这可以极大的减少事务提交的开销。这个架构给了PBXT很大的提高写并发的空间,并且测试也表明它在某些特定的操作下比InnoDB要快。PBXT也 使用了MVCC并且支持外键约束,但是它不使用簇索引。

主要特性如下:

◆MVCC的 :多版本并发控制,使读操作没有锁定

◆事务性 :支持启动开始,COMMIT和ROLLBACK和恢复上

◆ACID标准 :原子性,一致性,隔离,持久(一次提交的更改不能丢失)

◆行级锁定 :更新使用行级锁的并发允许最大并发量

◆死锁检测 :立即通知如果客户端进程已陷入死锁

◆参照完整性 :外键的支持。

◆写一次 :PBXT避免的架构双写入使用日志。

◆BLOB的流 :在结合的 BLOB Streaming engine.。

按照有人的测试结果来看,PBXT存储引擎版本的TPS随着线程数的增长,表现比较稳定,性能上与innodb差不多,长期来看,它的目标也是作为 一个能够取代InnoDB的存储引擎。而且目前 MariaDB 这个分支已经把 PBXT 作为内置的存储引擎,所以也是可以尝试使用的一个引擎。

性能测试:http://imysql.cn/2008_07_25_innodb_vs_pbxt

引擎下载:http://www.primebase.org/download/index.php

官方网站:http://www.primebase.org/

MySQL分支介绍

MariaDB 数据库

MariaDB 是一个采用 Maria 存储引擎的 MySQL 分支版本,是由原来 MySQL 的作者 Michael Widenius (Monty) 创办的Monty Program Ab公司所开发的免费开源的数据库服务器。基本上 MariaDB 的历史跟我上面讲的 Maria 存储引擎历史一样。MariaDB的设计目标就是用来取代 MySQL Server。Monty是开源数据库联盟(Open Database Alliance)的发起者,所以 MariaDB 也是开源数据库联盟的成员。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB引擎来替换InnoDB,MariaDB的存储引擎还包括了 PrimeBase XT (PBXT) 和 FederatedX 存储引擎,MariaDB基于GPL 2.0发布。

Monty Widenius提供了MySQL的分支MariaDB候选版本。MariaDB 5.1完全兼容MySQL 5.1,这个版本早在2008年11月就发布了,增加了很多新的功能和若干个新的补丁程序。开发者称这个候选版本非常稳定。基本上 MySQL,MariaDB 解决了很多问题,例如“pool of threads”功能提供解决多数据连接问题。目前 MariaDB 发布的Release版本是 5.1.44,基本上应该是跟 MySQL 5.1 的版本兼容的。

MariaDB 基本上名门之后,加上MySQL创始人Monty的实力和号召力,是作为MySQL一个非常好的替代品,前途发展无限,值得我们尝试使用。

MariaDB中存储引擎介绍:

Maria: http://askmonty.org/wiki/Maria

XtraDB:http://www.percona.com/docs/wiki/percona-xtradb:start

PBXT: http://www.primebase.org/

FederatedX:https://launchpad.net/federatedx

MariaDB下载:http://askmonty.org/wiki/MariaDB:Download

MariaDB网站:http://askmonty.org

[ Drizzle 数据库]

Drizzle,是从MySQL衍生出来的一个数据库服务器,一个精简版的MySQL分支,Drizzle项目的宗旨是构建一个“更精练、更轻量、更快 速”的MySQL版本,它的扩展性和易用性与MySQL相当,但为了提高性能和扩展性,它从原来的核心系统里移除了部分功能。 Drizzle 也是开源数据库联盟(Open Database Alliance)成员。

MySql的架构设计总监Brian Aker在O'Reilly开放源码大会(OSCON)上对Drizzle做了介绍。Drizzle是一个能为某些特定类别的应用提供支持的数据库项目(“what if” project)。Drizzle的设计目标:

  1. Web应用。
  2. 云计算组件。
  3. 没有业务逻辑的数据库(又名存储过程)。
  4. 多核架构。

Drizzle,一个精简版的MySQL分支,在目前的MySQL代码基本之上,将存储过程、视图、触发器、查询缓存、PREPARE语句等等没什 么必要 的功能从代码中删掉,简化对数据类型和存储引擎的支持,并且进行大胆的重构。最终要实现的目的是将MySQL的代码大大简化,理顺MySQL的架构,改善 MySQL的代码质量,提高系统的稳定性和性能。将更适合 Web应用、云计算组件、没有业务逻辑的数据库(又名存储过程)、多核架构 等业务

Drizzle的特征有:

1. 基于MySQL 6.0的源码树

2. 无附加库

3. 遵守POSIX

4. 微内核设计

5. 可插拔架构,适用于视图、存储过程、UDF、存储引擎等

6. 跨多个节点的Sharding技术

7. 智能代理

8. 多CPU/多核CPU

9. 优化的字段类型

10. 高效的内存使用

11. 没有内部ACL,使用LDAP/PAM

12. 没有数据库数据格式化

13. 整理有序的Make系统

14. 缺省存储引擎为InnoDB

15. 移除Windows兼容性

Drizzle 缺省的存储引擎是InnoDB,支持的数据类型更少,基本上设计目标跟 MariaDB 完全不同。MariaDB的设计目标是一个取代MySQL的数据库,而 Drizzle 基本上是一个除了MySQL之外你可以选择的产品,并且基本上设计目标是针对未来的云计算和分布式Web存储的方向去的,目前可能不是太稳定,不适合在运 营环境使用,但是相当的值得期待。

Drizzle使用:http://database.51cto.com/art/200907/137239.htm

Drizzle下载:https://launchpad.net/drizzle

Drizzle网站:http://drizzle.org/

总结语

基本上来说,目前MySQL还是主流(MyISAM/InnoDB),但是未来发展不可预测,并且有这些除了MySQL之外的选择,也许有一天Oracle把MySQL彻底消灭掉了,但是我们同样还有 MariaDB、Drizzle可以选择,这就是开源的力量。

对比几个MySQL的存储引擎,Maria 和 XtraDB 是值得大家目前投入逐步使用的行列的,多做一些测试,灰度放亮,获得一个合理结果然后再使用是比较合适的。MySQL的数据库分支来说,MariaDB 也是比较值得尝试使用的,毕竟目前 Drizzle 还不是太成熟稳定,并且不一定适合你所做的业务。我所了解国内部分互联网公司也有在使用 MariaDB 的,并且效果不错,大家也都可以按照自己的情况来使用。

目前NoSQL运动如火如荼,有些业务更适合采用Key==>Value或这是BigTable类型的数据存储方式,也许MySQL不是最好 的,当然选择最合适存储,也许未来大部分数据库市场会被NoSQL所占领,但是我觉得关系型数据库还是未来几年很重要的存储方式。

在MySQL被Sun收购,已经Sun被Oracle收购的过程中,整个开源世界都是在翻天覆地的变化,特别是MySQL的命运一直都是所有使用和 热爱开源数据库的人们所关注的,在这些商业竞争中,那些开源斗士(比如 Monty),都通过别的方式,继续发扬了MySQL这种开源数据库。我们长期来看,总会有一些东西会消失,比如 Falcon存储引擎,有些东西会继续发展,比如 MariaDB或Drizzle,但是这些都为开源技术做出了贡献,也为数据库领域增添了色彩。

bitsCN.com

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL的位置:數據庫和編程MySQL的位置:數據庫和編程Apr 13, 2025 am 12:18 AM

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

MySQL:從小型企業到大型企業MySQL:從小型企業到大型企業Apr 13, 2025 am 12:17 AM

MySQL適合小型和大型企業。 1)小型企業可使用MySQL進行基本數據管理,如存儲客戶信息。 2)大型企業可利用MySQL處理海量數據和復雜業務邏輯,優化查詢性能和事務處理。

幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?幻影是什麼讀取的,InnoDB如何阻止它們(下一個鍵鎖定)?Apr 13, 2025 am 12:16 AM

InnoDB通過Next-KeyLocking機制有效防止幻讀。 1)Next-KeyLocking結合行鎖和間隙鎖,鎖定記錄及其間隙,防止新記錄插入。 2)在實際應用中,通過優化查詢和調整隔離級別,可以減少鎖競爭,提高並發性能。

mysql:不是編程語言,而是...mysql:不是編程語言,而是...Apr 13, 2025 am 12:03 AM

MySQL不是一門編程語言,但其查詢語言SQL具備編程語言的特性:1.SQL支持條件判斷、循環和變量操作;2.通過存儲過程、觸發器和函數,用戶可以在數據庫中執行複雜邏輯操作。

MySQL:世界上最受歡迎的數據庫的簡介MySQL:世界上最受歡迎的數據庫的簡介Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL的重要性:數據存儲和管理MySQL的重要性:數據存儲和管理Apr 12, 2025 am 12:18 AM

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

為什麼要使用mysql?利益和優勢為什麼要使用mysql?利益和優勢Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。Apr 12, 2025 am 12:16 AM

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具