MySql教程

mysql存储引擎

本文主要是介绍mysql存储引擎,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

存储引擎

存储引擎(表类型)

  1. 详情请看官方介绍

    https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html
    
  2. 查看所有存储引擎

    show engines;
    SELECT * FROM INFORMATION_SCHEMA.ENGINES;
    -- 查看数据库(tiger_db)中存在表的储存引擎
    show table status from `tiger_db`;
    
  3. 插件式的存储引擎,修改存储引擎

    ALTER TABLE t ENGINE = InnoDB;
    
  4. 查看数据存放路径

    -- C:\ProgramData\MySQL\MySQL Server 5.7\Data
    show variables like 'datadir';
    

InnoDB

  1. 5.7版本之后默认的存储引擎,支持行级事物,回滚
  2. 支持事务,支持外键,因此数据的完整性、一致性更高
  3. 支持行级别的锁和表级别的锁
  4. 支持读写并发,写不阻塞读(MVCC)
  5. 特殊的索引存放方式,可以减少 IO,提升查询效率
  6. 适合:经常更新的表,存在并发读写或者有事务处理的业务系统
  7. 数据文件尾缀 .frm 和 .ibd 两个
  8. 数据和索引文件放在一个文件中

MyISAM(3个文件)

表级锁定限制了读/写的性能,因此在 Web 和数据仓库配置中,它通常用于只读或以读为主的工作,例如数据分析的项目

  1. 支持表级别的锁(插入和更新会锁表),不支持事务
  2. 拥有较高的插入(insert)和查询(select)速度
  3. 存储了表的行数(count 速度更快)
  4. 数据文件尾缀 .frm 和 .MYD 和 .MYI 三个
  5. 数据和索引文件分开存放

存储引擎选择

  1. 如果对数据一致性要求比较高,需要事务支持,可以选择 InnoDB
  2. 如果数据查询多更新少,对查询性能要求比较高,可以选择 MyISAM。,例如省市区表,字典表
  3. 如果需要一个用于查询的临时表,可以选择 Memory
  4. 如果所有的存储引擎都不能满足你的需求,并且技术能力足够,可以根据官网内部
  5. 手册用 C 语言开发一个存储引擎:【https://dev.mysql.com/doc/internals/en/custom-engine.html】
这篇关于mysql存储引擎的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!