本文主要是介绍mysql存储引擎,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
存储引擎
存储引擎(表类型)
-
详情请看官方介绍
https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html
-
查看所有存储引擎
show engines;
SELECT * FROM INFORMATION_SCHEMA.ENGINES;
-- 查看数据库(tiger_db)中存在表的储存引擎
show table status from `tiger_db`;
-
插件式的存储引擎,修改存储引擎
ALTER TABLE t ENGINE = InnoDB;
-
查看数据存放路径
-- C:\ProgramData\MySQL\MySQL Server 5.7\Data
show variables like 'datadir';
-
…
InnoDB
- 5.7版本之后默认的存储引擎,支持行级事物,回滚
- 支持事务,支持外键,因此数据的完整性、一致性更高
- 支持行级别的锁和表级别的锁
- 支持读写并发,写不阻塞读(MVCC)
- 特殊的索引存放方式,可以减少 IO,提升查询效率
- 适合:经常更新的表,存在并发读写或者有事务处理的业务系统
- 数据文件尾缀 .frm 和 .ibd 两个
- 数据和索引文件放在一个文件中
MyISAM(3个文件)
表级锁定限制了读/写的性能,因此在 Web 和数据仓库配置中,它通常用于只读或以读为主的工作,例如数据分析的项目
- 支持表级别的锁(插入和更新会锁表),不支持事务
- 拥有较高的插入(insert)和查询(select)速度
- 存储了表的行数(count 速度更快)
- 数据文件尾缀 .frm 和 .MYD 和 .MYI 三个
- 数据和索引文件分开存放
存储引擎选择
- 如果对数据一致性要求比较高,需要事务支持,可以选择 InnoDB
- 如果数据查询多更新少,对查询性能要求比较高,可以选择 MyISAM。,例如省市区表,字典表
- 如果需要一个用于查询的临时表,可以选择 Memory
- 如果所有的存储引擎都不能满足你的需求,并且技术能力足够,可以根据官网内部
- 手册用 C 语言开发一个存储引擎:【https://dev.mysql.com/doc/internals/en/custom-engine.html】
这篇关于mysql存储引擎的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!