MySQL存储
目录
1. MySQL存储引擎概述
2. 存储引擎的作用
3.存储引擎类型
4. 查看支持的存储引擎
6. InnoDB存储引擎
7. MyISAM与InnoDB的区别
8. 存储引擎的选择
9. 修改默认存储引擎
1. MySQL存储引擎概述
在MySQL中,数据通过不同的技术存储在文件(或内存)中,每种技术都有其独特的存储机制、索引技巧、锁定水平以及提供的功能和能力。选择合适的存储引擎可以显著改善应用的整体性能。
2. 存储引擎的作用
- 存储和检索数据:不同的存储引擎对数据的存储和检索方式有所不同,适用于不同的应用场景。
- 提供额外功能:如事务处理、外键约束等。
3.存储引擎类型
| 存储引擎 | InnoDB | MyISAM | Memory | Archive |
|---|---|---|---|---|
| 事务支持 | 是 | 否 | 否 | 否 |
| 外键支持 | 是 | 否 | 否 | 否 |
| 行级锁定 | 是 | 表级锁定 | 表级锁定(但通常很快) | 无锁定(插入后无法更新或删除) |
| 默认存储格式 | 动态行格式 | 静态/动态/压缩 | 内存中的哈希表 | 压缩的行格式 |
| 适用场景 | 高并发更新、事务处理、外键约束 | 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$(每百万次查询所花费的价…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
