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

相关文章:

MySQL存储

目录 1. MySQL存储引擎概述 2. 存储引擎的作用 3.存储引擎类型 4. 查看支持的存储引擎 6. InnoDB存储引擎 7. MyISAM与InnoDB的区别 8. 存储引擎的选择 9. 修改默认存储引擎 1. MySQL存储引擎概述 在MySQL中,数据通过不同的技术存储在文件(或内存…...

手势传感器 - 从零开始认识各种传感器【第十八期】

手势传感器|从零开始认识各种传感器 1、什么是手势传感器 手势传感器是一种能够感知人类手势或动作的传感器。它可以捕捉、识别和解释人类的手部动作或姿势,并将其转换成电信号或数字信号,通过识别人体的手势动作来实现与电子设备的交互,如控…...

【未来餐饮】 配送设置

一、创建门店 关键信息 1. 门店名字要有辨识度,尽量不和其他客户重名 2. 地址要具体到门牌号 3. 定位要和上面的地址一致 可以复制地址搜索地图,然后选择位置 二、创建配送模板 新建模板 填写模板 命名模板,勾上真省钱,然后保…...

移动式气象设备:灵活应对,精准监测的气象先锋

在气象监测领域,随着科技的进步和需求的多样化,移动式气象设备逐渐崭露头角,成为现代气象观测中不可或缺的一部分。这些设备以其灵活性高、部署迅速、监测精准的特点,广泛应用于应急响应、农业生产、户外探险、科研考察等多个领域…...

【AI落地应用实战】DAMODEL深度学习平台部署+本地调用ChatGLM-6B解决方案

ChatGLM-6B是由清华大学和智谱AI开源的一款对话语言模型,基于 General Language Model (GLM)架构,具有 62亿参数。该模型凭借其强大的语言理解和生成能力、轻量级的参数量以及开源的特性,已经成为在学术界和工业界引起了广泛关注。 本篇将介…...

英伟达开始引领下一波浪潮:物理AI

这可能会是AI技术形态的一个转折点,大模型的下一个形态,不再是人和模型一轮一轮的即时问答了。 当地时间 7 月 29 日,在美国丹佛举行的第 51 届 SIGGRAPH 计算机图形学会议上,英伟达创始人、CEO 黄仁勋与 Meta 创始人、CEO 马克・扎克伯格进…...

SQLServer设置端口

在SQL Server中设置端口是一个涉及多个步骤的过程,这些步骤旨在确保数据库服务器能够在新指定的端口上安全、高效地运行。以下是对SQL Server设置端口的详细阐述,包括默认端口、更改端口的步骤、验证更改以及相关的安全考虑。 一、SQL Server默认端口 …...

诊断技巧分享 | 用WPS500压力传感器测试空调压力波形?

最近收到咨询,问我们WPS500压力传感器能不能测汽车的空调压力波形?如果可以的话,应该怎么测? 是可以的。WPS500压力传感器的最大测试压力是34.5 bar,匹配对应的管子的接头,可以测试空调的动态波形。 要做这…...

W1R3S靶机全通详细教程

文章目录 w1r3s主机发现主机扫描 端口扫描tcp端口扫描UDP扫描漏洞扫描 攻击面分析FTP渗透匿名登录 web渗透目录爆破 cuppa cms文件包含漏洞getshell提权 w1r3s 引言 近些日子看红笔大佬的靶机精讲视频时,他的一句话让我感受颇深,很多视频在讲解时&…...

GitHub Revert Merge Commit的现象观察和对PR的思考

文章目录 前言Pull Request 为什么会是这样?Pull Request Branch的差异 ?Two Dot Diff和Three Dot Diff 老生常谈: Merge 和 Rebasegit mergegit rebase Revert Main分支中的一个Merge Commit现象描述解决方案: Revert Feature分支中的一个Merge Commi…...

使用JavaFx Fxml笔记

使用JavaFx Fxml实现账号密码登录 HelloApplication.java:package com.example.dr295cmonth7;import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; import javafx.scene.Parent; import javafx.scene.Scene; i…...

友盟U-APM——优秀的前端性能监控工具

在数字化转型浪潮的推动下,移动应用已成为企业连接用户、驱动业务增长的核心载体。然而,随着应用复杂度的日益提升,用户对于应用性能稳定性的期待也水涨船高。面对应用崩溃、卡顿、加载缓慢等频发问题,如何确保应用的流畅运行,成为产研团队亟待解决的关键挑战。在此背景下,友盟…...

人工智能与机器学习原理精解【10】

文章目录 数值优化基础理论线性模型基本形式特性应用学习算法 向量输入的二次函数的凸性概述二次函数的一般形式凸函数的定义分析二次函数的凸性注意 详细解释向量输入的二次函数的凸性分析一、二次函数的一般形式二、凸函数的定义三、二次函数的Hessian矩阵四、判断二次函数的…...

TypeScript 简介

文档 typeScript官网中文文档:https://www.tslang.cn/index.html中文文档(简洁点):https://typescript.bootcss.comMDN 前言 JavaScript 引入编程社区已有 20 多年,如今已成为有史以来使用最广泛的跨平台语言之一。JavaScript 最初是一种用…...

什么是知识库?为什么我需要一个?

在互联网的历史上,知识库的定义已经多次改变。最初,它是一个术语,用于描述任何比常见关系“数据库”更先进的复杂数据存储系统。 现在,随着 SaaS 的出现,知识库一词有了更多不同的含义。 根据定义,知识库…...

MySQL学习(16):视图

视图是一种虚拟临时表,并不真正存储数据,它的作用就是方便用户查看实际表的内容或者部分内容 1.视图的使用语法 (1)创建 create view 视图名称 as select语句; #视图形成的虚拟表就来自于select语句所查询的实际表,…...

android13关机按钮 去掉长按事件 去掉启动到安全模式 删除关机长按

总纲 android13 rom 开发总纲说明 目录 1.前言 2.界面效果 3.问题分析 4.代码修改 5.编译替换运行 6.彩蛋 1.前言 在Android操作系统中,关机按钮通常具有多种功能,包括短按关机、长按启动语音助手或重启设备等。在某些情况下,用户或设备管理员可能希望自定义关机按…...

递归求数组和

...

MySQL数据库介绍

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、数据库介绍 1、什么是数据库 数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织…...

向量数据库性能测试工具(VectorDBBench.com)性价比排名

排名 向量数据库(不同硬件配置) 价格/性能比 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 无标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 低标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 高标量过滤 QP$(每百万次查询所花费的价…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...

学习 Hooks【Plan - June - Week 2】

一、React API React 提供了丰富的核心 API&#xff0c;用于创建组件、管理状态、处理副作用、优化性能等。本文档总结 React 常用的 API 方法和组件。 1. React 核心 API React.createElement(type, props, …children) 用于创建 React 元素&#xff0c;JSX 会被编译成该函数…...

Redis专题-实战篇一-基于Session和Redis实现登录业务

GitHub项目地址&#xff1a;https://github.com/whltaoin/redisLearningProject_hm-dianping 基于Session实现登录业务功能提交版本码&#xff1a;e34399f 基于Redis实现登录业务提交版本码&#xff1a;60bf740 一、导入黑马点评后端项目 项目架构图 1. 前期阶段2. 后续阶段导…...