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

news2024/12/24 22:03:07

目录

一、存储引擎

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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2178191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android kotlin Extension扩展函数

1、新建一个kt文件&#xff1a; 2、代码&#xff1a; class User(var name:String)/**扩展函数**/ fun User.Print(){print("用户名 $name") }// 扩展函数 swap,调换不同位置的值 fun MutableList<Int>.swap(index1: Int, index2: Int) {val tmp this[index1…

组合逻辑元件与时序逻辑元件

组合逻辑元件和时序逻辑元件都是数字电路中的基本构建块&#xff0c;但它们在功能和结构上存在显著差异。 1. 组合逻辑元件: 内容: 组合逻辑元件的输出仅取决于当前的输入&#xff0c;而与之前的输入无关。 它们没有记忆功能。 常见的组合逻辑元件包括&#xff1a; 与门 (AND…

Java | Leetcode Java题解之第437题路径总和III

题目&#xff1a; 题解&#xff1a; class Solution {public int pathSum(TreeNode root, int targetSum) {Map<Long, Integer> prefix new HashMap<Long, Integer>();prefix.put(0L, 1);return dfs(root, prefix, 0, targetSum);}public int dfs(TreeNode root,…

红帽RHCE和RHCA有什么区别

在红帽认证体系当中&#xff0c;RHCE&#xff08;Red Hat Certified Engineer&#xff09;以及 RHCA&#xff08;Red Hat Certified Architect&#xff09;乃是两项极具声望的高级认证。众多人士对于它们彼此之间存在的区别&#xff0c;深感困惑不解。接下来&#xff0c;IT 小编…

UE4_Niagara基础实例—3、使用自定义模块二

效果&#xff1a; 粒子限制在球形范围内 操作步骤&#xff1a; 1、因为我们要对粒子的位置进行控制&#xff0c;所以需要开启本地空间&#xff0c;粒子与发射器位置有关。使用GPU计算模拟&#xff0c;需勾选固定边界。 2、简单调节其它参数&#xff1a; 3、现在我想把粒子锁定…

【Linux的内存管理】

为什么需要内存管理 分段和分页内存分段内存分页 分页情况下&#xff0c;虚拟内存如何映射到物理地址页表原理多级页表 TLB快表段页式内存管理需要为什么进程地址空间Linux的进程虚拟地址空间管理进程地址空间如何分配虚拟内存虚拟内存的管理程序编译后的二进制文件如何映射到虚…

《Zeotero的学习》

学习视频链接 Zeotera的安装 官网点击download&#xff0c;选择合适的版本进行下载&#xff0c;并安装插件。 下载完成之后&#xff0c;点击安装包&#xff0c;一路默认就可以。如果不想下载在C盘&#xff0c;可以在步骤中选择自定义路径。 Zeotero的注册 官网进行注册&am…

AIGC: 从两个维度快速选择大模型开发技术路线

在当今人工智能飞速发展的时代&#xff0c;大模型开发技术路线的选择至关重要。本文将从两个维度出发&#xff0c;为大家快速介绍不同的大模型开发技术路线&#xff0c;帮助你在开发过程中做出明智的决策。 一、两个维度解析 传入大模型的信息 低要求&#xff1a;传入的信息相…

【D3.js in Action 3 精译_025】3.4 让 D3 数据适应屏幕(中)—— 线性比例尺的用法

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

Activity的生命周期分析

目录 Activity的生命周期全面分析 典型情况下的生命周期分析 异常情况下的生命周期分析 情况1&#xff1a;资源相关的系统配置发生改变导致Activity被杀死并重新创建 Activity的生命周期全面分析 在Android开发中&#xff0c;Activity的生命周期是非常重要的概念。它描述了…

数仓建模:DataX同步Mysql数据到Hive如何批量生成建表语句?| 基于SQL实现

目录 一、需求 二、实现步骤 1.数据类型转换维表 2.sql批量生成建表语句 三、小结 如果觉得本文对你有帮助&#xff0c;那么不妨也可以选择去看看我的博客专栏 &#xff0c;部分内容如下&#xff1a; 数字化建设通关指南 专栏 原价99&#xff0c;现在活动价39.9&#x…

前端使用xlsx-js-style导出Excel,带样式,并处理合并单元格边框显示不全和动态插入表头解决

一、在学习之前&#xff0c;先给出一些学习/下载地址&#xff1a; xlsx-js-style下载地址 https://github.com/gitbrent/xlsx-js-style 或者 https://www.npmjs.com/package/xlsx-js-style SheetJS中文教程&#xff1a; https://xlsx.nodejs.cn/docs/csf/cell 二、先看样…

双指针---(部分地更新)

双指针 复写零 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改&#xff0c;不要从函数返回任何东西。 …

Tableau 瀑布图应用示例

通过探索 10 个示例&#xff0c;将瀑布图的应用拓展到更深层次的业务分析&#xff01; 作为一种直观展示数据变化的图表&#xff0c;瀑布图被广泛应用在业务分析中。同时&#xff0c;借助 Tableau 2024.2 中的 Viz Extensions&#xff0c;如今我们可以快速在 Tableau 中实现瀑布…

Vue3-TS-Lodash:理解Lodash / 常用方法积累

一、Lodash官网 Lodash 简介 | Lodash中文文档 | Lodash中文网 二、理解Lodash Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。它提供了大量的函数来帮助你处理数组、数值、对象、字符串等&#xff0c;使你的代码更加简洁、易读和高效。Lodash 的设计哲学是…

25基于python的文本冒险岛游戏(源码+游戏简介+python代码学习攻略)校园招聘面试

基于python的文本冒险岛游戏&#xff08;源代码游戏简介python代码学习&#xff09;资源-CSDN文库https://download.csdn.net/download/m0_72216164/89817518 开头附上工作招聘面试必备问题噢~~包括综合面试题、无领导小组面试题资源文件免费&#xff01;全文干货。 工作招聘无…

HarmoneyOS--Ability(能力)、窗口、通知

标题 文章目录 一、什么是Ability?二、使用步骤(单例和多例)三、窗口四、通知 一、什么是Ability? 开发模式提供的开发功能抽象的描述。 其中重要的是UiAbility,界面组件能力,负责所有界面的处理。 通过配置可以变更单例,多例,指定实例,在module.json5中进行配置 如: 单例:l…

FreeRTOS的中断管理

前言 FreeRTOS的任务有优先级&#xff0c;MCU的硬件中断有中断优先级&#xff0c;这是两个不同的概念&#xff0c;FreeRTOS的任务管理要用到硬件中断&#xff0c;使用FreeRTOS时候也可以使用硬件中断&#xff0c;但是硬件中断ISR的设计要注意一些设计原则&#xff0c;在本节中我…

RVC变声器入门

主要参考资料&#xff1a; RVC变声器官方教程&#xff1a;10分钟克隆你的声音&#xff01;一键训练&#xff0c;低配显卡用户福音&#xff01;: https://www.bilibili.com/video/BV1pm4y1z7Gm/?spm_id_from333.337.search-card.all.click&vd_sourcedd284033cd0c4d1f3f59a2…

RocketMQ消息发送之广播模式

前言 在前面的文章中我们回顾了RocketMQ的顺序消息和乱序消息&#xff0c;以及里面包含的乱序消息和全局消息&#xff0c;RocketMQ支持多种消息类型和消费模式 今天这篇文章主要介绍RocketMQ的广播消息。希望文章能为正在学习RocketMQ相关知识的大佬们提供帮助&#xff01; 广…