www.5197.com-澳门新蒲京娱乐场官网

热门关键词: www.5197.com,澳门新蒲京娱乐场官网

mariaDB

图片 1

起源

为何改了个名字呢,这其中是有些典故的。

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。

MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。

在Oracle控制下的MySQL开发,有两个主要问题:1. MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。2. MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。Widenius有一个ppt,用数据比较了收购之前和之后新版本的发布速度。有很多bugfix和新的feature,都没有及时加入到发布版本之中。

以上这两个问题,导致了各个大公司,都开发了自己定制的MySQL版本,包括Yahoo!/Facebook/Google/阿里巴巴 淘宝网等等。

MySQL是开源社区的资产,任何个人/组织都无权据为己有。为了依靠广大MySQL社区的力量来更快速的发展MySQL,另外开分支是必须的。

MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。可以通过以下语句,转换为支持事务的Maria引擎。ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;

MariaDB 新版本实力逆袭不仅仅是 MySQL 替代品,mariadbmysql

MySQL分支——MariaDB

MariaDB是MySQL源代码的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB,XtraDB完全兼容InnoDB,创建一个InnoDB表内部默认会转换成XtraDB。

Percona XtraDB 是 InnoDB 存储引擎的增强版,用来更好地发挥最新的计算机硬件系统性能,同时还包含一些在高性能环境下的新特性。XtraDB 存储引擎是完全的向下兼容,在 MariaDB 中,XtraDB 存储引擎被标识为"ENGINE=InnoDB",这与 InnoDB 是一样的,所以可以直接用XtraDB 替换掉 InnoDB,而不会产生任何问题。XtraDB 在 InnoDB 的基础上构建,使 XtraDB 具有更多的特性,更多的参数指标和更多的扩展。从实践的角度来看,XtraDB 在CPU多核的条件下更有效的使用内存,并且性能更高。从 MariaDB 5.1 开始就默认使用 XtraDB 存储引擎。

MariaDB由MySQL的创始人Michael (Monty) Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael (Monty) Widenius的女儿Maria的名字。

一、MariaDB 10.0和MySQL 5.6的不同之处

MySQL 5.6 的代码库的文件结构已经被改动了。比如单个代码文件已经被分成多个,又或者是某些代码已经被重新归类到了不同的文件内。所以要把MariaDB 去配合现在这个文件结构一定是一个非常消耗时间的过程。

MairaDB 5.5 已经有大量的代码不同于MySQL 5.5 的版本,而且也有很多的新的特征被整合到MariaDB 5.5 中,而这些特征直到 5.6 版本才出现在MySQL中。所以在比较同样功能的MySQL和MariaDB的版本,同时在完成设计和QA方面的审核后,一个很明显的结论是MariaDB会是一个更好的产品。在大多数情况下,在选择 MariaDB的时候,人们会更多地考虑到功能方面的偏好。

MariaDB不仅仅是MySQL的一个替代品。它的主要目的是创新和提高MySQL的技术,MySQL5.6不是一个合适的创新基础平台,所以MariaDB团队就做了下面的事情:

引入了一些新功能(像Multi-source Replication多源复制,基于表的并行复制,Galera Cluster集群,Spider水平分片存储引擎,TokuDB存储引擎等),所以需要搞个新版本。

下个版本称作“MariaDB5.6”是不准确的,因为它不是基于MySQL5.6的,取而代之,MariaDB团队决定版本号调为10.0。

MariaDB和Percona有什么不同呢?

Percona是仅仅针对InnoDB引擎上做了性能上的改善(称为XtraDB),而MariaDB在集成了XtraDB存储引擎之外,还集成了更多的存储引擎,包括Aria、SphinxSE、TokuDB、Cassandra、CONNECT、SEQUENCE及Spider存储引擎等,并且在服务器层上做了大量改进,增加了多源复制和基于表的并行复制等。

二、MariaDB和MySQL的兼容性

MariaDB跟MySQL在绝大多数方面是兼容的,对于前端应用(比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby、MySQL C connector)来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本的发布速度已经超过了Oracle官方的MySQL版本。

注:MariaDB10.0/10.1的GTID复制跟MySQL5.6不兼容。

在Oracle控制下的MySQL开发,有两个主要问题:

MySQL核心开发团队是封闭的,完全没有Oracle之外的成员参加。很多高手即使有心做贡献,也没办法做到。

MySQL新版本的发布速度,在Oracle收购Sun之后大为减缓。

Michael (Monty) Widenius有一个PPT,用数据比较了收购之前和之后新版本的发布速度,并表示有很多bugfix和新的feature,都没有及时加入到发布版本之中。

以上这两个问题,导致了各个大公司,都开发了自己定制的MySQL版本,包括Yahoo!、Facebook、Google、阿里巴巴和淘宝网等。MySQL是开源社区的资产,任何个人/组织都无权据为己有。为了更快速地发展MySQL,另外开分支是必须的。

三、MariaDB 10.0新增的功能

更多的存储引擎

除了包含标准的MyISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE和MERGE等存储引擎外,MariaDB的源代码包和二进制包还包含以下额外的存储引擎:

Aria(增强版的MyISAM)
XtraDB(增强版的InnoDB)
FederatedX
OQGRAPH
SphinxSE[1]
IBMDB2I
TokuDB[2]
Cassandra
CONNECT
SEQUENCE
Spider[3]
PBXT

速度提升

在MariaDB5.3版本里,就已经对子查询进行了优化,并采用semi join半连接方式将SQL改写为了表关联join,从而提高了查询速度。

在MariaDB5.3版本里,引入了Group commit for the binary log组提交技术,简单的说,多个并发提交的事务加入一个队列里,对这个队列里的事务,利用一次I/O合并提交,从而解决了写日志频繁刷磁盘的问题。

在MariaDB10.0版本里,引入了基于表的多线程并行复制技术,如果主库上1秒内有10个事务,那么合并一个I/O提交一次,并在binlog里增加一个cid = XX 标记,当cid的值是一样时,Slave就可以进行并行复制,通过设置多个sql_thread线程实现。在MySQL5.5版本里是单进程串行复制,通过sql_thread线程来恢复主库推送过来的binlog,这样会产生一个问题,主库上大量的写操作,从库就有可能会出现延迟。在MySQL5.6是基于库级别的并行复制,MySQL5.7是基于表级别的并行复制。

在MariaDB5.5版本里,引入了线程池thread pool技术,线程池的连接复用,减少了建立连接的开销,减少了CPU上下文切换,非常适合高并发php短连接应用场景(例如使用开源电商平台ECSHOP秒杀业务场景)。

在处理内部的临时表,MariaDB用Aria引擎代替了MyISAM引擎,这将使某些GROUP BY和DISTINCT请求速度更快,因为Aria有比MyISAM更好的缓存机制。

扩展和新功能

时间精确到微秒级别

提供了虚拟列(函数索引)

在MariaDB5.2版本里,就已经提供了虚拟列(函数索引),但直到MySQL5.7版本才支持。

kill命令扩展

在MariaDB5.3版本里,又对kill命令进行了扩展,可以指定某个user用户,杀死所有查询

修改表结构可显示执行进度

提供了动态列(可以存储JSON格式)

在MariaDB5.3版本里,就已经提供了动态列(可以存储JSON格式),但直到MySQL5.7版本才支持。

提供了多源复制,但直到MySQL5.7版本才支持。

支持GTID同步复制。

创建了用户支持创建角色role权限。

通过show processlist可以查看内存占用。

执行create or replace table 等于先执行drop操作,再执行create操作。

执行delete from table returning命令可删除前返回删除的记录。

慢查询日志slow log里增加了explain执行计划。

四、总结

MariaDB是甲骨文MySQL的加强版本,因此已有的系统不需要任何修改就可以运行,就像使用Percona Server一样。

MariaDB社区版和企业版的源代码都是开源的,并且所有功能都是免费开放,不用担心功能上有阉割,但甲骨文MySQL企业版延伸套件采取封闭源代码且需要付费。此外,MariaDB相比MySQL拥有更多的功能、更快、更稳定、BUG修复更快。

新版本实力逆袭不仅仅是 MySQL 替代品,mariadbmysql MySQL分支——MariaDB MariaDB是MySQL源代码的一个分支,主要由开源社区在维护,采用G...

经过了多个测试版本,MariaDB基金会正式发布了MariaDB 10版本。在该分支之前,MariaDB的版本号与MySQL保持一致。MariaDB是MySQL的一个分支,由MySQL的创始人Michael Widenius主导开发。MariaDB的API和协议兼容MySQL,另外又添加了一些功能。开发这个分支的原因之一是为了避免MySQL被甲骨文公司收购之后可能存在的闭源风险。自发布以来,MariaDB社区增长迅速,MariaDB也逐渐代替MySQL成为Red Hat、Fedora、Suse、Debian等Linux发行版的数据库管理系统。MariaDB 10包含了诸多大的改进,其中包括来自Google、Fusion-IO和淘宝等大型互联网企业所开发的创新特性。该版本的主要改进如下:复制改进:MariaDB 10在性能上树立了一个新的标准,比之前的几个分支速度更快。现在可以通过多来源复制功能,从多个主服务器中复制数据。NoSQL特性:CONNECT引擎支持动态访问不同的数据源,包括非结构化的文件,比如文件夹中的日志文件或任意ODBC数据库。更好的ETL和实时分析能力。MariaDB 10中,动态列存储表中每一行不同标签的数据对象时的方式和NoSQL技术基本一致。可以直接访问Cassandra数据库中的数据,并可以直接与目前主流的大数据技术进行交互。分片改进:MariaDB 10内置了SPIDER引擎形式的分片功能,允许将大数据表跨多个服务器进行分割,与新的复制功能相结合,大大提升了可用性。更多信息:The MariaDB Blog下载地址

进    制
二进制

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

特点

MariaDB 是一个采用 Maria 存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。[3] 

图片 2 MariaDB相关书籍

这个项目的很多代码都改编于 MySQL 6.0,例如 “pool of threads”功能提供解决多数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译Linux版本,还包括源代码包。MariaDB基于GPL 2.0发布。

与 MySQL 相比较,MariaDB 更强的地方在于:

Maria 存储引擎

PBXT 存储引擎

XtraDB 存储引擎

FederatedX 存储引擎

更快的复制查询处理

线程池

更少的警告和bug

运行速度更快

更多的 Extensions (More index parts, new startup options etc)

更好的功能测试

数据表消除

慢查询日志的扩展统计

支持对 Unicode 的排序

相对于MySQL最新的版本5.6来说,在性能、功能、管理、NoSQL扩展方面,MariaDB包含了更丰富的特性。比如微秒的支持、线程池、子查询优化、组提交、进度报告等。详情见列表。

High Performance
Developers
DBAs
NoSQL
Thread pool
线程池
Microsecond precision & type
微秒支持
Segmented MyISAM keycache
MyISAM缓存分段
HandleSocket
直接InnoDB/XtrDB访问
Group commit for the binary log
binlog组提交
SphinxSE for full-text search
SphinxSE全文索引支持
Authentication plugins - PAM, Active Directory
授权插件
Dynamic columns
动态列
Non-blocking client library
非阻塞库
Subqueries materialize
子查询优化
LIMIT ROWS EXAMINED
LIMIT行检查限制

  

  
GIS functionality
地理信息系统支持
Progress reporting
进度报告

  

授权许可
GPL

类    别
存储引擎

中文名
MariaDB数据库管理系统

第三方工具

MariaDB[4]  的API和协议兼容MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。这意味着,所有使用MySQL的连接器、库和应用程序也将会在MariaDB下工作。在此基础上,由于担心甲骨文MySQL的一个更加封闭的软件项目,Fedora的计划在Fedora 19中的以MariaDB取代MySQL[5]  ,维基媒体基金会的服务器同样也使用MariaDB取代了MySQL。
  如下是支持MariaDB的客户端工具:
  DBEdit 一个免费的MariaDB数据库和其他数据库管理应用程序。
  Navicat 一系列Windows、Mac OS X、Linux下专有数据库管理应用程序。
  HeidiSQL 一个Windows上自由和开放源码的MySQL客户端。它支持MariaDB的5.2.7版本和以后的版本。[5][6]
  phpMyAdmin 一个基于网络的MySQL数据库管理应用程序

所    属
MySQL的一个分支

外文名
MariaDB

版本

MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。

从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。[1] 

目录

  1. 1 版本
  2. 2 发展
  3. 3 起源
  1. 4 特点
  2. 5 目标
  3. 6 第三方工具
  1. 7 兼容性

主要维护者
开源社区

兼容性

MariaDB是MySQL的二进制替代品

出于实用的目的,MariaDB是同一MySQL版本的二进制替代品(例如MySQL 5.1->MariaDB 5.1, MariaDB5.2和MariaDB 5.3是兼容的。MySQL 5.5将会和MariaDB 5.5保持兼容)。这意味着:

  • 数据和表定义文件(.frm)文件是二进制兼容的。

  • 所有客户端APIs,协议和结构都是相同的。

  • 所有的文件名、二进制文件的路径、端口、套接字等等……应该是相同的。

  • 所有MySQL的连接器(PHP Python Perl Java .NET MyODBC Ruby MySQL C连接器等) 和MariaDB的不变。

    • 有一些和PHP5的安装问题要注意(一个和老的PHP5如何检查库兼容性的bug)。
  • mysql-client包还可以与MariaDB服务器一起工作。

这意味着对于大多数情况下,您可以卸载MySQL和安装MariaDB,可以工作很好。(不需要转换成任何数据文件,如果使用同一主版本,比如5.1)。

我们每月会与MySQL代码库合并来确保我们的兼容性和得到任何Oracle修正的bug和所有特性。

我们在脚本升级方面也做了大量的工作,从MySQL 5.0升级到MariaDB 5.1比从MySQL 5.0到MySQL 5.1更容易。

这就是说:MariaDB有许多的新选项、扩展,存储引擎和bug修复,而MySQL是没有的。您可以在MariaDB分发版本差异页面找到不同版本的功能特性集。可在MariaDB versus MySQL – Features看到。

MariaDB 5.1与MySQL 5.1的不兼容性

为了让MariaDB比MySQL提供更多更好的信息,极少情况下MariaDB会出现不兼容情况。

如果使用MariaDB 5.1替代MySQL5.1,您将看到如下列举的全部已知用户级不兼容情况:

  • 安装的包名称,用MariaDB代替MySQL。

  • 时间控制可能不同,MariaDB在许多情况下比MySQL快。

  • mysqld在MariaDB读取是my.cnf中[MariaDB ]的部分。

  • 如果它不是完全相同的MariaDB编译版本,不能使用仅提供二进制的存储引擎库给MariaDB使用 (这是因为服务器内部结构THD在MySQL和MariaDB之间不同。这也是与常见的MySQL版本不同的)。这应该不是问题,因为对于大多数人不加载新存储引擎,MariaDB比MySQL带有更多的存储引擎。

  • CHECKSUM TABLE可能产生不同的结果,由于MariaDB并不忽视NULL的列,MySQL 5.1忽略(未来的MySQL版本应该计算checksums和MariaDB一样)。在MariaDB 开启mysqld –old选项,您可以得到“旧式”的校验和。但是要注意,这个MyISAM存储引擎和Aria 存储引擎在MariaDB实际上在内部使用新的checksum,因此,如果您使用的是—old , CHECKSUM命令将会更慢,因为它需要,一行一行的计算checksum。

  • 慢速查询日志有更多信息关于查询, 如果有一个脚本解析慢速查询日志这可能是一个问题。

  • MariaDB默认情况下比MySQL需要更多的内存,因为我们有默认情况下启用Aria存储引擎处理内部临时表。如果需要MariaDB使用很少的内存(这是以牺牲性能为代价的),您可以设置aria_pagecache_buffer_size的值为 1M(默认值为128M)。

如果正在使用MariaDB的新命令选项,新特性或新存储引擎,那么就不能在MySQL和MariaDB之间轻易来回切换了。

MariaDB 5.2与MySQL 5.1的不兼容性

同MariaDB 5.1和MySQL 5.1的一样,再补充一条:

  • 新增SQL_MODE的取值:IGNORE_BAD_TABLE_OPTIONS。如果未设置该值,使用一个表、字段或索引的属性(选项)不被支持的存储引擎将会导致错误。这个变化可能引起警告不正确的表定义出现在错误日志中,请利用mysql_upgrade修复这个警告。

实际上,MariaDB 5.2是MariaDB 5.1和MySQL 5.1替代品。

MariaDB 5.3与MySQL 5.1和MariaDB 5.2的不兼容性

  • 一些错误信息涉及到错误转换的,MariaDB的差别在于消息中提供了更多的信息关于到底是哪里出了错。

  • MariaDB专用的错误编号已经从1900开始,为的是不与MySQL的错误冲突。

  • MariaDB在所有工作场景中可以基于微秒计时工作;而MySQL在某些情况下,如datetime和time,确实会丢失微秒部分。

  • 旧的--maria启动选项被删除。应该使用--aria前缀代替。(MariaDB 5.2都支持这—maria-和- aria-)

  • SHOW PROCESSLIST有一个额外的process列,显示一些命令的进度。您可以启动mysqld用–old 标志禁用它。

  • INFORMATION_SCHEMA.PROCESSLIST对进度报告有三个新列: STAGE, MAX_STAGE和 PROGRESS。

  • 以/*M! 或/*M!#####起头的长注释会得到执行。

  • 如果使用max_user_connections =

    0(也就是说任何数量的连接)启动mysqld,您就不能在mysqld运行时修改全局变量了。这是因为当mysqld以max_user_connections

    0启动时,它不分配计数结构(包括每个连接的互斥锁)。如果稍后改变变量,这将导致错误的计数器。如果希望在运行时能改变这个变量,请在启动时将它设置为一个较高的值。

  • 可以设置max_user_connections(包括全局变量和GRANT选项两种场景)为-1来阻止用户连接到服务器。全局变量max_user_connections变量不影响拥有super特权的用户连接。

IGNORE指令并不会忽略所有错误(比如致命错误),只是会忽略可以安全忽略的那些。

MariaDB 5.5与MariaDB 5.3的不兼容性

XtraDB

XtraDB提供者Percona,在5.5代码库并未提供XtraDB所有早些时候的功能特性。正因为如此,MariaDB 5.5也不能提供它们所有功能特性。

在5.5版本中XtraDB缺少的选项

以下选项XtraDB 5.5是不支持的。如果在my.cnf文件中使用到这些选项,请删除后再升级到5.5。

  • innodb-adaptive-checkpoint;请使用innodb_adaptive_flushing_method 替代。

  • innodb-auto-lru-dump;请使用innodb_buffer_pool_restore_at_startup 替代。

  • innodb-blocking-lru-restore;请使用innodb-blocking-buffer-pool-restore 替代。

  • innodb-enable-unsafe-group-commit

  • innodb-expand-import;请使用 innodb_import_table_from_xtrabackup 替代。

  • innodb-extra-rsegments;请使用innodb_rollback_segment 替代。

  • innodb-extra-undoslots

  • innodb-fast-recovery

  • innodb-flush-log-at-trx-commit-session

  • innodb-overwrite-relay-log-info

  • innodb-pass-corrupt-table;请使用innodb_corrupt_table_action 替代。

  • innodb-use-purge-thread

  • xtradb-enhancements

目标

目标是提供一个由社区开发的、稳定的、总是免费的MySQL分支,在用户级别上兼容主流版本。我们为自己的版本和上游、社区版的互操作性提高而努力。

MariaDB分支与最新的MySQL发布版本的分支保持一致性, 例如MariaDB 5.1.47对应MySQL 5.1.47,等等。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。

发展

图片 3

成立于2009年,MySQL之父Michael “Monty” Widenius用他的新项目MariaDB完成了对MySQL的“反戈一击”。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。[1] 

MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的:

1、数据和表定义文件(.frm)是二进制兼容的

2、所有客户端API、协议和结构都是完全一致的

3、所有文件名、二进制、路径、端口等都是一致的

4、所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变

5、mysql-client包在MariaDB服务器中也能够正常运行

6、共享的客户端库与MySQL也是二进制兼容的

也就是说,在大多数情况下,你完全可以卸载MySQL然后安装MariaDB,然后就可以像之前一样正常的运行。[2] 

本文由www.5197.com发布于web前端,转载请注明出处:mariaDB