一、查看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属性)