MySQL存储引擎MyISAM与InnoDB

栏目: 数据库 · 发布时间: 7年前

内容简介:存储引擎的实质就是如何实现存储数据,为存储数据建立索引以及查询、更改、删除数据等技术实现的方法。或者:alter table info engine=MyISAM/InnoDB; //进入数据库操作

存储引擎的实质就是如何实现存储数据,为存储数据建立索引以及查询、更改、删除数据等技术实现的方法。

  • MySQL支持插件式的表存储引擎,这种独有的插件式体系架构,让存储引擎有了依赖应用的多样性。其中较为知名的存储引擎为MyISAM与InnoDB.
  • MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会先传输到存储引擎,然后按照各个存储引擎的存储格式进行数据存储。使用这种存储引擎的主要优点在于,仅仅需要提供特殊应用的特性即可;数据库中的系统开销较小,更具有有效和高效的数据库性能。

MyISAM存储引擎特点

  • 1、不支持事务处理,需要事务支持的系统不能使用MyISAM作为存储引擎
  • 2、表级锁定形式,数据在更新时会锁定整个表。
  • 3、数据库在读写的过程中相互阻塞:

    在数据写入的过程中阻塞用户对数据的读取;

    在数据读取的过程中阻塞用户写入数据;

  • 4、可以通过key_buffer_size来设置缓存索引,提高访问的性能,减少磁盘IO的压力。
  • 5、采用MyISAM存储引擎不支持外键约束,只支持全文索引。
  • 6、采用MyISAM存储引擎进行数据单独写入或者读取,速度较快且占用资源相对要少。
  • 7、MyISAM存储的文件类型:

    .frm 文件存储表定义;

    数据文件扩展名为.MYD(MYDATA);

    索引文件扩展名为.MYI(MYIndex);

InnoDB存储引擎特点

  • 1、支持事务处理,支持四个事务隔离级别。
  • 2、行级锁定,但是全表扫描时会锁定整个表。
  • 3、读写阻塞与事务隔离级别相关。
  • 4、具有非常高效的缓存特性,能缓存索引,也能缓存数据。
  • 5、表与主键以簇的方式存储。
  • 6、支持分区、表空间,类似oracle数据库。
  • 7、支持外键约束,MySQL5.5以前不支持全文索引,后面的版本支持。
  • 8、适合对硬件资源要求较高的场合。

存储引擎的更改与选择方式

  • 查看数据库使用的存储引擎方法:
show table status from school where name='info';

或者:

show create table info;

配置存储引擎的几种方式:

  • 1、使用alter table命令修改:

    (修改现有表的存储引擎)

alter table info engine=MyISAM/InnoDB; //进入数据库操作

  • 2、修改默认存储引擎:

    (针对后面新创建的表格起作用)

#vim /etc/my.cnf
default-storage-engine=MyISAM/InnoDB      //在[mysql]服务栏下设置默认存储引擎
  • 3、在创建表时指定使用的存储引擎种类: //在 mysql 模式下
create table test(name varchar(10)) engine=InnoDB;  show create table test;
  • 4、mysql_convert_table_format命令可以批量转换存储引擎

    注:此种 工具 使用只能存在于MySQL5.5版本以前。

yum install perl-DBI perl-DBD-MySQL -y //安装操作运行库

默认情况下只能将已存在的InnoDB的存储引擎更改为MyISAM形式,若需要反过来更改需要更改命令执行脚本:

vim /usr/local/mysql/bin/mysql_convert_table_format

(第四种同时更改多表的存储引擎为在MySQL5.5版本为例)

$opt_help=$opt_version=$opt_verbose=$opt_force=0;
$opt_user=$opt_database=$opt_password=undef;
$opt_host="localhost";
$opt_socket="";
$opt_engine="MYISAM";
$opt_port=0;
$exit_status=0;

GetOptions(
  "e|engine|type=s"       => \$opt_type,        //32行,type更改为engine即可
  "f|force"               => \$opt_force,
  "help|?"               => \$opt_help,
  "h|host=s"              => \$opt_host,
  "p|password=s"          => \$opt_password,
  "u|user=s"              => \$opt_user,
  "v|verbose"             => \$opt_verbose,
  "V|version"             => \$opt_version,
  "S|socket=s"            => \$opt_socket,
  "P|port=i"              => \$opt_port

然后用:(Linux模式下利用该命令)

mysql_convert_table_format --host=localhost --user=root --password=abc123 --socket=/tmp/mysql.socket --engine=InnoDB school test01 test02
--host=localhost    //表示本地数据库
--user=root           //表示登录用户
--password=abc123  //表示登录密码
--socket=/tmp/mysql.socket  //指定socket目录
--engine-InnoDB       //需要更改后的存储引擎
school      //指定需要更改的库
test01 test02    //需要同时更改的表

可以同时更改test01 test02多个表的存储引擎。


以上所述就是小编给大家介绍的《MySQL存储引擎MyISAM与InnoDB》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

About Face 3

About Face 3

Alan Cooper、Robert Reimann、David Cronin / John Wiley & Sons / 2007-5-15 / GBP 28.99

* The return of the authoritative bestseller includes all new content relevant to the popularization of how About Face maintains its relevance to new Web technologies such as AJAX and mobile platforms......一起来看看 《About Face 3》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器