Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103113967
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-05-20 22:44:34

   来源:

MySQL被称为业内最广泛使用的开源数据库之一,而可插式的存储引擎是其最重要的特性之一,了解并应用存储引擎将能够更方便地使用MySQL数据库的企业级特性。

图 MySQL数据库体系结构

MySQL数据库是开源数据库产品中最重要的数据库之一,分为MySQL服务器版和MySQL企业级服务器版。它的企业级服务器版主要被广大的中小企业应用,但在很多大企业的部门级数据库应用或关键业务中也开始被采用。MySQL被称为是最广泛使用的数据库产品,主要是由于它具有非常多的动能,其中最有特色的就是它的可插式存储引擎。

当用户将数据库应用到各个不同的领域时,每一种应用都对数据库提出了满足自己需求的特点,而MySQL的插件式存储引擎正是针对此而推出的。使用MySQL插件式存储引擎体系结构,允许数据库专业人员为特定的应用需求选择专门的存储引擎,完全不需要管理任何特殊的应用编码要求。MySQL服务器体系结构由于在存储级别上提供了一致和简单的应用模型和API,应用程序编程人员和DBA可以不再考虑所有的底层实施细节。因此,不同的存储引擎具有不同的,而应用程序是与之分离的。

什么是MySQL的存储引擎

那么什么是可插式存储引擎呢?MySQL中使用各种不同的技术,将数据放在不同的文件系统中进行存储,例如针对内存数据库则将数据直接存储在内存中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的功能和能力,通过选择不同的技术,用户能够获得额外的或者功能,从而改善应用的整体功能。例如,如果要研究大量的临时数据,也许就需要使用内存存储引擎,内存存储引擎能够在内存中存储所有的表格数据,帮助用户完成应用。又或者,用户也许需要一个支持事务处理的数据库,以确保事务处理不成功时数据的回退能力,这就需要使用支持事务处理的存储引擎。这些不同的技术以及配套的相关功能在MySQL中被称做存储引擎(也称做表类型)。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储信息、如何检索这些信息以及需要数据结合什么性能和功能的时候提供最大的灵活性。

可以选择如何存储和检索数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。而其他数据库系统(包括大多数商业数据库)仅支持其中一种类型的数据存储。MySQL数据库的体系结构如上图所示。

存储引擎的配置使用

这里,笔者重点介绍一些经常被大家使用的MySQL存储引擎,并且也介绍一下这些可插式存储引擎如何使用的问题。首先,最常用的是MyISAM存储引擎,它是默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。它支持表级的锁定、全文索引等功能。然后是InnoDB存储引擎,用于事务处理应用程序,具有众多特性,通过MVCC支持事务,允许COMMIT、ROLLBACK和保存点,同时也支持ACID事务。InnoDB存储引擎是由Innobase公司开发的,但在2005年10月份,甲骨文收购了这家公司,所以,虽然当前此引擎依然还在被使用,不过,MySQL已经开发出了新的引擎以便替换InnoDB引擎,代号为Falcon。新的引擎将在不久的将来发布。

接下来是Cluster/NDB引擎,它是MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。而Archive引擎,为大量很少引用的历史、归档或审计信息的存储和检索提供了完美的解决方案。Federated引擎则能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库,十分适合于分布式环境或数据集市环境。Merge引擎允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用它们,对于诸如数据仓储等VLDB环境十分适合。Memory引擎将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问速度。

其他存储引擎包括CSV(引用由逗号隔开的用做数据库表的文件)、Blackhole(用于临时禁止对数据库的应用程序输入)以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。

想要改变存储引擎结构,对于数据库系统而言,只要更改数据库系统的STORAGE_ENGINE配置变量,就能够方便地更改MySQL服务器的默认存储引擎。要想方便地安装插件式存储引擎,这些存储引擎的plugin文件必须位于恰当的MySQL库目录下,而且发出INSTALL PLUGIN语句的用户必须具有超级管理权限。由于可插引擎的便利性,对于所有的应用方案,并不一定要使用相同的存储引擎,可以为同一个应用方案中的每个表使用不同的存储引擎,只需要在创建新表时指定存储引擎,可使用ENGINE参数,或通过使用ALTER TABLE语句指定存储引擎。如果想拔出存储引擎,只需要使用UNINSTALL PLUGIN语句就可以了。(作者单位系总装航天指控中心)

名词解析:开源数据库

开源数据库市场经过多年发展,在企业应用中也已经成熟起来。其中,最为大家的是MySQL、PostgreSQL、Firebird、Derby、Orade等。MySQL号称“世界上最流行的开源数据库”,在很多企业中得到了非常多的应用,而且在很多关键业务中也得到应用,有大量成功案例,具有非常好的可靠性和技术优势。它从5.0版本开始加入了大量企业级应用的元素,如存储过程、触发器、视图、指针等。MySQL的企业级应用在也广泛开展,中国的万里开源同MySQL建立了合作伙伴关系从事MySQL培训,中国开发人员对MySQL进行开发与应用,并推出了最流行的LAMP应用。

PostgreSQL号称“世界上最先进的开源数据库”,是比较复杂的对象—关系型数据库管理系统(ORDBMS),特性丰富、复杂,其中的一些特性甚至连商业数据库都不具备,其目标是要做超大型的面向对象关系型数据库系统。它支持SQL89和SQL92标准。EnterpriseDB是从PostgreSql基础上延伸的数据库,号称“真正的企业级开源数据库,并足以与Oracle相竞争”。firebird是一个全功能的、强大高效的、轻量级、免维护的数据库,完全支持ANSI SQL92、SQL98等标准,它很容易从单用户、单数据库升级到企业级应用。firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个端连接。

阅读(271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~