- 存储引擎介绍 Mysql中的数据用各种不同的技术存储在文件(或内存)中。这些技术中的每一个种技术都是用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。这些不同的技术以及配套的相关功能在Mysql中被称为存储引擎。最知名的存储引擎为 MyISAM 和 InnoDB。
- 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;
-
2)修改配置文件my.cnf
-
修改默认指定引擎 仅对新建的表有效!
# 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 表; 查看
-
4)批量修改引擎
-
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