技术开发 频道

MySQL:从昨天的“玩具”到今天的竞争者


【IT168 技术分析】

    MySQL 5.0

 支持存储过程。存储过程是一个开发人员在其他数据库环境最常用的ANSI SQL标准,对于MySQL来说,这已经姗姗来迟了。MySQL 5.0所支持的存储过程的语法类似于Oracle PL/SQL和T-SQL。

 触发程序(发生某个事件时所称的存储过程)

 支持指针

 真正支持VARCHAR数据类型,解决了一个长期存在的MySQL VARCHAR bug。
在MyISAM表中对RTREE索引的支持,将使访问地理数据变得很容易。 

    MySQL 5.1 

    相对于5.0版本,MySQL 5.1实现了一些新的功能:

 联机备份(允许添加replication slave,而不必关闭主服务器)。

 BIT类型,实际占用1位,而不是1个字符。

 失败保护(failsafe)复制

 列级别约束

 全外连接(Full outer join),将来自表A的纪录(包括表B中没有匹配的返回记录)和来自表B的记录连接在一起(包括表A中没有匹配的记录)。

 内部文件接口的更改将使文件处理更加普通,使它更容易添加扩展,如RAID。

 RENAME DATABASE语句。

 获得长期运行命令的进程报告。

 基于行的复制,该功能允许精确复制非确定性语句。

 将日志文件写入表格而不是文件(因此可使用SQL语句查询)。

 通过分区,从物理上加强对表存储的控制。

 更好地复制MySQL集群。

 灵活的API插件,允许在运行服务器时加载和卸载组件。

 负载仿真程序mysqlslap。

 使用mysqldump转储表空间。

 事件调度程序(event scheduler),提供按时间运行语句的能力。
更大更好的元数据数据库。

 多个XML功能。

 mysql_upgrade脚本,允许用户轻松升级到新版本。

 未知实例管理器的新功能,允许用户列出所有日志文件,返回某一日志文件的一部分,提供配置选项。

 编写包含按名称对表进行直接引用的触发程序。 


    MySQL 5.2 

    到目前为止,有关MySQL 5.2的文档更多是描述其不足之处,并没有介绍将来会如何发展。下面列出了不少可能会遭到批评或被取消的语句或结构(其中一些已经遭到批评),它们包括:

 table_type变量、TYPE定义和SHOW TABLE TYPES语句,它们曾经称为表类型现在已改称存储引擎。

 log_bin_trust_routine_creators变量。

 在TIMESTAMP(n)中定义(n)的能力。TIMESTAMP字段更愿意总是存储和返回完整的DATETIME。

 BACKUP TABLE和RESTORE TABLE语句。在行之间读取,这并不表示MySQL在硬驱动面前显得无能为力。相反地,它更接近于一个正确的联机备份设备,尽管具体计划还未完备。目前,这些语句只针对MyISAM表而工作,并且每次锁定一个表。获得多个表的干净的备份需要使用LOCK语句,该语句对大型或正在操作的表具有很大影响。现在推荐mysqlhotcopy脚本作为该语句的代替。

 SHOW LOGS和SHOW BDB LOGS语句。优先选择更加特定的同义词SHOW ENGINE BDB LOGS。

 LOAD TABLE FROM MASTER语句。该语句不是非常有用(一般更多的是使用LOAD DATA FROM MASTER),事实上,该语句通常用于调试LOAD DATA,如果用于现有的从属语句,很可能导致灾难。

 SHOW INNODB和SHOW MUTEX语句。现在优先选择的是更清晰的SHOW ENGINE INNODB STATUS和SHOW ENGINE INNODB MUTEX语句。 

    对于外键,从MySQL 3.23开始,InnoDB存储引擎一直支持外键,其它存储引擎曾经暂时支持过该语法,因此很多开发人员没有注意到外键的缺失。但是,从版本5.2开始所有的存储引擎,包括MyISAM引擎将完全支持外键。MyISAM最初设计是一个轻量级的快速存储引擎。该引擎一开始性能很简单,随着新功能的日渐加入,人们开始对它的性能表现出了兴趣。 

    MySQL目前打算在版本5.2中对所有存储引擎提供外键支持,同时考虑平稳地拿掉适当的联机备份功能。不过,还有一个增加的部分是视图功能的添加,这个一直要求的功能本来打算只添加到MySQL 6中的。 

    MySQL某些领域的进展令人失望。笔者认为MaxDB和MySQL之间的互操作性应该有所改进,以便用户使用标准MySQL工具,如与MaxDB交互的mysql和mysqldump,但过去了整整两年,这一点并未实现。这是自从与Oracle断绝关系以来,MySQL最令人失望的一点。 

    尽管MySQL集群在取得跳跃式进步,并使其成为MySQL DBA全套功能的重要组成部分。它现在还良好地集成了一般复制。
0
相关文章