mysql历史上最主要的存储引擎类型是MyISAM和InnoDB,mysql5.5之前的版本默认存储引擎类型是MyISAM,5.5之后改为InnoDB。
mysql常用基本命令
mysql -hlocalhost -uroot -p123456 -- 登录mysql客户端
select version(); -- 查看mysql版本号
select variables like '%default_storage_engine%'; -- 查看mysql默认存储引擎
show engines; -- 查看当前支持哪些存储引擎
alter table ai engine = innodb; -- 修改表的存储引擎
start transaction; -- 开始事务
commit; -- 提交事务
rollback; -- 回滚事务
MyISAM与InnoDB区别
特点 | MyISAM | InnoDB |
---|---|---|
锁机制 | 表锁 | 行锁 |
事务安全 | 支持 | |
外键 | 支持 | |
表总行数计数 | 支持 |
MyISAM不支持事务、也不支持外键,其优势是访问速度快,对于事务完整性没有要求或者以select, insert为主的应用基本上都可以使用这个引擎创建表。
某方面,意味着业务代码中写事务时,不要涉及到MyISAM引擎的表,否则会带来错误结果。
InnoDB提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM类型的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。
其实,对于外键这一块,实际互联网应用中也不建议使用外键和级联。阿里巴巴的数据库使用规范中,有相关的说明如下:
6.【强制】不得使用外键与级联,一切外键概念必须在应用层解决。
说明:(概念解释)学生表中的 student_id是主键,那么成绩表中的 student_id则为外键。如果更新学生表中的 student_id,同时触发成绩表中的 student_id更新,则为级联更新。外键与级联更新适用于单机低并发,不适合分布式、高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。