MySQL快速入门07----存储引擎

来源:互联网 发布:如何看待知乎live 编辑:程序博客网 时间:2024/06/09 21:08


存储引擎:也叫表类型,指的是数据表的存储机制,索引方案等配套相关功能。不同的引擎,由于处理方式不同,会带来不同的功能或者相应优化,根据实际需求选择合理的引擎。

选择表的存储引擎的标准

  • 是否需要事务支持;
  • 是否支持外键;
  • 并发量的要求;
  • 错误恢复的处理;
  • 是否支持某些具体功能;

配置方案:


通过my.ini,可以配置:
default-storage-engine=INNODB

在创建表,或者编辑表时,可以指定表的存储引擎。

更改表引擎:
mysql> alter table pk_1 engine myisam;Query OK, 2 rows affected (0.13 sec)Records: 2  Duplicates: 0  Warnings: 0

对于既有外键的表无法更改其引擎,只能用InnoDB引擎:
mysql> alter table lin_student engine myisam;ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails


创建表时指定表引擎:
mysql> create table room(    -> id int primary key auto_increment,    -> sz varchar(20)    -> )engine myisam character set utf8;Query OK, 0 rows affected (0.05 sec)


InnoDB和myisam


区别:

(1)保存文件的方式不同:
myisam,一个表,三个文件:
tbl_name.frm 结构;
tbl_name.myd 数据;
tbl_name_myi 索引。


InnoDB一个表一个文件
一个结构文件tbl_name.frm
所有的innodb表,都使用相同的innodb存储表空间来保存数据和索引。

(2)
数据和索引的保存的文件不同:MyISAM是分开保存,而innodb是保存到表空间
MyIASM支持索引压缩,而Innodb索引和数据是绑定保存不压缩,体积大。
Innodb很多时候是行级锁,而myisam是表级锁,innodb的并发高。
InnoDB不支持FULLTEXT类型的索引(新版本的InnoDB也支持)。
Innodb支持事务,外键,数据完整性约束要强。而MYISAM不支持。

InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。


通过show engines来查看MySQL的存储引擎:
mysql> show engines;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       || MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         || MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         || BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         || CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         || MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         || ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         || InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        || PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+



0 0
原创粉丝点击