MyISAM特点介绍
MyISAM是Mysql数据库系统5.5版本之前的默认存储引擎,他的前身是ISAM。ISAM是一个定义明确且历经时间考验的数据表格管理方法。它的读取操作速度很快,而且不占用大量内存和存储资源。
特点:
1)不支持事务
2)表级锁定形式,数据在更新时锁定整个表。
3)数据库读写过程中相互阻塞。
4)可以通过key_buffer_size来设置缓存索引
5)数据单独写入或读取 速度快占用资源少。
6)不支持外键约束,只支持全文索引。
7)在每个磁盘上存储成三个文件,文件名均以表的名字开始。
【 .frm文件存储表定义、数据文件的扩展名:.MYD(MYData)、索引文件的扩展名:MYI(MYIndex) 】
InnoDB特点介绍
1)支持事务,支持四个事务隔离级别。
2)行级锁定,但是全表扫描仍然会是表级锁定。
3)读写阻塞与事务隔离级别相关。
4)具有非常高效的缓存特性,能缓存索引,也能缓存数据。
5)表与主键以簇的方式存储。
6)支持分区、表空间,类似Oracle数据库。
7)支持外键约束。 Mysql5.5以前版本不支持全文索引,5.5版本以后支持。
8)适合对硬件资源要求比较高的场合。
MyISAM与InnoDB的区别
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
查看数据库可配置的存储引擎类型
> show engines;
查看正在使用的存储引擎
> show table status from school where name=‘info‘;
或
> use school;
> show create table info;
1)命令修改
> use 库; //进入数据库
> alter table 表 engine=MyISAM; //修改存储引擎为MyISAM
> alter table 表 engine=InnoDB;
修改默认指定引擎 仅对新建的表有效!
# vim /etc/my.cnf
...
[mysqld]
default--storage-engine=MyISAM //添加 或者=InnoDB
3)创建表时直接指定
> use 库;
> create table 表名(id int)engine=InnoDB;
> create table 表名(id int)engine=MyISAM;
> show create table 表; 查看
mysql 5.5版本
# yum -y install perl-DBI
# yum -y install perl-DBD-MySQL //安装perl对mysql的操作模版
# mysql_convert_table_format --host=localhost --user=root --password=123456 --socket=/tmp/mysql.sock --engine=MyISAM 库名 表名1 表名2
========查找socket的位置 ====
# yum install -y lsof
# lsof | grep mysql | grep sock
=========================
但是改成InnoDB 会报错需要修改下面配置文件
# vim /usr/local/mysql/bin/mysql_convert_table_format
"e|engine|type=s" => \$opt_engine, //32行修改为engine,
然后执行修改的命令
# mysql_convert_table_format --host=localhost --user=root --password=123456 --socket=/tmp/mysql.sock --engine=InnoDB 库名 表名1 表名2
原文:http://blog.51cto.com/13630803/2136262