mysql5.0,详解MySQL5.0

详解MySQL5.0 - 应用软件 - 电脑教程网

详解MySQL5.0

日期:2006-06-07   荐:
·Mysql5.0学习笔记(一)·MySQL5.0中文问题及JDBC数据库连接和JS·Tomcat5.5.12 mysql5.0 Eclipse连接·Mysql5.0 存储过程·Mysql5.0中文乱码解决方案·apache2.2 mysql5.0 php5.1 Discuz!4.1·我的Mysql5.0中文乱码解决方案

至今还没有MySQL 5版本发布的官方确定日期,但MySQL专家Mike Hillyer从内部抢先获取了有关MySQL 5的新特点。在这篇技巧文章中,Hillyer回答了读者有关MySQL 5和从Oracle和Microsoft的产品升级到MySQL方面的问题。

MySQl 5中的哪些特点在何种情况下将可能非常有用?

Hillyer:那是一定的!让我们看一看MySQL 5中主要的特点:

存储进程(Stored Procedures)是存储于MySQL服务器中的进程码,它能够在服务器端被完全的执行。MySQL使用标准的SQL:2003存储进程语言,此语言也被称作PL/PSM。这里有一个存储进程的例子:

CREATE PROCEDURE procedure1 /* name */

(IN parameter1 INTEGER) /* parameters */

此存储进程获取一个单精度整型变量,然后根据变量是否等于17,将其插入“birds”或“beasts ”表中。

虽然存储进程并不是每个人都需要,但使用强制性的存储进程,将使他们的程序具有可移植性:你可以使用存储进程编写事务处理逻辑,然后在PHP前端、桌面应用程序和PDA程序中重用它,在MySQL服务器上调用存储进程。你还能够在C、PHP、Java、VB,或其它任何可以连接MySQL的语言中调用同样的存储进程。这可以节省大量的工作,因为你不必要再重复的一遍又一遍的执行同样的逻辑运算。

你可以在这篇文档:http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.html中学习到更多有关存储进程的知识。

触发器使用同样的过程语言作为存储进程,不过相比等待用户调用代码,它附加在一个事件上,比如 INSERT(插入)表的事件。事件通常是INSERT、UPDATE和DELETE。这里是一个触发器的例子:

CREATE TRIGGER t25_bi

BEFORE INSERT ON t25

FOR EACH ROW

IF LEFT(NEW.s2,1)'A' THEN SET NEW.s1=0; END IF;//

在上面的这种情况下,触发器检查正在插入到表中的数据,看它插入s2字段的最左边的字符若不是“A”,则设置s1列的值为0。触发器能够被用来记录操作(logging activity,就是说你可能希望有一个审计表显示每个动作,另一个表作为日志记录)、验证数据(validating data,根据复杂的标准检查数据的插入值),和不需强制的外来关键字就可以维护表处理程序之间的关系。

在http://dev.mysql.com/tech-resources/articles/mysql-triggers.html,你可以学习到更多有关触发器的知识。

而视图(View)则是“一个数据库中定义的持久的指定的、源表。”将视图想像成一个能够应用于表中的存储查询。这里有几个有关视图的例子:

A view is "a named, derived table whose definition is a persistent part of the database." Think of a view as a stored query that can be used as a table. Here are a couple of examples of views:

CREATE VIEW v AS SELECT column1 FROM t;

CREATE VIEW v AS

SELECT * FROM t

WHERE col1 IN (SELECT MAX(col1) FROM t);

使用视图将使MySQL的使用简单化。如果你为了事务报告使用一个复杂的查询,它们通常可以容易的转换成一个视图,然后终端用户能够使用视图创建报告。视图还能够在安全方面有所帮助,如果一个用户只有访问一个表单中的某一行的子集的权限,你就可以创建一个视图,分配给他相应的权限,而不必像以前一样把整个表的权限都要给他(比如你想某个用户只能访问多区域表单中的单一区域销售数据)。

在http://dev.mysql.com/tech-resources/articles/mysql-views.html,你可以看到更多有关视图的文章。

至于如何使用MySQL的新特典,则依赖于你的应用和你的技术水平。多数用户不需要在程序编写上具有很多经验,就能够从视图中获取巨大的好处,因此非常值得尝试。

MySQL的可扩展性如何?

Hillyer:这完全取决于你的需要,不过还是让我给你一些真实性的可扩展性的例子。在上个月的2005 MySQL用户讨论会上,我遇到了一些运行MySQL的,拥有20TB字节数据的用户,他们使用这些数据进行统计分析。此次会议,Ticketmaster描述了MySQL如何通过复制设定,用MySQL的复制体系将应用扩展到处理许多不同地点的服务器,它们每天的售票数超过500,000张。Wikipedia 同样使用MySQL服务器,此服务器拥有32GB的内存,处理高负载的数据库应用,并且MySQL还能够处理更多的内存和资源。一些知名的公司,如Yahoo、Google和Slashdot,都使用MySQL运行高负载的Web应用。

最后我要说的是,这些都取决于你需要何种扩展,不过你可以放心,MySQL具有非常好的可扩展性,能够与其它东西很好的结合在一起。

我的公司现在实用磁带驱动器备份MySQL。我们的系统有一点老了,现在我们正在寻找另外的解决方案,您能否向我建议一些能够跟 MySQL一起更好工作的备份系统?

Hillyer:通常,一个备份方案是硬件和软件的混合体,而对MySQL来说,硬件并不是与备份真正关系紧密的,你可以将备份存储在磁带、光盘,或者磁盘阵列上。如果你之前实用的是磁带,那么你只需要活的一个新的磁带解决方案即可。

在软件方面,有多种方案:你可以实用内建在MySQL中的工具,比如mysqldump和mysqlhotcopy,或者实用来自专业公司,如Veritas和Arkeia的第三方备份解决方案。MySQL已经在它的官方网站发布了一个备份方案的列表――http://solutions.mysql.com/search.php?pc=14%2C86&q=&level=0,可能对你非常有用。

我们现在所有的应用都实用Oracle 8i,不过到了升级的时候。我们对MySQL低成本非常感兴趣,但是有一个问题,我们不知道MySQL有没有能力处理位于两个海岸的公司的动态Web销售业务。我们的情况是否能够使用MySQL?我们将要考察实用的模型,或者说客户-服务器的转换是不是很困难?

Hillyer:根据你们现在正在使用的Oracle的情况,MySQL将非常适合你们的需要。你们现有的系统需要在账户中存储一些项目,比如广泛的使用存储进程,而MySQL支持不同的存储进程标准。Oracle使用

标签: