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

MySQL:存储引擎简介和库的基本操作

目录

一、存储引擎

1、什么是存储引擎?

2、存储引擎的分类

关系型数据库存储引擎:

非关系型数据库存储引擎:

分布式数据库存储引擎:

3、常用的存储引擎及优缺点

 1、InnoDb存储引擎

2、MyISAM存储引擎

3、MEMORY存储引擎

4、MySQL支持的存储引擎

5、存储引擎的选择

1、InnoDb存储引擎

2、MyISAM存储引擎

3、MEMORY存储引擎

二、数据库的基本操作

1、查看数据库

2、选择数据库

3、创建数据库

4、删除数据库


一、存储引擎

1、什么是存储引擎?

        存储引擎是数据库管理系统(DBMS)中的一个关键组件,在MySQL当中可以使用不同的技术将数据存储在文件当中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。简而言之,存储引擎就是表的类型。在开发时为了提高MySQL数据库管理系统的使用效率和灵活性,可以按照具体业务的实际需求来进行存储引擎的选择。

2、存储引擎的分类

关系型数据库存储引擎:

  • InnoDB:支持事务处理、行级锁定、外键约束,使用聚簇索引,适合需要高并发读写和事务处理的场景。
  • MyISAM:以高效率的插入和查询速度著称,但不支持事务处理和行级锁定,适合读操作比写操作更频繁的场景。
  • Memory:所有数据存储在内存中,适合于快速读写操作,数据在服务器重启后可能会丢失,适用于缓存和临时数据存储。
  • Archive:主要用于归档数据,支持高效的数据插入和压缩,但不支持索引,适用于需要大量存储空间的归档场景。

非关系型数据库存储引擎:

  • Apache Cassandra:一个分布式非关系型数据库,提供高可用性和可扩展性,适合处理大量数据。
  • MongoDB:一个基于文档的非关系型数据库,数据结构灵活,适合需要灵活存储数据的场景。
  • Redis:一个开源的内存中数据结构存储系统,用作数据库、缓存或消息传递系统。

分布式数据库存储引擎:

  • Google Spanner:一个分布式关系型数据库,提供了跨多个物理位置的强一致性读写操作。
  • Apache HBase:基于Hadoop的分布式列式存储系统,适合于大数据应用场景。

3、常用的存储引擎及优缺点

 1、InnoDb存储引擎

        InnoDB是MySQL数据库管理系统中的一种存储引擎,它给MySQL的表提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全,InnoDB是MySQL第一个提供外键约束的表引擎。InnoDB存储引擎是由Innobase Oy公司开发的,后来被甲骨文公司并购。从MySQL 5.5版本开始,InnoDB成为了MySQL的默认存储引擎。

        InnoDB存储引擎的优势在于提供了良好的事务管理、崩溃修复能力和并发控制。缺点是其读写效率稍差,占用的数据空间相对比较大。

2、MyISAM存储引擎

        MyISAM存储引擎是MySQL中常见的存储引擎,曾是MySQL的默认存储引擎, MyISAM存储引擎是基于ISAM存储引擎发展起来的,并因此增加了很多应用,它由MySQL的创始人Michael Widenius和David Axmark创建。

          MyISAM存储引擎的表支持三种形式,包括静态型、动态型和压缩型。其中,静态型为MyISAM存储引擎的默认存储格式,其字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;压缩型需要使用myisampack工具创建,占用的磁盘空间小。

        MyISAM存储引擎适用于读操作频繁、写操作相对较少的情况,它以高性能和低内存占用为特点,缺点是不支持事务的完整性和并发性。

3、MEMORY存储引擎

        MEMORY存储引擎(也称为HEAP引擎)是MySQL数据库管理系统中的一个轻量级存储引擎,它是MySQL中一种特殊的存储引擎,使用存储在内存中的内容来创建表,它将数据存储在内存中,因此提供了非常高的读写速度。MEMORY存储引擎是InnoDB的另一种选择,特别是在需要快速访问和处理数据时。

4、MySQL支持的存储引擎

        在选择存储引擎之前先要了解当前数据库管理系统支持哪些存储引擎,在MySQL数据库管理系统中,可以使用SHOW ENGINES 来查看支持的存储引擎。以下图片为MySQL8.0版本的支持引擎。

SHOW ENGINES

Engine:存储引擎名称

Support:表示MySQL数据库是否支持该存储引擎

Comment:相关介绍

Transactions:存储引擎是否支持事务

XA:存储引擎所支持的分布式是否符合XA规范

Savepoints:表示是否支持业务事务处理的储存点

         当在创建表时若没有指定使用的存储引擎则会使用默认的存储引擎,我们需要提前查看并确认默认的存储引擎,使用以下SQL语句来查询

SHOW variables like '%storage_engine%';

         如果想修改默认引擎,可以通过修改MySQL数据库管理系统的my.cnf配置文件来实现。(切记修改前需要先关闭MySQL服务)

5、存储引擎的选择

        在使用MySQL数据库管理系统的开发初期需要根据实际的业务需求来选择存储引擎,因为每个存储引擎都有自己的特性和优势及使用场合,因此只有掌握各种存储引擎的特性,才能正确的选择存储引擎。以下简单的列出常用存储类型的对比表格作为参考。

特性

InooDBMyISAMMEMORY
事务安全支持
存储显示64TB
空间使用
内存使用
插入数据的速度
锁机制行锁表锁表锁
对外键的支持支持
数据可压缩支持
批量插入的速度

  

1、InnoDb存储引擎

  • 适用于需要事务处理、外键约束和数据持久性的应用。
  • 适合复杂的查询和频繁的数据修改操作。
  • 提供了行级锁和崩溃恢复能力,保证了数据的完整性和一致性。
  • 适合于在线事务处理(OLTP)系统,如电子商务、金融系统和任何需要高数据完整性的应用。

2、MyISAM存储引擎

  • 适用于读操作远多于写操作的场景。
  • 提供了高效的插入性能和全文索引支持。
  • 不支持事务处理和外键约束,但不适用于需要这些特性的应用。
  • 适合于内容管理系统(CMS)、日志处理和数据仓库等场景,尤其是当性能和存储空间是首要考虑因素时。

3、MEMORY存储引擎

  • 适用于需要高速读写和缓存数据的场景。
  • 所有数据都存储在内存中,因此提供了极高的访问速度。
  • 不支持事务处理和外键约束,且数据在服务器关闭后会丢失,除非设置了持久化。
  • 适合于数据缓存、高速缓存和临时存储需求,但不适合需要长期存储数据的应用。

二、数据库的基本操作

1、查看数据库

        登录MySQL数据库后通过输入以下命令来查看数据库,当输入命令后会返回可用的数据库列表,其中包含MySQL内部使用的数据库。

SHOW DATABASES;

2、选择数据库

        获取MySQL数据库列表后通过输入以下命令来选择数据库,当输入命令后会进行一个反馈数据库已变更如下图所示。

USE mysql;

3、创建数据库

        在使用 create 命令创建数据库之前需要了解相关语法,语法如下所示:

CREATE DATABASE 数据库名;

        创建一个名为teacher的数据库,具体操作如下所示:

CREATE DATABASE teacher;

4、删除数据库

        删除刚刚创建名为teacher的数据库,具体操作如下所示:

DROP DATABASE teacher;

相关文章:

MySQL:存储引擎简介和库的基本操作

目录 一、存储引擎 1、什么是存储引擎? 2、存储引擎的分类 关系型数据库存储引擎: 非关系型数据库存储引擎: 分布式数据库存储引擎: 3、常用的存储引擎及优缺点 1、InnoDb存储引擎 2、MyISAM存储引擎 3、MEMORY存储引擎 …...

JavaScript类型判断(总结)

1. 使用typeof操作符 typeof操作符可以返回一个值的类型的字符串表示。例如: typeof 42; // "number" typeof "Hello"; // "string" typeof true; // "boolean" typeof undefined; // "undefined" typeof null…...

SpringBoot之登录校验关于JWT、Filter、interceptor、异常处理的使用

什么是登录校验? 所谓登录校验,指的是我们在服务器端接收到浏览器发送过来的请求之后,首先我们要对请求进行校验。先要校验一下用户登录了没有,如果用户已经登录了,就直接执行对应的业务操作就可以了;如果用…...

我的AI工具箱Tauri版-FunAsr音频转文本

本教程基于自研的AI工具箱Tauri版进行FunAsr音频转文本服务。 FunAsr音频转文本服务 是自研AI工具箱Tauri版中的一个高效模块,专为将音频或视频中的语音内容自动转化为文本或字幕而设计。用户只需简单配置输入、输出路径,即可通过FunAsr工具快速批量处理…...

C++:模版初阶

目录 一、泛型编程 二、函数模版 概念 格式 原理 实例化 模版参数的匹配原则 三、类模版 定义格式 实例化 一、泛型编程 如何实现一个通用的交换函数呢? void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swa…...

Python Web 与区块链集成的最佳实践:智能合约、DApp与安全

Python Web 与区块链集成的最佳实践:智能合约、DApp与安全 📚 目录 🏗 区块链基础 区块链的基础概念与应用场景使用 Web3.py 与 Python Web 应用集成区块链网络在 Web 应用中实现加密货币支付与转账功能 🔑 智能合约与 DApp 编写…...

使用工具将截图公式转换为word公式

引言: 公式越复杂,心情越凌乱,手写都会觉得很麻烦,何况敲到电脑里面呢,特别是在写论文时,word有专属的公式格式,十分繁杂,如果照着mathTYPE软件敲,那么会耗费很长的时间…...

深度学习(6):Dataset 和 DataLoader

文章目录 Dataset 类DataLoader 类 Dataset 类 概念: Dataset 是一个抽象类,用于表示数据集。它定义了如何获取数据集中的单个样本和标签。 作用: 为数据集提供统一的接口,便于数据的读取、预处理和管理。 关键方法&#xff…...

Qt窗口——QToolBar

文章目录 工具栏创建工具栏设置toolTip工具栏配合菜单栏工具栏浮动状态 工具栏 QToolBar工具栏是应用程序中集成各种功能实现快捷键使用的一个区域。 可以有多个,也可以没有。 创建工具栏 #include "mainwindow.h" #include "ui_mainwindow.h&qu…...

MySQL—存储过程详解

基本介绍 存储过程和函数是数据库中预先编译并存储的一组SQL语句集合。它们的主要目的是提高代码的复用性、减少数据传输、简化业务逻辑处理,并且一旦编译成功,可以永久有效。 存储过程和函数的好处 提高代码的复用性:存储过程和函数可以在…...

2024ICPC网络赛2记录:CK

这一次网络赛我们过8题,排名71,算是发挥的非常好的了。这一把我们三个人手感都很好,前六题都是一遍过,然后我又切掉了非签到的E和C,最后时间不是很多,K只想到大概字典树的思路,细节不是很懂就直…...

PerparedStatement概述

PreparedStatement 是 Java 中的一个接口,用于预编译 SQL 语句并执行数据库操作。 一、主要作用 提高性能: 数据库在首次执行预编译语句时会进行语法分析、优化等操作,并将其存储在缓存中。后续执行相同的预编译语句时,数据库可…...

联影医疗嵌入式面试题及参考答案(3万字长文)

假如你要做机器人控制,你会遵循怎样的开发流程? 首先,需求分析阶段。明确机器人的功能需求,例如是用于工业生产中的物料搬运、还是家庭服务中的清洁打扫等。了解工作环境的特点,包括空间大小、障碍物分布、温度湿度等因素。同时,确定机器人的性能指标,如运动速度、精度、…...

Rust的作用?

在Linux中,Rust可以开发命令行工具,如FD、SD、Ripgep、Bat、EXA、SKIM等。虽然Rust是面向系统编程,但也不妨碍使用Rust写命令行工具,因为Rust具备现代语言特性、无依赖、生成的目标文件小。 在云计算和区块链区域,Rus…...

无人机之可承受风速的影响因素

无人机可承受风速的影响因素是多方面的,这些因素共同决定了无人机在特定风速条件下的飞行稳定性和安全性。以下是一些主要的影响因素: 一、无人机设计与结构 无人机的大小、形状和重量都会直接影响其抗风能力。大型无人机由于具有更大的表面积和质量&am…...

HTML与JavaScript结合实现简易计算器

目录 背景: 过程: 代码: HTML部分解析: body部分解析: JavaScript部分解析: 效果图 : 总结: 背景: 计算器是一个典型的HTML和javaScript结合使用的例子,它展示了如何使用H…...

Docker网络原理

Docker 网络是 Docker 容器之间以及容器与外部世界之间通信的机制。Docker 提供了多种网络驱动,允许容器以不同的方式进行通信: Docker 网络工作原理: 网络命名空间:Docker 使用 Linux 的网络命名空间来隔离容器的网络堆栈。每个…...

PyTorch 目标检测教程

PyTorch 目标检测教程 本教程将介绍如何在 PyTorch 中使用几种常见的目标检测模型,包括 Faster R-CNN、SSD 以及 YOLO (You Only Look Once)。我们将涵盖预训练模型的使用、推理、微调,以及自定义数据集上的训练。 1. 目标检测概述 目标检测任务不仅要…...

校园美食导航:Spring Boot技术的美食发现之旅

第二章 系统分析 2.1 可行性分析 可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。我会从这三个方面对网上校园周边美食探索及分享平台进行详细的分析。 2.1.1技术可行…...

51单片机 - DS18B20实验1-读取温度

上来一张图,明确思路,程序整体裤架如下,通过单总线,单独封装一个.c文件用于单总线的操作,其实,我们可以把点c文件看成一个类操作,其属性就是我们面向对象的函数,也叫方法&#xff0c…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

Java 加密常用的各种算法及其选择

在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘&#xf…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...