提示:InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5 之后,InnoDB 作为默认存储引擎。
MyISAM 是基于 ISAM 的存储引擎,并对其进行扩展,是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM 拥有较高的插入、查询速度,但不支持事务。
存储引擎能够根据具体的应用建立不同存储引擎表。
1 #存储引擎种类 2 InnoDB 3 MyISAM 4 MEMORY 5 ARCHIVE 6 FEDERATED 7 EXAMPLE 8 BLACKHOLE 9 MERGE 10 NDBCLUSTER 11 CSV
其他分支
percona : XtraDB MariaDB : InnoDB 其他的引擎: TokuDB , MyRocks Compression: 25x for high compression Fast Insertions and Deletions 适合于,业务当中有大量插入或者删除操做的场景。 应用于,数据量较大的业务。
MylSAM | MEMORY | InnoDB | Archive | |
---|---|---|---|---|
存储限制 | 256TB | RAM | 64TB | None |
支持事务 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持树索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes |
-
-
支持全文索引
-
支持 非锁定读,即默认读取操作不会产生锁
-
高并发,高性能,高可用,高可拓展
-
采用了聚集的方式,每张表都是按主键
-
-
支持全文索引
-
缓冲池只缓冲索引文件,不缓冲数据文件
-
存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI
-
-
数据全部存放在内存中,可以将非索引数据存放在磁盘上
-
主键查找快
-
不适合连接操作
-
-
默认使用哈希索引
-
只支持表锁,并发性能差
-
varchar类型是按照定常字段(char)的方式存储,会
select @@default_storage_engine; +--------------------------+ | @@default_storage_engine | +--------------------------+ | InnoDB | +--------------------------+ 1 row in set (0.00 sec)
注:不代表生产操作
select @@default_storage_engine; +--------------------------+ | @@default_storage_engine | +--------------------------+ | InnoDB | +--------------------------+ 1 row in set (0.00 sec)
set global default_storage_engine=myisam; Query OK, 0 rows affected (0.00 sec) #查看存储引擎 select @@default_storage_engine; +--------------------------+ | @@default_storage_engine | +--------------------------+ | MyISAM | +--------------------------+ 1 row in set (0.00 sec)
重启之后,所有参数均失效
vim /etc/my.conf [mysqld] default_storage_engine=myisam
注:存储引擎是表级别的,每个表创建时可以指定不同的存储引擎,但是我们建议统一为innodb.
create table xx (id int) engine=myisam; create table x (id int); SHOW CREATE TABLE x\G; SHOW TABLE STATUS LIKE 'xx'\G
select table_schema,table_name ,engine from information_schema.tables where table_schema not in ('sys','mysql','information_schema','performance_schema');
alter table x engine=innodb; Query OK, 0 rows affected (0.18 sec) Records: 0 Duplicates: 0 Warnings: 0
注:此命令我们经常使用他,进行innodb表的碎片整理
问题:磁盘空间占用很大,不释放
处理方法:以前:将数据逻辑导出,手工drop表,然后导入进去
现在:
来源:https://www.cnblogs.com/Mercury-linux/p/12346212.html