【IT168 专稿】说到大数据,不得不提的就是阿里巴巴。这家全球领先的电子商务企业,每天处理的数据量是其他任何公司都无法比拟的,它也正在转型成为一家真正意义上的数据公司——MySQL就是阿里巴巴转型的重要武器。曾经采访过阿里的一位数据库架构师,他认为阿里将开源MySQL的性能达到最佳状态,超越任何关系型数据库和NoSQL。
2009年,甲骨文通过收购Sun获得了MySQL的版权,业界就开始质疑甲骨文的用意,担心MySQL的未来发展。而甲骨文在收购时就曾表态,会比Sun投入更多的精力来开发MySQL。目前看来,至少MySQL社区版和第三方版本的发展并没有受到收购的影响,MySQL的商业版本也在持续的改进和更新中。下面笔者将盘点一下甲骨文推出的MySQL 5.6正式版的一些新功能,及其针对大数据时代的改进。
一、MySQL 5.6正式版功能盘点
2013年初,甲骨文发布MySQL 5.6正式版,通过提升MySQL优化诊断来提供更好的查询执行时间和诊断功能,通过增强InnoDB存储引擎来提高性能处理量和应用可用性,通过MySQL复制的新功能以提高扩展性和高可用性,并且拥有许多新增强功能,包括地理信息系统、精确的空间操作、增强的IPv6合规性和优化服务器的默认设置。
凭借增强的性能、可扩展性、可靠性和可管理性优势,MySQL 5.6可帮助用户满足最苛刻的网络、云和嵌入式的应用需求。通过子查询优化、在线数据定义语言(DDL)操作、NoSQL访问InnoDB、新的性能架构检测以及更好的条件处理,MySQL 5.6可极大提高开发人员的灵活性。
四大亮点:
1.通过提升MySQL优化诊断来提供更好的查询执行时间和诊断功能
·子查询优化:通过在执行之前优化子查询来简化查询开发。新效率体现在查询执行时间内,显著提升结果集的选择、分类并返回交付。
·新增的指数条件下推(Index Condition Pushdown)和批量密钥访问(Batch Key Access)功能可提高选择查询量高达280倍。
·增强的优化诊断功能:通过EXPLAIN进行INSERT,UPDATE和DELETE操作。EXPLAIN计划以JSON格式输出,提供更精确的优化指标和更好的可读性,优化跟踪(Optimizer Traces)可跟踪优化决策过程。
2.通过增强InnoDB存储引擎来提高性能处理量和应用可用性
·提升处理和只读量高达230%:通过InnoDB重构,以尽量减少传统线程,冲洗和清理互斥冲突和瓶颈,从而在高负重OLTP系统上,实现更好的并发性,进而针对只读工作负载(2)和处理,显著提高处理量。
·提高可用性:在线DDL操作可使数据库管理员添加索引和执行表变更,且应用程序仍可用于更新。
·InnoDB全文搜索:允许开发人员在InnoDB表上,建立全文索引,以表示基于文本的内容,并加快单词和短语的应用搜索。
·简单、关键值查找:通过熟悉的Memcached API,对InnoDB的灵活NoSQL访问,提供了InnoDB数据的简单、关键值查找。用户可实现在同一个数据库,关键值操作和复杂的SQL查询的“双赢”效应。
3.通过MySQL复制的新功能以提高扩展性和高可用性
·自我修复功能的复制集群:新增的全球处理识别和使用程序(Global Transaction Identifiers and Utilities)能更方便的实现自动检测并从故障中恢复。碰撞安全复制功能(Crash-Safe Replication)使二进制日志和从动装载,在崩溃和恢复复制的情况下,能自动恢复到在复制流的正确位置上,而无需管理员干预。通过自动检测和警告错误,Checksums可跨集群维护数据的完整性。
·高性能复制集群:通过多线程的从动装置(3),Binlog组提交和基于行复制的优化(Binlog Group Commit and Optimized Row-Based Replication)使复制能力提高了5倍,让用户在向外扩展其跨商品系统的工作负载时,能够最大限度地提高复制性能和效率。.
·时间延迟复制:能防止发生在主机的操作失误,如意外删除表格等。
4.增强的性能架构(PERFORMANCE_SCHEMA):新检测让用户能够更好地监控资源最密集的查询、对象、用户和应用程序。也可通过查询、线程、用户、主机和对象来实现新汇总统计信息概要。增强功能允许更简便的默认配置,且只耗费不到5%的成本。
二、MySQL针对大数据的改进
1、NoSQL功能
在甲骨文最新发布的MySQL 5.6正式版中,增加了一些NoSQL特性,即通过Memcached API对InnoDB的灵活NoSQL访问,提供了InnoDB数据的简单、关键值查找。从此可以看出NoSQL对关系数据库的确产生了巨大的影响,MySQL的这一举动可以让开发人员更加方便的使用NoSQL和关系数据库。
但有很多技术人员认为MySQL的这一功能略显鸡肋,并不能真正发挥NoSQL的作用。以扩展性为例,NoSQL的一个主要优势就是横向扩展(Scale Out)。例如Cassandra能够简单透明地在多个机器上进行扩展,它们可以是廉价的硬件组成的集群,而无需购买昂贵的服务器或者SAN存储。这一点MySQL 5.6是做不到的。
2、支持Hadoop
MySQL团队最新推出了MySQL Applier for Hadoop(以下简称Hadoop Applier),希望解决从非MySQL服务器复制数据的问题。
例如,复制事件中的从服务器可能是一个数据仓库系统,如Apache Hive,它使用Hadoop分布式文件系统(HDFS)作为数据存储区。如果你有一个与HDFS相关的Hive元存储,Hadoop Applier就可以实时填充Hive数据表。数据是从MySQL中以文本文件形式导出到HDFS,然后再填充到Hive。
操作很简单,只需在Hive运行HiveQL语句'CREATE TABLE',定义表的结构与MySQL相似,然后运行Hadoop Applier即可开始实时复制数据。
在Hadoop Applier之前,还没有任何工具可以执行实时传输。之前的解决方案是通过Apache Sqoop导出数据到HDFS,尽管可以批量传输,但是需要经常将结果重复导入以保持数据更新。在进行大量数据传输时,其他查询会变得很慢。且在数据库较大的情况下,如果只进行了一点更改,Sqoop可能也需要较长时间来加载。
而Hadoop Applier则会读取二进制日志,只应用MySQL服务器上发生的事件,并插入数据,不需要批量传输,操作更快,因此并不影响其他查询的执行速度。
小结
MySQL是业界最优秀的一款开源关系型数据库软件,拥有大批追随者,他们不仅使用MySQL,也为MySQL社区做贡献,形成一个良好的生态系统。对于MySQL而言,对NoSQL和Hadoop的支持只能是对大数据时代的一种迎合,对于技术人员的作用不置可否。