当前位置: 首页 > news >正文

MySQL存储

目录

1. MySQL存储引擎概述

2. 存储引擎的作用

3.存储引擎类型

4. 查看支持的存储引擎

6. InnoDB存储引擎

7. MyISAM与InnoDB的区别

8. 存储引擎的选择

9. 修改默认存储引擎


1. MySQL存储引擎概述

在MySQL中,数据通过不同的技术存储在文件(或内存)中,每种技术都有其独特的存储机制、索引技巧、锁定水平以及提供的功能和能力。选择合适的存储引擎可以显著改善应用的整体性能。

2. 存储引擎的作用
  • 存储和检索数据:不同的存储引擎对数据的存储和检索方式有所不同,适用于不同的应用场景。
  • 提供额外功能:如事务处理、外键约束等。
3.存储引擎类型
存储引擎InnoDBMyISAMMemoryArchive
事务支持
外键支持
行级锁定表级锁定表级锁定(但通常很快)无锁定(插入后无法更新或删除)
默认存储格式动态行格式静态/动态/压缩内存中的哈希表压缩的行格式
适用场景高并发更新、事务处理、外键约束SELECT、INSERT密集型应用,不支持事务临时表、缓存数据日志、审计等非关键数据
自动灾难恢复依赖于MySQL服务器的稳定性
数据持久化是(磁盘)是(磁盘)重启后丢失(内存)是(磁盘,但不可更新)
索引类型B+树B+树HASH(默认)或BTREE插入时压缩,不支持索引搜索
文件结构表空间文件、日志文件.frm(定义)、.MYD(数据)、.MYI(索引)内存中的数据结构.arc(归档文件)
数据修改后的恢复支持事务回滚不支持事务,但可以检查和修复表重启后数据丢失不支持修改操作
性能特点高并发、ACID兼容高查询性能、较低写入性能极快的数据访问速度,但受限于内存大小高效存储大量数据,但不支持数据修改
4. 查看支持的存储引擎

在MySQL客户端中,可以使用以下命令查看支持的存储引擎:
5. MyISAM存储引擎

  • 特点:不支持事务和外键,访问速度快,适用于以SELECT、INSERT为主的应用。
  • 文件结构:每个MyISAM表在磁盘上存储为三个文件,扩展名分别为frm(存储表定义)、MYD(存储数据)、MYI(存储索引)。
  • 存储格式
    • 静态表:固定长度记录,存储迅速,容易缓存,但占用空间多。
    • 动态表:记录长度可变,占用空间少,但更新、删除频繁时会产生碎片。
    • 压缩表:由myisamchk工具创建,占用空间非常小。
  • 检查与修复:可以使用CHECKTABLE和REPAIR TABLE语句检查和修复损坏的MyISAM表。
6. InnoDB存储引擎
  • 特点
    • 健壮的事务型存储引擎,支持行级锁定和外键约束。
    • MySQL 5.5.5版本开始,InnoDB成为默认存储引擎。
  • 适用场景
    • 更新密集的表。
    • 需要事务处理的应用。
    • 支持自动灾难恢复和外键约束。
  • 性能特点
    • 扫描全表计算行数时效率较低(如SELECT COUNT(*) FROM table)。
    • 清空表时效率较低(逐行删除)。
7. MyISAM与InnoDB的区别
  • 事务支持:InnoDB支持事务,MyISAM不支持。
  • 锁机制:InnoDB支持行级锁(特定条件下可能锁全表),MyISAM主要使用表级锁。
  • 外键约束:InnoDB支持,MyISAM不支持。
  • 性能与空间:MyISAM在查询和插入方面性能更优,但InnoDB在更新频繁和需要事务的场景下表现更佳。
8. 存储引擎的选择
  • 应用程序需求:如果需要事务处理,则选择InnoDB;如果查询性能要求高,则选择MyISAM。
  • 数据量大小:MyISAM并非只能用于小型应用,大数据量时可通过分表分库等架构升级解决。
9. 修改默认存储引擎
  • 通过ALTER TABLE

先创建一个表

mysql> create database auth;
mysql> use auth  
mysql> CREATE TABLE t1 (user_name CHAR(16), user_passwd CHAR(48));mysql> show table status from auth where name='t1'\G
mysql> alter table t1 engine=MyISAM;
mysql> show table status from auth where name='t1'\G
  • 修改my.cnf配置文件
    [root@localhost ~]# vim /etc/my.cnf
    [mysqld]
    #添加下面语句
    default-storage-engine=MyISAM[root@localhost ~]# systemctl restart mysqld
    [root@localhost ~]# mysql -uroot -ppwd123
    mysql> use authmysql> CREATE TABLE t2 (user_name CHAR(16), user_passwd CHAR(48));
    mysql> show table status from auth where name='t2'\G


    并重启MySQL服务。

  • 创建表时指定
    mysql> use auth
    mysql> create table t3 (id int(10),name char(20)) engine=INNODB;
    mysql> show table status from auth where name='t3'\G

http://www.lryc.cn/news/410913.html

相关文章:

  • 手势传感器 - 从零开始认识各种传感器【第十八期】
  • 【未来餐饮】 配送设置
  • 移动式气象设备:灵活应对,精准监测的气象先锋
  • 【AI落地应用实战】DAMODEL深度学习平台部署+本地调用ChatGLM-6B解决方案
  • 英伟达开始引领下一波浪潮:物理AI
  • SQLServer设置端口
  • 诊断技巧分享 | 用WPS500压力传感器测试空调压力波形?
  • W1R3S靶机全通详细教程
  • GitHub Revert Merge Commit的现象观察和对PR的思考
  • 使用JavaFx Fxml笔记
  • 友盟U-APM——优秀的前端性能监控工具
  • 人工智能与机器学习原理精解【10】
  • TypeScript 简介
  • 什么是知识库?为什么我需要一个?
  • MySQL学习(16):视图
  • android13关机按钮 去掉长按事件 去掉启动到安全模式 删除关机长按
  • 递归求数组和
  • MySQL数据库介绍
  • 向量数据库性能测试工具(VectorDBBench.com)性价比排名
  • 2024年的AI人工智能风口是Python?一篇文章告诉你为什么!
  • 使用SpringBoot集成CAS、应用场景和示例代码
  • python爬取某财富网
  • Python 【机器学习】 进阶 之 【实战案例】房价数据中位数分析 之 [ 选择并训练模型 ] [ 模型微调 ] | 3/3(含分析过程)
  • NLP-使用Word2vec实现文本分类
  • 基于SpringBoot实现验证码功能
  • 字节测开面筋大总结!!!!
  • Mindspore框架DCGAN模型实现漫画头像生成|(二)DCGAN模型构建
  • mongo-csharp-driver:MongoDB官方的C#客户端驱动程序!
  • 网络流量分析>>pcapng文件快速分析有用价值解析
  • 【大模型系列篇】Vanna-ai基于检索增强(RAG)的sql生成框架