当前位置: 首页 > 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【进阶篇-Day13:JAVA中IO流之字节缓冲流的介绍】
  • Redis缓存穿透、击穿和雪崩的理解和解决思路
  • 如何有效管理众多账号密码:选择适合你的密码管理工具
  • kafka架构+原理+源码
  • PHP $_POST 变量
  • 全链路追踪 性能监控,GO 应用可观测全面升级
  • Python数值计算(9)
  • 大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
  • 【iOS】—— iOS持久化
  • 【Git】.gitignore全局配置与忽略匹配规则详解
  • 快速识别音频文件转成文字
  • 实战:安装ElasticSearch 和常用操作命令
  • C#中的异步编程:Task、Await 和 Async
  • Settings搜索系统SettingsIntelligence
  • 数说故事 | 大数据洞察宠物消费市场数据
  • 网络传输文件的问题
  • java多线程
  • Laravel5.4 Queues队列学习
  • Laravel核心解读--Facades
  • MobX
  • mongodb--安装和初步使用教程
  • nginx 负载服务器优化
  • Service Worker
  • SpingCloudBus整合RabbitMQ
  • Vue 重置组件到初始状态
  • Zepto.js源码学习之二
  • 利用jquery编写加法运算验证码
  • 如何解决微信端直接跳WAP端
  • 数据科学 第 3 章 11 字符串处理
  • 为什么要用IPython/Jupyter?
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (7)STL算法之交换赋值
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)fread与fwrite详解
  • (JS基础)String 类型
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Oracle)SQL优化技巧(一):分页查询
  • (ZT)薛涌:谈贫说富
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (转)jQuery 基础
  • (转)mysql使用Navicat 导出和导入数据库
  • (转载)虚函数剖析
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(九):替换带有等号=的字符串的子串