MySQL强化关键_016_存储引擎

目 录

一、概述

[二、MySQL 支持的存储引擎](#二、MySQL 支持的存储引擎)

三、指定存储引擎

四、修改存储引擎

五、常用存储引擎及适用场景


一、概述

  1. MySQL 存储引擎决定了数据在磁盘上的存储方式和访问方式
  2. 不同的存储引擎实现了不同的存储和检索算法;
  3. MySQL 常见的存储引擎:InnoDB、MyISAM、MEMORY、ARCHIVE等。
    1. InnoDB 支持事务和行级锁定,适用于高并发读写的应用;
    2. MyISAM 不支持事务,但适用于读操作较多的应用;
    3. Memory 数据全部存储在内存中,适用于读写速度要求很高的应用。
  4. 选择合适的存储引擎可以提高 MySQL 的性能和效率。

二、MySQL 支持的存储引擎

sql 复制代码
mysql> show engines \G;
*************************** 1. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 5. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 8. row ***************************
      Engine: ndbinfo
     Support: NO
     Comment: MySQL Cluster system information storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 9. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 10. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 11. row ***************************
      Engine: ndbcluster
     Support: NO
     Comment: Clustered, fault-tolerant tables
Transactions: NULL
          XA: NULL
  Savepoints: NULL
11 rows in set (0.00 sec)
  1. 【Support: YES】表示当前版本 MySQL 支持该存储引擎;
  2. MySQL 默认存储引擎:InnoDB。

三、指定存储引擎

  1. 可以在建表时指定存储引擎;
  2. 若不显示指定存储引擎,MySQL 将使用默认的存储引擎。
sql 复制代码
create table engine_test(
    id int,
    name varchar(255),
    description text
) engine = InnoDB;
    

四、修改存储引擎

  1. 修改存储引擎可能会执行复制表的操作,因此可能造成数据丢失或不可用,确保在执行修改之前备份数据;
  2. 不是所有的存储引擎都支持相同的功能,确保新的存储引擎支持当前应用程序所需的功能;
  3. 修改表的存储引擎可能会影响到现有的应用程序和查询,确保在修改之前评估和测试所有影响;
  4. 【alter table】可能需要适当权限才能执行,确保有足够权限执行修改操作。
sql 复制代码
alter table engine_test engine = MEMORY;

五、常用存储引擎及适用场景

  • InnoDB
    • MySQL 默认的事务型存储引擎;
    • 支持 ACID;
    • 具有较好的并发性和数据完整性;
    • 支持行级锁定;
    • 适用于多数场景,特别是需要事务支持的应用。
  • MyISAM
    • MySQL 早期版本常用的存储引擎;
    • 支持全文检索、表级锁的;
    • 不支持事务;
    • 具有简单性和高性能,在读密集广泛应用。
  • MEMORY
    • 称为 HEAP,将表存储在内存中;
    • 具有较高的读写性能,但数据会在服务器重启时丢失;
    • 适用于快速读写临时数据集、缓存、临时表等场景。
  • CSV
    • 将数据以纯文本格式存储;
    • 适用于需要处理和导入、导出 CSV 格式数据的场景。
  • ARCHIVE
    • 对数据高效压缩和存储;
    • 适用于需要长期存储大量历史数据且不经常查询的场景。
相关推荐
Neolnfra12 小时前
SMB、FTP、MySQL... 配置不当,即是漏洞
linux·数据库·mysql·安全·网络安全·系统安全·安全架构
雷神乐乐12 小时前
Mysql数据泵导入导出数据
数据库·oracle
摇滚侠12 小时前
Redis 零基础到进阶,Redis 持久化,RDB,AOF,RDB AOF 混合,笔记 28-46
数据库·redis·笔记
李慕婉学姐12 小时前
基于微信小程序的运动会信息管理系统k6kqgy34(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·微信小程序·小程序
韩立学长12 小时前
基于Springboot流浪动物救助系统cqy142wz(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
好好沉淀12 小时前
开发过程中动态 SQL 中where 1=1的作用是什么
java·服务器·开发语言·数据库·sql
曲莫终12 小时前
springboot集成h2内存数据库运行测试用例
数据库·spring boot·测试用例
她说..12 小时前
Spring AOP场景5——异常处理(附带源码)
java·数据库·后端·spring·springboot·spring aop
风月歌13 小时前
小程序项目之驾校报名小程序源代码(java+vue+小程序+mysql)
java·vue.js·mysql·小程序·毕业设计·源码
dllxhcjla13 小时前
MySQL单表
数据库·mysql