InnoDB存储引擎功能上的特点

在MySQL中使用最为广泛的除了MyISAM之外,就数InnoDB了。InnoDB作为第三方公司所开发的存储引擎,和MySQL遵守相同的开源许可证协议。

    InnoDB之所以能如此受宠,主要是因为其功能方面的几个特点。

    1、支持事务安全
   
    InnoDB在功能方面最重要的一点就是对事务安全的支持,这无疑是让InnoDB成为MySQL最为流行的存储引擎的一个非常重要原因。而且它实现了SQL92标准所定义的所有4个级别的要求(READ UNCOMMITTED、READ COMMITTED、REPEATABLE和SERIALIZABLE)。对事务安全的支持,无疑让很多之前因为特殊业务要求而不得不放弃使用MySQL的用户重新支持MySQL,那些之前对数据库选型持观望态度的用户,也大大增加了对MySQL的好感。

NDB Clister 存储引擎简介

NDB存储引擎也叫NDB Clister 存储引擎,主要用于MySQL Cluster分布式集群环境,Cluster是MySQL从5.0版本才开始提供的新功能,本文并不只是介绍NDB存储引擎,因为离开了MySQL Cluster整个环境,NDB存储引擎也将失去太多意义。

    简单地说,MySQL Cluster就是在无共享存储设备的情况下实现的一种内存数据库Cluster环境,主要是通过NDB Clister 存储引擎来实现的。

    一般来说,一个MySQL Cluster的环境主要由以下三部分组成。

数据存储优化

如果你已经了解InnoDB存储引擎的物理结构,那么我们可以通过分析InnoDB的物理文件结构寻找可以优化的线索。

    一、理解InnoDB数据及索引文件存储格式

    InnoDB存储引擎的数据存放在相同的文件中,这一点和MySQL默认存储引擎MyISAM的区别较大,后者分别存放于独立的文件。除此之外InnoDB的数据存放格式也比较独特,每个InnoDB表都会将主键以聚簇索引的形式创建。所有的数据都以主键升序排列在物理磁盘上面,所有主键查询并且以主键排序的查询效率也会非常高。

数据存储的发展趋势

企业存储应用的体系结构主要有DAS、NAS和SAN三种模式,下面让我们来看一下它们各自的发展趋势吧!

首先,DAS直连存储的最大弊病在于,各部分的存储资源相互隔离,容易形成孤岛。

其次,NAS具有无人值守、高度智能、性能稳定、功能专一等特点,但NAS技术不能满足可靠度为99.999%的数据存储系统的要求。

最后,SAN的最大优势则在于,可以把异构环境下不同厂商的存储设备整合在一起,实现资源的共享,因此SAN将成为企业存储应用的主流。

为了保证数据在不同的影响建平台、不同的操作系统下流转畅通,存储架构的开放性、存储硬件的兼容性、存储软件的适应性就必须要归结在一起,即表现为存储的融合,也就是说SAN与NAS融合是大势所趋;另一方面,虚拟存储使主机操作系统看到的存储与实际物理存储分开了,虚拟存储技术可提高存储设备的利用率,通过动态地管理磁盘空间,虚拟存储技术可以避免磁盘空间被无效占用。目前虚拟技术已经引起了几乎所有存储系统厂商的关注,采用虚拟存储技术的设备将成为市场的新主流。

文件存储的设计

在IT创业产品互推平台中有大量的文件需要存储,并且文件存储设计的好坏将会对整个SNS的使用产生巨大的影响,特别是在性能方面。

1.单独磁盘存放文件
对于用户上传的文件,很多时候是保存在服务器的磁盘上的。在IT创业产品互推平台站点发展的初期,可能只存在一台服务器,此时,数据库和用程序都会部署在这台服务器上面。

2.独立服务器存放文件
随着SNS站点的发展,文件的上传和下载在服务器上产生了大量的I/O操作。此时服务器的I/O将会成为整个系统的性能瓶颈,而且还会影响数据库及站点的响应能力,因为I/O操作会消耗大量的CPU、内存等资源。此时就需要采用独立的服务器来进行文件处理操作了。

选择一种数据存储的方法

如果我们已经了解到了.NET Framework中所使用的关系型数据访问和XML数据访问这两种技术(尽管现在所了解的还只是相当基础的方法),那么我们将如何去选择数据存储方法呢?最简单的答案是有了.NET,我们无需再考虑这类事情了。

几年前,数据存储和访问技术中的主要指令还是那些构造巨大的数据保管机构和数据仓库的管理命令,我们所建立的数据都被存储在一大块中央数据库中。尽管这种方案仍然使用于某些场所,如政府的税务局,但是,当今分布式的计算环境日益清晰地表明这不是一种理想的方案。

使用数据存储过程

我们已经知道如何使用SQL语句直接从数据源提取数据。而在实际的应用程序中,更好的办法是使用数据仓库中的存储过程来返回所需的数据集。这样可为用户提供一个更好的性能,同时能更好地控制访问许可,而且还有助于在那些好奇的用户面前隐藏数据仓库表的具体内容。

在传统的ADO中,.NET数据访问类能够像处理SQL语句那样轻而易举地处理存储过程。最简单的存储过程只需要我们指定过程的名称,它们就会返回一组无法由ASP代码控制的结果。不过存储过程是可写的,这样它们就可以接受参数。而这就允许由设定参数值和调用过程的ASP代码来控制所返回行集的实际内容。

使用一个存储过程和一个Command对象

在网站建设编码过程中通常更倾向于使用数据存储中定义一个存储过程来实现数据的更新。存储过程能够提供更高的性能,能够对那些好奇的用户实现数据库表结构的隐藏,并对安全权限进行更有效的管理,利用一个存储过程而不是一个SQL语句来实现。在从数据存储中提取数据的时候使用一个存储过程和一个Command对象与使用一个SQL语句从根本上来说是一个相似的过程。

在使用一个Command对象来运行一个用来更新源数据的存储过程中,这个名为AddNewBook的存储过程是利用我们所提供的SQL脚本在数据库WroxBooks中创建的。它使用为存储过程提供的参数的值想BookList表中插入一个新行,如果这个操作成功实现,则返回零值。

«1»
最近发表
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
Tags列表
网站收藏
图标汇集
  • 订阅本站的 RSS 2.0 新闻聚合
友情链接

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.