常用MySQL存储引擎

一概述
存储引擎,即表类型(table_type)
用户可以根据应用的需求选择如何来存储数据、索引、是否使用事务等。选择合适的存储引擎往往能够有效的提高数据库的性能和数据的访问效率,另外一个数据库中的多个表可以使用不同引擎的组合以满足各种性能和实际需求。
MySQL支持很多存储引擎,包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE等,其中InnoDB和BDB支持事务安全。

查看当前表使用的存储引擎(或者通过右键--object information)
show create table sys_user;

查看当前数据库支持的存储引擎
show engines;

CREATE TABLE `sys_user` (
  `user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `dept_id` bigint DEFAULT NULL COMMENT '部门ID',
  `user_name` varchar(30) NOT NULL COMMENT '用户账号',
  `nick_name` varchar(30) NOT NULL COMMENT '用户昵称',
  `user_type` varchar(2) DEFAULT '00' COMMENT '用户类型(00系统用户)',
  `email` varchar(50) DEFAULT '' COMMENT '用户邮箱',
  `phonenumber` varchar(11) DEFAULT '' COMMENT '手机号码',
  `sex` char(1) DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
  `avatar` varchar(100) DEFAULT '' COMMENT '头像地址',
  `password` varchar(100) DEFAULT '' COMMENT '密码',
  `status` char(1) DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
  `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  `login_ip` varchar(50) DEFAULT '' COMMENT '最后登陆IP',
  `login_date` datetime DEFAULT NULL COMMENT '最后登陆时间',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=105 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户信息表'


常用的存储引擎和各自的优缺点以及应用场景
1. MyISAM
它是MySQL5.5之前的默认存储引擎
优势:访问速度快
适用场景:对事务的完整性没有要求,或以select、insert为主的应用基本都可以选用MYISAM。在Web、数据仓库中应用广泛。
特点:
1、不支持事务、外键
2、每个myisam在磁盘上存储为3个文件,文件名和表名相同,扩展名分别是
.frm    -------存储表定义
.MYD   --------MYData,存储数据
.MYI    --------MYIndex,存储索引
数据文件和索引文件可以放在不同的目录,平均分布IO,加快访问速度,在创建表的时候通过 data directory和index directory来指定存储路径;

2. InnoDB
MySQL5.5之后的默认存储引擎
应用场景:如果应用对事务的完整性有较高的要求,在并发条件下要求数据的一致性,数据操作中包含增删改查,那么可以选择InnoDB;
优点:提供了具有提交(Commit)、回滚(Rollback)、崩溃恢复能力的事务安全机制,支持外键.
缺点:相比较于MyISAM,写的处理效率差一点,并且会占用更多的磁盘空间来存储数据和索引.

3. MEMORY
MEMORY存储引擎是用保存在内存中的数据来创建表,每个memory表对应一个磁盘文件。格式是.frm
特点:由于他的数据是存放在内存中的,并且默认使用HASH索引,所以它的访问速度特别快,同时也造成了他的缺点,就是数据库服务一旦关闭,数据就会丢失,另外对表的大小有限制。

数据库表结构设计心得:应该把不容易改动表结构的设计成横表,把容易经常改动不确定的表结构设计成纵表。

你可能感兴趣的:(mysql)