• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2019-10-28 16:41 Aet 隐藏边栏 |   抢沙发  3 
文章评分 2 次,平均分 5.0

概述

  1. MySQL支持多种存储引擎,每种存储引擎都有其特定的功能和适用场景

InnoDB

概述

  1. InnoDB表空间tablespace被用于存储表的内容
  2. 提供一组用来记录事务性活动的日志文件
  3. commitsavepoint,以及rollback支持事务处理
  4. 提供全部ACID兼容
  5. mysql服务器崩溃后提供自动恢复
  6. 多版本(MVCC)和行级锁定
  7. 支持外键和引用的完整性,包括级联更新和删除

特点

  1. 支持事务:InnoDB支持ACID事务,具有提交、回滚和崩溃恢复能力
  2. 外键支持:InnoDB支持外键约束,能够维护参照完整性
  3. 行级锁定:InnoDB使用行级锁定,提高并发性和性能
  4. 聚簇索引:数据按主键顺序存储,主键索引是聚簇索引

场景

  1. 需要事务支持的应用
  2. 高并发读写操作
  3. 需要外键约束的应用

MyISAM

概述

  1. mysql数据库最常用的存储引擎
  2. 可转换压缩只读表来节省空间
  3. 它使用三个文件表示每个表:
    1. 格式文件-存储表的结构(mytable.frm
    2. 数据文件-存储表的数据(mytable.MYD
    3. 索引文件-存储表的索引(mytable.MYI

特点

  1. 不支持事务:MyISAM不支持事务
  2. 表级锁定:MyISAM使用表级锁定,写操作会锁定整个表
  3. 速度快:在读操作多于写操作的场景下,MyISAM性能较高
  4. 全文索引:MyISAM支持全文索引,可以用于全文搜索

场景

  1. 读操作多于写操作的应用
  2. 需要全文搜索的应用

Memory

概述

  1. 以前被称为HEAP引擎
  2. 使用MEMORY存储引擎的表,因为数据存储在存储中,且行的长度固定,所以MEMORY存储引擎非常快
  3. 使用MEMORY存储引擎的表的特征:
    1. 在数据库目录中,每个表均以.frm格式文件表示
    2. 表数据及索引被存储在内存中
    3. 表级锁机制
    4. 字段属性不能包含TEXTBLOG字段

特点

  1. 数据存储在内存中:Memory存储引擎将数据存储在内存中,读写速度非常快
  2. 不持久化:服务器重启后,数据会丢失
  3. 表级锁定:Memory使用表级锁定

场景

  1. 临时数据存储
  2. 需要快速访问的数据

CSV

特点

  1. 数据存储在CSV文件中:每个表对应一个CSV文件
  2. 易于导入导出:适合将数据导入导出到其他系统
  3. 不支持索引和事务:CSV存储引擎不支持索引和事务

场景

  1. 数据交换和导入导出
  2. 需要简单存储格式的数据

Archive

特点

  1. 主要用于存档:Archive存储引擎适合存储大批量的插入和极少量的查询操作
  2. 高压缩比:数据存储时会进行压缩
  3. 只支持INSERTSELECT:不支持DELETEUPDATE操作

场景

  1. 数据归档和日志存储
  2. 需要高压缩比的历史数据存储

Federated

特点

  1. 访问远程表:Federated存储引擎允许访问远程MySQL服务器上的表
  2. 无数据存储:本地服务器不存储数据,所有数据都存储在远程服务器上

场景

  1. 需要访问和操作远程MySQL服务器上的表

NDB (Clustered)

特点

  1. 分布式数据库:NDB存储引擎用于MySQL Cluster,支持分布式数据库架构
  2. 高可用性:支持高可用性和自动故障转移
  3. 高并发:支持高并发读写操作

场景

  1. 需要高可用性和高并发的分布式应用

操作

默认引擎

  1. 默认的存储引擎可以在my.ini配置文件中使用default-storage-engin选项指定
  2. 可以通过alter table 表名 engine = 存储引擎名称;修改表的存储引擎

查看表的引擎

问题

  1. 可以对每一个表指定特定的引擎吗?
    1. MySQL中,您可以为每一个表指定特定的存储引擎
    2. 这使得您可以根据不同表的需求选择最合适的存储引擎,以优化性能和功能

总结

  1. InnoDB:
    1. 适合需要事务支持、高并发和外键约束的应用
  2. MyISAM:
    1. 适合读操作多于写操作、需要全文搜索的应用
  3. Memory:
    1. 适合临时数据存储、需要快速访问的数据
  4. CSV:
    1. 适合数据交换和导入导出
  5. Archive:
    1. 适合数据归档和日志存储
  6. Federated:
    1. 适合访问和操作远程MySQL服务器上的表
  7. NDB:
    1. 适合需要高可用性和高并发的分布式应用

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2024-06-26
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享