美文网首页
mysql-存储引擎

mysql-存储引擎

作者: ssttIsme | 来源:发表于2023-05-08 16:31 被阅读0次

    存储引擎是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。

    show crate table 表名;
    

    ENGINE=就是引擎名

    root@localhost:bank>show create table bank;
    +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                                                                                                                       |
    +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | bank  | CREATE TABLE `bank` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) DEFAULT NULL,
      `address` varchar(200) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
    +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    查看当前数据库支持的存储引擎

    SHOW ENGINES;
    
    root@localhost:bank>show engines;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
    | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
    | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
    | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
    | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)
    

    Engine代表有哪些存储引擎、Support是否支持、Comment是注释、XA协议与Savepoints保存点与事务相关

    InnoDB

    介绍

    InnoDB是一种兼顾高可靠性和高性能的存储引擎,在MySQL 5.5之后,InnoDB是默认的MySQL存储引擎。

    特点-事务、外键、行级锁

    DML操作遵循ACID模型,支持事务
    行级锁,提高并发访问性能;
    支持外键ROREIGN KEY约束,保证数据的完整性和正确性。

    文件

    xxx.ibd:xxx代表的是表名,innodDB引擎的每张表都会对应一个表空间文件,存储该表的结构(frm,sdi(8.0后))、数据、索引。

    root@localhost:bank>show variables like 'innodb_file_per_table';
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | innodb_file_per_table | OFF   |
    +-----------------------+-------+           
    

    存储引擎特点

    逻辑存储结构【>表示包含】:表空间Table>段Segment>Extent区>Page页>Row行

    • 页是磁盘操作的最小单元
    • 一个区的大小是固定是1M
    • 一个页的大小固定是16K
    • 一个区可以包含64个页

    MyISAM

    介绍

    MyISAM是MySQL早期默认的存储引擎

    特点-不支持事务、外键、表锁、访问速度快

    不支持事务、不支持外键
    支持标锁,不支持行锁
    访问速度快

    文件

    sdi存储表结构、MYD存储数据、MYI存储索引

    Memory

    介绍

    Memory引擎的表数据存储在内存中,由于受到硬件问题、断电问题的影响,只能将这些表作为临时表或者缓存使用。

    特点-内存存放访问速度快、哈希索引

    内存存放
    hash索引(默认)
    表锁
    不支持外键

    文件

    只有sdi存储表结构信息(数据都是存在内存中)

    存储引擎特点

    特点 InnoDB MyISAM Memory
    存储限制 64TB
    事务安全 支持 - -
    锁机制 行锁 表锁 表锁
    支持外键 支持 - -
    B+tree索引 支持 支持 支持
    Hash索引 - - 支持
    全文索引 5.6版本后支持 支持 -
    磁盘空间使用 -
    内存使用 中等
    批量插入速度

    相关文章

      网友评论

          本文标题:mysql-存储引擎

          本文链接:https://www.haomeiwen.com/subject/scslsdtx.html