MySQL存储引擎

一、查看mysql存储引擎:

show engines;

二、查看mysql默认存储引擎:

show variables like ‘storage_engine%’;

Mysql默认存储引擎 innoDB


三、innoDB引擎:

1、特点:

(1)支持自动增长列:AUTO_INCREMENT, 自动增长列的值不能为空,必须唯一。mysql中规定自动增长列必须为主键。

(2)支持外键(FOREIGN— KEY)外键所在的表为字表,外键所依赖的表为父表,父表关联外键子段必须为子表主键。

(3)在innoDB存储引擎中,

        创建表的结构存储在.frm文件中;

        数据存储在innodb_data_home_dir表空间中;

        索引存储在和innodb_file_path表空间中。

2、总结:

        可提供高效的ACID独立性,一致性,隔性,持久性。兼容事务处理能力以及独特的高性能和具有扩展性的构架要素。

优势(提供了良好的事务管理、崩溃修复能力和并发控制)

缺点(读写效率较差,占用数据空间相对较大)

3、适用情况:

(1)更新密集的表,处理多重并发的更新请求

(2)事务,唯一支持事务的标准mysql存储引擎

(3)自动灾难恢复


四、MyISAM存储引擎

        MyISAM是基于ISAM存储引擎发展的 ‘管理非事务表’;MyISAM 还使用一种表格锁定的机制、来优化多个并发的读写操作;MyISAM 提供高速存储和检索、以及全文搜索能力。

1、MyISAM存储引擎创建的表存储成三个文件。表名与文件名相同,后缀如下:

        frm:存储表的结构

        MYD:存储数据,是MYDATA的缩写

        MYI:存储索引,是MYINDEX的缩写

2、存储格式:三种不同的存储格式

(1)静态型

如果所有表的列的大小都是静态的(不使用xblob、xtext、varchar)就会使用静态型。性能非常高。存储数据时开销很低。但是需要创建每列的最大表空间,无论是否使用。

(2)动态型

如果有一列或多列定义为动态的。就会使用动态格式。占用表空间比静态格式少;但性能会下降,如果某个字段内容发生改变,其位置很可能发生移动,产生碎片—>降低数据访问性能。

(修复办法)

a、尽可能使用静态数据类型

b、经常使用optimize table语句;会整理表的碎片,恢复由于更新,删除导致的空间丢失。

(3)压缩型

创建在整个应用程序生命周期都只读的表,可以使用myusampack工具将其压缩为MyISAM压缩表减少表空间。性能会提升。

3、总结:

优势(占用空间小,处理速度快)

缺点(不支持事务的完整性和并发性)


五、MEMORY存储引擎

        mysql中特殊的存储引擎。其使用存储在内存中的内容来创建表,而且所有数据都放在内存中。

1、文件存储形式

        每个表实际对应一个磁盘文件。该文件名与表名形同,类型为frm。该文件之存储表的结构。

        其数据文件都是存储在内存中。有利于对数据的快速处理,提高整个表的处理效率。服务器需要足够的内存来维持MEMORY存储引擎的表的使用。如果不需要使用,可以释放,或删除不需要的表。

2、索引类型

        默认使用哈希索引,其速度比使用B树索引更快。如果需要使用B树索引,可以在创建索引时选择使用。

3、存储周期

很少用到,内存关乎性命,周期很短且都是一次性的。

4、总结 :处理速率快,但是易丢失

(1)大小受限于:max_rows和max_heap_table_size,第一个参数可以子啊创建表时指定;第二个参数默认大小是16mb可以按需进行扩大。

(2)当mysqld守护进程崩溃时,所有数据丢失。

(3)不支持varchar,blob和text类型数据。因为这种表类型安固定长度的记录格式存储。

(4)4.1.0之前不支持自动增加列(auto_increment属性)

你可能感兴趣的:(MySQL存储引擎)