【MySQL入门】-- 认识MySQL存储引擎

目录

1.MySQL存储引擎有什么用?

2.MySQL的存储引擎有哪些?分别有什么特点?

3.存储引擎的优缺点

4.关于存储引擎的操作

5. 存储引擎的选择?

6.InnoDB和MyISAM区别?

7.官方文档


1.MySQL存储引擎有什么用?

MySQL之所以使用存储引擎,是因为存储引擎提供了不同的数据管理和存储方式,可以根据应用的需求选择合适的存储引擎来优化数据库的性能、一致性、安全性和可靠性。下面是一些具体的原因:

  1. 性能优化:不同的存储引擎对于不同类型的查询和操作有着各自的优势。选择合适的存储引擎可以根据应用需求提高数据库的查询速度、写入性能以及并发处理能力。

  2. 事务支持:一些存储引擎(如InnoDB)支持事务处理,可以确保数据的一致性和完整性。通过使用事务,可以将一系列操作当作一个逻辑单元进行提交或回滚,保证数据的正确性。

  3. 数据一致性与安全性:一些存储引擎实现了ACID(原子性、一致性、隔离性、持久性)特性,确保数据的一致性和安全性。通过将相关操作组合成事务,可以保证数据在多个并发访问下的完整性。

  4. 存储空间优化:不同的存储引擎采用不同的数据压缩和存储结构,可以节省存储空间。某些存储引擎支持数据的压缩,可以大幅度减小数据库占用的磁盘空间。

  5. 数据备份与恢复:一些存储引擎提供了在线备份和恢复机制,可以在备份数据的同时保持数据库的正常运行。这样可以降低备份对业务操作的影响,并提高数据库的可用性。

总之,使用存储引擎可以根据应用需求选择最合适的方式来组织和管理数据,从而提高数据库的性能、一致性、安全性和可靠性。不同的存储引擎具有不同的特点和功能,使用合适的存储引擎可以充分发挥MySQL的优势,提供更好的数据库解决方案。

2.MySQL的存储引擎有哪些?分别有什么特点?

MySQL存储引擎可以理解为数据库内部的一种组织和管理数据的方式,就好像是把书存放在书架上的不同方式一样。下面我用通俗易懂的话来介绍几种常见的MySQL存储引擎:

  1. MyISAM引擎:类似于传统的卡片盒,他把数据存储在独立的文件中,适合于读取频繁的场景。但是它不支持事务和并发操作,所以对于写入、修改和同时多个人访问的场景就不太适用了。

  2. InnoDB引擎:类似于图书馆的书架,它更适合处理复杂的数据库操作。它支持事务和并发操作,所以在高并发的环境下能够更好地保证数据的一致性和安全性。

  3. Memory引擎:就像是临时存储空间,数据保存在内存中,读写速度非常快。但是一旦重启数据库,数据就会丢失,所以适用于临时缓存和需要快速访问的数据。

  4. Archive引擎:像是把文件压缩成ZIP格式,这个引擎适用于数据归档和历史数据存储,可以大幅度减小磁盘空间的占用。

  5. CSV引擎:类似于Excel表格,数据以逗号分隔存储在文件中,适用于导入和导出数据。

每种存储引擎都有自己的特点和适用场景,选择合适的存储引擎可以提高数据库的性能和效率。当然,根据实际需求,也可以在同一个数据库中使用不同的存储引擎来处理不同类型的数据。

特点:

特点 InnoDB MyISAM Memory
存储限制 64TB
事务安全 支持 × ×
锁机制 行锁 表锁 表锁
B+tree索引 支持 支持 支持
Hash索引 × × 支持
全文索引 支持 支持 ×
空间使用 N/A
内存使用 中等
批量插入速度
支持外键 支持 × ×

3.存储引擎的优缺点

MySQL提供了多种存储引擎,每个存储引擎都有其独特的优点和缺点。以下是一些常见的MySQL存储引擎及其特点:

  1. InnoDB:

    • 优点:支持事务处理和行级锁,适合处理大量并发操作;具备崩溃恢复能力和数据完整性保护机制;支持外键约束和高性能的读操作。
    • 缺点:对于大量的写操作,性能相对较低;占用更多内存和磁盘空间。
  2. MyISAM:

    • 优点:适合用于读密集型应用,具有高速的插入和查询性能;占用较少的内存和磁盘空间。
    • 缺点:不支持事务处理和行级锁;不支持外键约束和崩溃恢复能力;易发生表级锁定。
  3. MEMORY(也称为 HEAP):

    • 优点:数据存储在内存中,读写速度非常快;适用于对临时数据进行快速操作。
    • 缺点:数据库重启后数据丢失;对于大量数据,需要足够的内存。
  4. Archive:

    • 优点:占用较少的磁盘空间,适合存储大量历史数据;压缩数据以实现更高的存储效率。
    • 缺点:只支持插入和查询操作,不支持更新和删除;不支持事务处理和索引。
  5. NDB Cluster(MySQL Cluster):

    • 优点:适用于高可用性和高性能的分布式环境;支持数据分片和并行处理;具备自动故障恢复和负载均衡机制。
    • 缺点:配置和管理较为复杂;需要额外的硬件和网络资源。

4.关于存储引擎的操作

  • 查看当前默认的存储引擎

    SHOW VARIABLES LIKE 'default_storage_engine';
    
  • 查看所有可用的存储引擎

    SHOW ENGINES;
    
  • 创建表时指定存储引擎

    CREATE TABLE table_name (
      column1 datatype,
      column2 datatype,
      ...
    ) ENGINE = engine_name;
    
  • 修改表的存储引擎

    ALTER TABLE table_name ENGINE = engine_name;
  • 批量修改数据库中所有表的存储引擎

    SELECT CONCAT('ALTER TABLE ', table_name, ' ENGINE=engine_name;')
    FROM information_schema.tables
    WHERE table_schema = 'database_name';
    
  • 切换并重建表的存储引擎

    ALTER TABLE table_name ENGINE = engine_name, ALGORITHM=COPY;
    
  • 查看存储引擎的状态和统计信息

    SHOW ENGINE engine_name STATUS;
    SHOW ENGINE engine_name MUTEX;
    SHOW ENGINE engine_name INNODB STATUS;
    
  • 修改默认的存储引擎
    修改MySQL配置文件(my.cnf或者my.ini),将default_storage_engine设置为所需的存储引擎。

5. 存储引擎的选择?

  • InnoDB:是MySQL的默认存储引擎,支持事务,外键。如果对事务的完整性有较高要求,且在并发条件下要求数据一致,数据除了插入和查询外,包含很多更新,删除操作,那么InnoDB存储引擎比较适合。
  • MyISAM:如果对于读和插入为主,很少的更新和删除操作,对于完整性和并发性要求不高,那么这个比较适合。
  • MEMORY:将所有的数据放在内存,访问速度快,通常用于临时表和缓存。它的缺点是对表大小有限制太大的表无法缓存在内存,且无法保证数据安全性。

6.InnoDB和MyISAM区别?

  1. 事务处理和锁定机制:

    • InnoDB支持事务处理,可以使用ACID(原子性、一致性、隔离性、持久性)特性保证数据的完整性和一致性。它还支持行级锁定,可以提供更好的并发处理能力。
    • MyISAM不支持事务处理,只支持表级锁定。这意味着在对一个表进行写操作时,其他会话无法对该表进行写操作。
  2. 数据完整性:

    • InnoDB支持外键约束,可以确保参照完整性,即通过外键关联的表之间的数据关系是有效的。
    • MyISAM不支持外键约束,不会强制执行参照完整性。
  3. 并发性能:

    • InnoDB在处理大量并发操作时具有良好的性能,它支持行级锁定,不会对整个表加锁,可以提高并发性能。
    • MyISAM在写入操作较多时性能较佳,因为它使用表级锁定,不需要处理复杂的锁定机制。
  4. 数据恢复和故障容错:

    • InnoDB具备崩溃恢复能力,可以在数据库崩溃后恢复数据,并保护数据的完整性。
    • MyISAM不具备崩溃恢复能力,如果数据库崩溃,则可能导致数据损坏或丢失。
  5. 全文索引:

    • InnoDB支持全文索引,可以进行高效的全文搜索。
    • MyISAM也支持全文索引,并且在这方面的性能较佳。
  6. 磁盘空间和缓存:

    • InnoDB占用更多的磁盘空间和内存,因为它需要存储事务日志和行级锁定信息等额外数据结构。
    • MyISAM占用较少的磁盘空间和内存,因为它没有像InnoDB那样的额外数据结构。

7.官方存储引擎文档

InnoDB 简介https://dev.mysql.com/doc/refman/8.0/en/innodb-introduction.htmlMyISAM 存储引擎https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html

你可能感兴趣的:(MySQL数据库入门,mysql,数据库,存储引擎)