跳转至
用户认证 - eMac Tech Docs

用户认证

重要提醒

为了您的权益以及学习体验,请不要外借账号!

如果您没有账号或忘记密码,请联系管理员重置密码。

请输入您的登录信息

MySQL存储引擎

存储引擎概述

1. 什么是存储引擎

flowchart TD
    subgraph MySQL_Server[MySQL Server]
        parser[查询解析器]
        optimizer[优化器]
        engine[存储引擎]
    end
    subgraph 数据文件
        frm[表结构文件]
        data[数据文件]
        idx[索引文件]
    end
    parser --> optimizer
    optimizer --> engine
    engine --> frm
    engine --> data
    engine --> idx

存储引擎是MySQL数据库的核心组件,负责数据的存储、读取和管理。

2. 存储引擎的作用

  • 数据存储和检索
  • 事务处理
  • 并发控制
  • 数据完整性
  • 性能优化

常见存储引擎

1. InnoDB

特性 说明
事务支持 支持ACID事务
外键支持 支持外键约束
行级锁 支持行级锁定
崩溃恢复 支持崩溃恢复
并发性能 支持MVCC

2. MyISAM

特性 说明
表级锁 锁定整个表
全文索引 支持全文搜索
压缩 支持表压缩
性能 查询性能好
事务 不支持事务

3. Memory

特性 说明
存储位置 内存中
访问速度 非常快
持久性 服务重启数据丢失
使用场景 临时表、缓存

存储引擎选择

1. 选择标准

  • 事务需求
  • 并发性能
  • 数据完整性
  • 查询特点
  • 存储空间

2. 使用场景

-- 事务处理场景(InnoDB)
CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10,2),
    status VARCHAR(20),
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB;

-- 日志表场景(MyISAM)
CREATE TABLE logs (
    id INT PRIMARY KEY,
    content TEXT,
    create_time DATETIME,
    FULLTEXT(content)
) ENGINE=MyISAM;

-- 临时表场景(Memory)
CREATE TABLE temp_data (
    id INT PRIMARY KEY,
    data VARCHAR(100)
) ENGINE=MEMORY;

存储引擎配置

1. 查看存储引擎

-- 查看支持的存储引擎
SHOW ENGINES;

-- 查看表的存储引擎
SHOW TABLE STATUS LIKE 'table_name';

-- 查看默认存储引擎
SHOW VARIABLES LIKE 'default_storage_engine';

2. 修改存储引擎

-- 创建表时指定存储引擎
CREATE TABLE test (
    id INT PRIMARY KEY
) ENGINE=InnoDB;

-- 修改表的存储引擎
ALTER TABLE test ENGINE=MyISAM;

性能优化

1. InnoDB优化

  • 缓冲池配置
  • 日志文件大小
  • 并发线程数
  • 事务隔离级别

2. MyISAM优化

  • 键缓存大小
  • 并发插入
  • 表修复
  • 表压缩

注意事项

  1. 数据安全

    • 定期备份
    • 日志管理
    • 崩溃恢复
    • 数据一致性
  2. 性能监控

    • 引擎状态
    • 锁等待
    • 缓存命中率
    • 磁盘I/O
  3. 运维管理

    • 版本兼容性
    • 升级迁移
    • 参数调优
    • 故障处理
  4. 重要参数

    • innodb_buffer_pool_size
    • innodb_log_file_size
    • key_buffer_size
    • max_heap_table_size