也许你对MySQL数据库新秀MariaDB有所耳闻,作为MySQL的又一分支,MariaDB诞生于甲骨文收购Sun公司之后。MariaDB拥有诸多值得认真体味的优秀特性,这不仅是由于MariaDB项目由MySQL最初创始人Monty Widenius所创建,更因为它与MySQL始终保持着紧密联系。 先从相关技术社区所能提供的支持与调试积极性入手,考虑利用MariaDB替代MySQL的可行性。举例来说,如果要付费签订一套技术支持协议,并且把甲骨文方案作为理想的支持交付机制,那么MySQL无疑是最合理的选择。然而,如果能把高高在上的MySQL集群CGE(即运营商级版本)的姿态放低一些,那么甲骨文提供的社区版本显然更为合适。 如何做出具体取舍要看各企业技术团队的实际情况以及他们对开源文化的熟悉程度。如果他们更喜欢从甲骨文的咨询服务中心获取支持信息以及官方解答,那么MySQL将成为理想的选择。 与MySQL相近的使用感受 对于那些打算尽早摆脱甲骨文控制的MySQL用户来说,兼容性无疑是需要关注的首要问题。这也是MariaDB向下兼容特性如此重要的关键所在。向下兼容意味着什么? 尽管两款软件包的名称有所区别,但检查其资源库时,一定会发现二者之间存在着千丝万缕的联系与高度一致的相似之处。命令行工具的二进制名称,例如mysqladmin、mysqldump、mysql shell以及后台程序都保持着名称上的统一。更进一步,二者的数据文件彼此之间也完全兼容。MariaDB能够直接与现有MySQL实例中的数据文件及表定义顺利协作。 持续不断的改进步伐 向下兼容的可贵之处在于不需要对应用程序做出任何形式或程度上的改动。利用MariaDB取代MySQL之后,大家能够立即享受由此带来的性能提升。来自Facebook、Twitter、谷歌以及Percona等媒体平台的社区支持将抢先一步入驻MariaDB,而后才逐步在MySQL中铺开。 MariaDB还通过数据检索信息模式给用户带来更令人满意的处理手段,其中包括微秒支持。如果大家正在使用TIME或者DATETIME数据类型,则可以为其指定特殊精度,例如TIME(4),括号中的数字代表小数点后显示多少位。MariaDB最高支持到小数点后六位——也就是0.000001秒或者称之为1微秒。这已经是小得不能再小的时间单位了。而对于那些没有特别指定精度的用例,MariaDB会默认忽略小数点后的余数以简化读取难度。 你们一定有过在MySQL中执行运行时间超长的ALTER TABLE,一直等到满腔怒火的经历。MariaDB会为这类操作提供一套命令行进程指示器,这样大家就可以预先估计运行所需要的时间。这确实是一项令人拍手叫好的创新。 查询执行对于面向Web的应用程序来说往往算是一项重大挑战。MySQL查询执行背后的实际大脑其实是查询优化器,MariaDB在这方面也做出了一系列显著改进,包括更好的子查询优化效果、更快的执行速度、更高的执行效率以及更具一致性的连接、导出表以及视图等。另外,MariaDB为用户提供额外的控制选择,用于设定优化器如何做出决定、如何显示更多内部处理流程以及如何通过服务器参数完成配置工作。 MariaDB还提供一系列经过合并的内核强化机制,移除了对性能影响极大的互斥器。所谓互斥器,是一种在内核中连续访问资源的锁定机制。如果资源目前正处于占用状态,进程就必须保持等待直到资源再次可用。MySQL内核中的现有互斥器始终在现代硬件当中也会造成非常严重的拖慢现象。将其取消帮助MariaDB顺利与如今愈发常见的大型SMP设备相对接。 最后,如果大家希望向基于单元的复制机制转移但却受制于单元复制日志中的SQL声明问题,MariaDB也拿出了很好的解决方案。 基于单元的复制机制并非始终可读,因为用户一直在发送原始数据块,也就是数据在发送之前与之后的“镜像”而非实际执行的SQL声明。数据块被交付至从数据库当中并直接写入文件,而不再由SQL进行重复执行。由于这个原因,SQL声明无法成为MySQL日志内容的一部分。 而在MariaDB当中,SQL声明被记录在专门针对单元复制流程的库日志里,其处理方式与基于声明的复制完全相同。这部分SQL声明能够有效帮助管理人员进行故障排查并在特定情况下实现时间点恢复目标。MariaDB的此项改进堪称雪中送炭。 |