其次,比较数据加载性能
▲表3 各种数据库TPC-H 10GB数据量(未压缩)加载时间,单位:秒
这次的优胜者是db2,它独有的并行压缩功能将其他数据库远远超过,而其他数据库的导入要么不支持并行,要么需要将原始数据拆分成多个文件才能并行导入,以Oracle为例,如果将8GB的大表lineitem的原始文件拆分成4份,同时启动4个SQLLDR进程,那么时间从8分钟缩短为2分10秒,但从操作便利性上也不如db2。
第三,比较数据压缩比
▲表4 各种数据库TPC-H 10GB数据量压缩比,单位:未压缩为1
数据压缩的优胜者也是db2,余下的按压缩比从大到小顺序排列为MySQL,MS SQL Server和Oracle。压缩前的数据大小不同和采用的优化技术有关,Oracle未添加任何索引和约束,其他数据库均添加了主键和外键约束,其中MySQL还自动创建了外键列上的索引。
第四,综合比较
从前面各篇评测内容可知,对于Oracle、MS SQL Server、db2、MySQL和PostgreSQL这5种市场上主流的行式数据库,各种数据库的功能基本上都能满足sql 92的标准、也都支持事务处理、完成日常OLTP数据处理的需要,每种数据库都扩充了部分特色功能使得在某一方面的应用更具优势,但商业数据库的综合水平更好一些,特别是性能方面,对于并不是行式数据库的特长的tpc-h测试项目,也都有良好的表现, 可适用于数据分析类应用。db2的情况特殊一些,它的数据装载性能很高,但在同等条件下,查询却落后Oracle和MS SQL Server较多。MS SQL Server更贴近用户一些,自动根据硬件的配置情况并行处理,Oracle需要用户指定并行参数或者开启自动并行度(DOP)方能执行并行查询。
开源数据库本身对并行支持较弱,在大规模数据处理方面不强,但依靠一些第三方的工具,比如Greenplum,也有了很多成功的案例,系统的健壮性和稳定性随着历史的发展也取得了长足的进步,成为数据库市场重要的组成部分。
商业数据库一般都附带了图形界面管理工具,而免费的开源数据库也有相应的工具,Oracle主推基于Web方式的EM,db2是基于java的客户端工具,MS SQL Server则是原生的二进制编译,工具的存在大大降低了记忆命令的要求,提高了管理和开发效率。对于熟练用户,命令行工具有时候更适合远程登录到主机上操作,每种数据库也都提供了功能强大的命令行工具,可以完成交互和批量任务。
从使用的难易程度来看,Oracle和MS SQL Server易用性较好,初学者较容易入门,而db2、MySQL、PostgreSQL需要更多的时间学习掌握,不过,这对有经验的DBA和开发人员有利,能在市场上获得比Oracle和MS SQL Server DBA更好的待遇。
从数据库的新功能来讲,比如xml支持,三大商业数据库都支持SQL/XML标准,也就是它们都提供了像XMLELEMENGT,XMLATTRIBUTES等七个函数来支持从数据库中查询出的数据转换成XML格式的数据。Db2强调它是一款支持原生xml处理的数据库,处理的性能较高,其实Oracle的xml功能也不错,可以用来构造动态的SQL,解决一些普通SQL无法解决的问题。MS SQL Server早自 2000版本开始也支持xml,只是用途不如普通的传统数据库功能广泛。MySQL 5.1也引入了对xml的支持,对XML文档进行查询和修改的函数分别是ExtractValue()和UpdateXML(),PostgreSQL 内建了 xml 数据类型,对 XML 处理的函数主要就是 xpath ,它能通过一个xpath 参数,将 XML 文档中相关的信息转换为 PostgreSQL 的 xmlarray 类型。相比商业数据库,功能略少。