Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 LINQ ADO.NET JavaScript DataGridView GridView AjaxPro DevExpress 面向对象 Extjs XML HTML教程 Oracle jQuery WPF MVC 分页 Office2010 GDI+ Visual C++2010 Dojo MySQL VB.NET WCF4.0 ASPxGridView WinForm textbox Sql2005 cookie Discuz!NT checkbox WCF SQL经典语句 T-SQL F# asp.net VS2008 SQL Ajax DropDownList VS2008新特性 TreeView Access Flex 页面执行时间 字符串 DataSet VB2005 回调 动画 C#时间 游戏 ASP.NET MVC
SQL Server Oracle AccessMySQL
当前位置: 主页 > 数据库 > MySQL >

浅谈MySQL的存储引擎之表类型存储

时间:2011-05-06 14:23来源:未知 作者:admin 点击:

什么是MySql数据库?

通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合。

我们通常说的MySql数据库,sql server数据库等等其实是数据库管理系统,它们可以存储数据,并提供查询和更新数据库中的数据的功能等等。根据数据库如何存储数据和如何操作数据的实现机制不同,这些数据库之间即有区别又有共同点。

MySql数据库是开放源代码的关系型数据库。目前,它可以提供的功能有:支持sql语言、子查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。在后期,我们会详细讲解这些功能。

同Oracle 和SQL Server等大型数据库系统一样,MySql也是客户/服务器系统并且是单进程多线程架构的数据库。

MySql区别于其它数据库系统的一个重要特点是支持插入式存储引擎。

那么什么是存储引擎呢?

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

MySql中有哪些存储引擎?

1 MyISAM:这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种:

静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的,服务器将自动选择这种表类型。因为数据表中每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。当数据受损时,恢复工作也比较容易做。

动态MyISAM:如果数据表中出现varchar、xxxtext或xxxBLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进而导致执行效率下降。同时,内存中也可能会出现很多碎片。因此,这种类型的表要经常用optimize table 命令或优化工具来进行碎片整理。

压缩MyISAM:以上说到的两种类型的表都可以用myisamchk工具压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。另外,因为是压缩数据,所以这种表在读取的时候要先时行解压缩。

但是,不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。

2 MyISAM Merge引擎:这种类型是MyISAM类型的一种变种。合并表是将几个相同的MyISAM表合并为一个虚表。常应用于日志和数据仓库。

3 InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能。

4 memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。

5 archive:这种类型只支持select 和 insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。

当然MySql支持的表类型不止上面几种。

下面我们介绍一下如何查看和设置数据表类型。

MySql中关于存储引擎的操作

1 查看数据库可以支持的存储引擎

用show engines; 命令可以显示当前数据库支持的存储引擎情况,如图1所示:


图1 数据库的存储引擎

由上图可见当前系统的默认数据表类型是MyISAM。当然,我们可以通过修改数据库配置文件中的选项,设定默认表类型。

2 查看表的结构等信息的若干命令

要查看表的定义结构等信息可以使用以下几种命令:

2.1Desc[ribe] tablename; //查看数据表的结构

例如,查看表t1的结构,可得下图。


2.2 Show create table tablename; //显示表的创建语句

同上查询表t1,得下图:


图3 显示创建表t1的语句

2.3 show table status like ‘tablename’\G显示表的当前状态值

同上查询表t1,得下图:


图4 显示表t1 的当前状态值

Tags:
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价
  • 使用MySQL存储过程连续插入多条记录

    使用MySQL存储过程连续插入多条记录...

  • 浅谈MySQL的存储引擎之表类型存储

    什么是MySql数据库? 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合。 我们通常说的MySql数...

  • mysql快速创建空表

    今天有人问我用什么方法可以创建空表? 在MYSQL中有两种方法。 1、create table select ... 2、create table like ....

  • MYSQL中删除重复记录的方法

    在实际应用中,很可能会碰到一些需要删除某些字段的重复记录,我现在把我能想到的写下来,望高手们补充。 1、 具体实现如下: Table Create Table ...

  • MySQL动态行转列

    网上的都是一些静态的,用CASE WHEN结构实现。所以我写了一个动态的。 SP 代码: DELIMITER $$ DROP PROCEDURE IF EXIS...

  • mysqlhotcopy热备工具体验与总结

    今天有空尝试了一下MYSQLHOTCOPY这个快速热备MYISAM引擎的工具。 (本文是针对单个服务器的情况,以后将会加入多服务器相关操作) 他和MYSQLDU...

  • 改良版本mysqldump来备份MYSQL数据库

    我的备份脚本都是在凌晨执行的,经常在慢查询日志里面看到这样的信息:select * from table1; 之前一直很纳闷,最后才了解到原来是MYSQLDUM...

  • load data infile需要注意的一些地方

    LOAD DATA INFILE 一直被认为是MySQL很强大的一个数据导入工具,因为他速度非常的快。 不过有几个问题一定要注意 1、编码。 2、灵活导入导出。...

  • 分组序号在MySQL中的实现

    好像ORACLE中有相应的函数,可惜在MSSQL 或者MySQL中没有对应的函数。后两者就得用临时表来实现了。 1、表结构以及示例数据。create table...

  • MySQL分表优化试验

    这里的分表逻辑是根据t_group表的user_name组的个数来分的。因为这种情况单独user_name字段上的索引就属于烂索引。起不了啥名明显的效果。 1、...

  • 内存表和临时表的区别

    内存表: 1. 参数控制:max_heap_table_size 2. 到达上线后报错。 3. 表定义保存在磁盘上,数据和索引保存在内存里面。 4. 不能包含T...

  • MySQL的慢日志分析工具

    我们知道,如果我们的语句不够优化,那么首先MySQL的慢日志是进一步优化的离线证据,虽然里面有好多伪慢语句! 先不说怎么优化,如果你的日志有一条语句赌住了,那么...

  • MySQL数据库语句优化的原则

    1、使用索引来更快地遍历表。 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各...

  • 常用的三种修改MySql最大连接数的方法

    MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个 方法一:进入MY...

  • MySQL不允许从远程访问的解决方法

    解决方法: 1。 改表法。 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 mys...

  • MySQL客户端不输入用户名和密码直接连接的2种方法

    一、可以修改my.ini配置参数(linux下面是my.cnf); [quote][client] port=3306 default-character-se...

  • MySQL存储过程调试方法

    在存储过程中调试SQL:假设你的存储过程的主要逻辑是DDL和DML操作,这个方法才能工作,换句话说就是只有查询、插入等语句,同时假设其它存储过程主要承担支持数据...

  • 一个简单MYSQL的数据备份类

    这些一直都在搞数据,因此数据的备份就少不了的了,如果不写这类一个简单MYSQL的数据备份类,那将是很麻烦的。自己就下定决心,写了一个。 功能上有: requir...

  • MySQL中的字符串模式匹配

    MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。 标准的SQL模式匹配 SQL的模式匹...

  • 利用crontab系统每天定时备份MySQL数据库

    利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。 1、创建保存备份文件的路径/mysqldata #mkdir /mysql...

  • 简便的MySql数据库备份的方法

    使用MYSQL进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的备份方法,而且又快有...

  • MySQL Order By语法

    MySQL Order By keyword是用来给记录中的数据进行分类的。 MySQL Order By Keyword根据关键词分类 ORDER BY ke...