MySQL数据库(九)_存储引擎

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

MySQL架构

在这里插入图片描述

存储引擎

在这里插入图片描述

官方文档:存储引擎比较

存储引擎

MyISAM存储引擎

  1. MyISAM引擎特点

    • 不支持事务
    • 表级锁定
    • 读写相互阻塞,写入不能读,读时不能写
    • 只缓存索引
    • 不支持外键约束
    • 不支持聚簇索引
    • 读取数据较快,占用资源较少
    • 不支持MVCC(多版本并发控制机制)高并发
    • 崩溃恢复性较差
    • MySQL5.5.5前默认的数据库引擎
  2. MyISAM存储引擎适用场景

    • 只读(或者写较少)、表较小(可以接受长时间进行修复操作)
  3. MyISAM引擎文件

    • tbl_name.frm 表格式定义
    • tbl_name.MYD 数据文件
    • tbl_name.MYI 索引文件

InnoDB存储引擎

  1. InnoDB引擎特点

    • 行级锁
    • 支持事务,适合处理大量短期事务
    • 读写阻塞与事务隔离级别相关
    • 可缓存数据和索引
    • 支持聚簇索引
    • 崩溃恢复性更好
    • 支持MVCC高并发
    • 从MySQL5.5后支持全文索引
    • 从MySQL5.5.5开始为默认的数据库引擎
  2. InnoDB数据库文件

    • 所有InnoDB表的数据和索引放置于同一个表空间中
      表空间文件:datadir定义的目录下
      数据文件:ibddata1, ibddata2, …
    • 每个表单独使用一个表空间存储表的数据和索引
      启用:innodb_file_per_table=ON (>= MariaDB 5.5)
      参考:官方文档
      两类文件放在数据库独立目录中
      数据文件(存储数据和索引):tb_name.ibd
      表格式定义:tb_name.frm

其它存储引擎

  1. Performance_Schema:Performance_Schema数据库使用
  2. Memory :将所有数据存储在RAM中,以便在需要快速查找参考和其他类似数据的环境中进行快速访问。适用存放临时数据。引擎以前被称为HEAP引擎
  3. MRG_MyISAM:使MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于VLDB(Very Large Data Base)环境,如数据仓库
  4. Archive :为存储和检索大量很少参考的存档或安全审核信息,只支持SELECT和INSERT操作;支持行级锁和专用缓存区
  5. Federated联合:用于访问其它远程MySQL服务器一个代理,它通过创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取,提供链接单独MySQL服务器的能力,以便从多个物理服务器创建一个逻辑数据库。非常适合分布式或数据集市环境
  6. BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性
  7. Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性
  8. CSV:CSV存储引擎使用逗号分隔值格式将数据存储在文本文件中。可以使用CSV引擎以CSV格式导入和导出其他软件和应用程序之间的数据交换
  9. BLACKHOLE :黑洞存储引擎接受但不存储数据,检索总是返回一个空集。该功能可用于分布式数据库设计,数据自动复制,但不是本地存储
  10. MariaDB支持的其它存储引擎:
    OQGraph、SphinxSE、TokuDB、Cassandra、CONNECT、SQUENCE

管理存储引擎

  1. 查看mysql支持的存储引擎
MariaDB [mysql]> show engines;
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                          | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
| CSV                | YES     | Stores tables as CSV files                                                       | NO           | NO   | NO         |
| MRG_MyISAM         | YES     | Collection of identical MyISAM tables                                            | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)                   | NO           | NO   | NO         |
| MyISAM             | YES     | Non-transactional engine with good performance and small data footprint          | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                               | NO           | NO   | NO         |
| ARCHIVE            | YES     | gzip-compresses tables for a low storage footprint                               | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                        | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES          | YES  | YES        |
| Aria               | YES     | Crash-safe tables with MyISAM heritage                                           | NO           | NO   | NO         |
| SEQUENCE           | YES     | Generated tables filled with sequential values                                   | YES          | NO   | YES        |
+--------------------+---------+----------------------------------------------------------------------------------+--------------+------+------------+
  1. 查看当前默认的存储引擎
MariaDB [mysql]> show variables like 'storage%';
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| storage_engine | InnoDB |
+----------------+--------+
  1. 设置默认的存储引擎
vim /etc/my.conf
    [mysqld]
    default_storage_engine= InnoDB
  1. 查看库中所有表使用的存储引擎
show table status from db_name;
  1. 查看库中指定表的存储引擎
show table status like ' tb_name ';
show create table tb_name;
  1. 设置表的存储引擎:
CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;

MySQL中的系统数据库

  1. mysql数据库

是mysql的核心数据库,类似于Sql Server中的master库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息

  1. performance_schema数据库

MySQL 5.5开始新增的数据库,主要用于收集数据库服务器性能参数,库里表的存储引擎均为PERFORMANCE_SCHEMA,用户不能创建存储引擎为PERFORMANCE_SCHEMA的表

  1. information_schema数据库

MySQL 5.0之后产生的,一个虚拟数据库,物理上并不存在information_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据。比如数据库名或表名,列类型,访问权限(更加细化的访问方式)

扫描二维码关注公众号,回复: 6785094 查看本文章

其它章节
MySQL数据库(一)_基础概念
MySQL数据库(二)_SQL基础与数据类型
MySQL数据库(三)_SQL语句之DDL
MySQL数据库(四)_SQL语句之DML
MySQL数据库(五)_SQL语句之DQL
MySQL数据库(六)_SQL语句之JOIN
MySQL数据库(七)_视图、函数、储存过程及触发器
MySQL数据库(八)_用户管理
MySQL数据库(九)_存储引擎
MySQL数据库(十)_服务器配置
MySQL数据库(十一)_查询缓存
MySQL数据库(十二)_索引
MySQL数据库(十三)_事务与锁

猜你喜欢

转载自blog.csdn.net/weixin_42758707/article/details/95064948