暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL体系结构和存储引擎

原创 谭磊Terry 恩墨学院 2022-06-29
279

数据库和实例定义

  • 数据库:物理操作系统文件或者其他形式文件类型的结合。在MYSQL数据库中,数据库文件可以是frm、MYD、MYI、ibd结尾的文件。

  • 实例:MYSQL数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。需要牢记的是,数据库实例才是真正用于操作数据库文件的。

MYSQL被设计为一个单进程多线程架构的数据库。
 

MYSQL体系结构

MYSQL体系结构由Client Connectors层MySQL Server 层存储引擎层组成。

  • Client Connectors层
  • MySQL Server 层
    • 连接池组件
    • 管理服务和工具组件
    • SQL接口组件
    • Parser查询分析器组件
    • Optimzer优化器组件
    • Caches缓冲组件
  • 存储引擎层
    • 插件式储存引擎
    • 物理文件:二进制文件、数据文件、错误日志、慢查询日志、全日制、redo/undo 日志等

需要特别注意的是:存储引擎是基于表的,而不是数据库。

 

存储引擎

MyISAM与InnoDB存储引擎区别

  • 事务支持
    • MyISAM 强调的是性能,每次查询具有原子性,其执行数度比 InnoDB 类型更快,但是不提供事务支持。
    • InnoDB 提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全 (transaction-safe (ACID compliant))型表。
  • InnoDB 支持行级锁,而 MyISAM 支持表级锁用户在操作 myisam 表时,select,update,delete,insert 语句都会给表自动加锁,如果加锁以后的表满足 insert 并发的情况下,可以在表的尾部插入新的数据。
  • InnoDB 支持 MVCC, 而 MyISAM 不支持
  • InnoDB 支持外键,而 MyISAM 不支持
  • 表主键
    • MyISAM 允许没有任何索引和主键的表存在,索引都是保存行的地址。
    • InnoDB 如果没有设定主键或者非空唯一索引,就会自动生成一个 6 字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。
  • InnoDB 不支持全文索引,而 MyISAM 支持
  • 可移植性、备份及恢复
    • MyISAM 数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。
    • InnoDB 免费的方案可以是拷贝数据文件、备份binlog,或者用 mysqldump,在数据量达到几十 G 的时候就相对痛苦了
  • 存储结构
    • MyISAM 每个 MyISAM 在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm 文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
    • InnoDB 所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB。

InnoDB引擎的4大特性

  • 插入缓冲(insert buffer)
  • 二次写(double write)
  • 自适应哈希索引(ahi)
  • 预读(read ahead)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论