【MySQL】常用存储引擎,数据库管理,数据表管理,数据库账户管理

news2024/11/18 20:00:15

目录

一 常用的数据引擎(4)

1.1 InnoDB存储引擎

1.2 MyISAM存储引擎

1.3 Memory存储引擎

1.4 ARCHIVE存储引擎

二 数据库管理

2.1 元数据库概念与分类

2.2 相关操作命令

三 数据表的管理

3.1 三大范式

3.2 数据类型

四 数据库账户管理

五 思维导图 


一 常用的数据引擎(4)

        数据库存储引擎是数据库底层软件组织,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引机制、锁定水平等功能。不同的存储引擎,都有其特定的功能及特定应用场景

可以进入Navicat中查看存储引擎

存储引擎查看命令: SHOW ENGINES

字段说明: default 为默认存储引擎。 YES表示可以使用。NO表示不能使用

1.1 InnoDB存储引擎

        InnoDB是事务性数据库首选引擎,也叫默认存储引擎。InnoDB从Mysql5.5.5开始就成为数据默认的存储引擎,是MySQL8.0之后最重要,使用最广泛的存储引擎。支持事务安全(ACID),支持行锁定和外键

InnoDB主要的特性:

  • 存储限制:64TG
  • 速度:删除与修改效率更高
  • 事务支持:支持 ACID事务,这意味着它可以提供高可靠性和数据完整性
  • 行级锁定:使用行级锁定来允许多个事务并发访问数据,这有助于提高并发性能。
  • 外键约束:支持外键约束,这有助于保持数据的一致性和完整性。
  • MVCC(多版本并发控制):InnoDB使用MVCC来支持高并发访问,同时减少锁的竞争。
  • 聚集索引:InnoDB采用聚集索引的架构,这意味着数据实际上是存储在主键索引中。这有助于提高某些查询的性能,但也意味着你不能更改一个已经存在的表的主键。
  • 数据压缩:InnoDB支持数据压缩,这有助于节省存储空间并提高某些查询的性能。
  • 崩溃恢复:有一个日志文件,可以用来恢复崩溃后可能丢失的数据。
  • 支持多种存储引擎:虽然InnoDB是MySQL的默认存储引擎,但MySQL也支持其他存储引擎,如MyISAM和Memory。这意味着你可以根据特定的使用情况选择最合适的存储引擎。
  • 支持多种隔离级别:InnoDB支持SQL标准的四种隔离级别(READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE)。
  • 自动提交:在InnoDB中,如果没有明确指定,事务会自动提交。

1.2 MyISAM存储引擎

          MyISAM基于ISAM存储引擎,并对其进行扩展。在 Web,数据仓储和其他应用环境使用的存储引擎较多。MyISAM拥有较高的插入、查询速度,但不支持事务和外键

MyISAM的主要特性:

  • 不支持事务
  • 存储限制:256TG
  • 表级锁定:在MySQL中,MyISAM存储引擎中,当发生数据更新时,会锁定整个表,以防止其他会话对该表中数据的同时修改所致的混乱。这样做可以使得操作简单,但是会减少并发量
  • 读写相互阻塞:在MyISAM类型表中,即不可以在向数据表中写入数据的同时另一个会话也向该表写入数据,也不允许其他的会话读取该表中的数据。只允许多个会话同时读取该数据表中的数据
  • 只会缓存索引,不会缓存数据:缓存,是指数据库在访问磁盘数据时,将更多的数据读取进入内存,这样可以使得当访问这些数据时,直接从内存中读取而不是再次访问硬盘。MyISAM可以通过key_buffer_size缓存索引,以减少磁盘I/O,提升访问性能。MyISAM数据表并不会缓存数据。
  • 读取速度较快,占用资源较少;
  • 不支持外键约束;
  • 支持全文索引;

MyISAM适用场景:

  • 数据字典,系统参数
  • 不需要事务支持的场景
  • 读取操作比较多,写入操作较少(很少修改经常查询的数据)
  • 数据并发较低的场景;
  • 硬件条件比较差的场景;
  • 在配置数据库读写分离场景下,从库可以使用MyISAM索引

1.3 Memory存储引擎

      MySQL中Memory存储引擎是一个置于内存中的表,其采用的存储介质是内存。响应速度很快。但是当MySQL守护进程崩溃的时候数据会丢失。Memory存储引擎是存储的数据类型是长度不变的类型,blob/text类的数据类型不可用

Memory的主要特性:

  • 存储瞬时非关键数据;
  • 存储限制:取决于RAM(随机存储器)’
  • 不支持事务
  • 内存存储,可实现快速访问和低延迟
  • 只读或读取是主要数据访问模式:每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件中只存储表的结构。而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率。值得注意的是,服务器需要有足够的内存来维持MEMORY存储引擎的表的使用。如果不需要了,可以释放内存,甚至删除不需要的表。
  • 支持数据类型有限:不支持Text和Blob数据类型,对于字符串类型的数据,只支持固定长度的行,VARCHAR会被自动存储为CHAR类型。
  • 支持表级锁:在访问量比较大时,表级锁会成为MEMORY存储引擎的瓶颈查询中存在临时表且表中有BLOB、TEXT类型的字段,那么在这个临时表会自动转化为MyISAM类型的表。性能会急剧降低
  • 默认索引使用Hash索引
  • 内存表特别大时,自动转换为MyISAM类型实体表

应用场景:一般存储在视图和缓存的数据

1.4 ARCHIVE存储引擎

         ARCHIVE存储引擎主要用于存储大量的归档数据,如历史数据或安全审计信息

ARCHIVE的主要特性:

不支持事务:ARCHIVE不支持事务处理,这意味着它不能提供ACID事务的保证

不支持索引(自增ID列除外)

高压缩率:ARCHIVE存储引擎采用了较高的压缩比,可以大大减少存储空间的需求,使大量历史数据得以高效地存储。

只支持INSERT和SELECT操作:ARCHIVE不支持DELETE、UPDATE等其他操作,这有助于保持数据的一致性和完整性。

行级锁定机制:ARCHIVE使用行级锁定来允许多个事务并发访问数据,提高并发性能。

适用于历史数据存储:由于其高压缩率和只支持INSERT和SELECT操作的特性,ARCHIVE非常适合存储大量的历史数据或归档信息。

使用场景:只允许插入和查询,不允许删除和修改,压缩存储节约空间,如日志记录、审计跟踪等。

二 数据库管理

2.1 元数据库概念与分类

     简单来说就是在创建一个数据库的时候自身会创建本身会带的数据库,主要有三种数据库

information_schema元数据库:信息数据库,保存mysql所维护的其他数据库信息,包含了关于    数据库实例中所有数据库、表、列、索引、约束等的结构信息

mysql元数据库:核心数据库,user,db,tables_priv,columns_priv这些表中,主要负责存储数据库的用户,权限设置,关键字等

user表:用户管理权限

db表:数据库层权限

tables_priv表:表层权限

columns_priv表:字段层权限

performance_schema元数据库:mysql监控数据的存放

2.2 相关操作命令

use 数据库名  (使用数据库)

create database 数据库名  (创建数据库)

show databases   (查看所有数据库)

drop database 数据库名  (删除数据库)

三 数据表的管理

3.1 三大范式

第一范式:列不可再分(原子性)

     属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列)

第二范式:主键约束

       满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分)

第三范式:外键约束

          满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B ->C, A -> C)

3.2 数据类型

整数:

           tinyint 8位(-128~127)

           smallint 16位(-32768~ 32767)

           mediumint 24位 (-8388608~ 8388607)

           int 32位  大约正负21亿

           bigint 64位

实数(带有小数点):

   float 4个字节

   double 8个字节

   ecimal 最多允许65个数字

字符串:

CHAR:

定长字符串。长度范围是 0 到 255 个字符。
如果存储的字符串长度小于定义的长度,MySQL会用空格填充剩余的空间


VARCHAR:

变长字符串。长度范围是 0 到 65,535 个字符。
只存储实际需要的字符,不会用空格填充。
频繁修改且字符串变化长度大时,可能会出现页分裂

text&blob  

text存储字符数据:tinytext,smalltext,mediumtext,text,longtext

blob存储二进制数据:  tinyblob,smallblob,mediumbolb,blob,longblob

日期时间:

 datetime:精度秒 8个字节的存储空间   范围在1001年-9999年

timestamp: 1970.1.1后的秒数  占用4个字节空间    1970-2038年  时区有关

 date: yyyy-MM-dd

 time:  HH:mm:ss

选择标识符:

① 用来进行关联操作

② 在其他表作为外键

③ 整形通常是标识列最好选择

④ 相关的表中使用相同的数据类型

⑤ 避免字符串作为标识列,不然insert与select慢影响效率

四 数据库账户管理

用户的管理权限

SELECT user,`Host` FROM `user` 

    

create user Bing identified by'123'

grant SELECT on his.t_book to Bing@'%';

grant UPDATE on his.t_book to Bing@'%';

revoke UPDATE on his.t_book from Bing@'%';

show grants for 'Bing'@'%';

show databases

图解命令意思:

五 思维导图 

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

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

相关文章

Mac环境下Parallels Desktop 19的安装和使用

为了后续构建漏洞靶场和渗透测试环境,我们需要提前准备好几套与宿主机隔离的工作环境(Windows、Linux等),在Mac上最常用的就是Paralles Desktop(PD)工具了,当前最新版本为19。接下来介绍如何安装…

PDF控件Spire.PDF for .NET【安全】演示:获取并验证 PDF 中的数字签名

在 PDF 中创建数字签名广泛用于保护 PDF 文件。因此,当您查看一些带有数字签名的PDF文件时,需要获取并验证数字签名。本文向您展示了一种通过使用Spire.PDF和 C# 代码来获取和验证 PDF 中的数字签名的解决方案。 Spire.PDF for .NET 是一款独立 PDF 控件…

第二证券:停牌意味着什么?

股票停牌的原因? 一般来说,股票停牌的原因可以分为以下几类: 1、上市公司有严峻情况变化,如企业并购、重组等,为了确保生意顺利完成和信息宣布的及时、充分、准确,避免商场出现信息不对称的情况&#xff…

javascript 常见工具函数(五)

41.深度拷贝对象: static deepCopyObj$(obj) {var result Array.isArray(obj) ? [] : {};for (var key in obj) {if (obj.hasOwnProperty(key)) {if (typeof obj[key] object && obj[key] ! null) {result[key] Utils$.deepCopyObj$(obj[key]); //递归…

门店管理井然有序的秘诀,就在这1888字里

门店管理是一款帮助企业提高线下门店管理效率的应用,适用于所有拥有实体连锁门店的行业,如:连锁服饰、商超、数码产品、连锁餐饮等。 门店管理常见痛点 线下连锁门店的管理受位置、时间等因素影响,总部管理鞭长莫及; …

外贸自建站和独立站的区别?海洋建站方法?

外贸自建站和独立站的异同点?怎么建跨境电商网站? 越来越多的外贸企业开始关注和选择建立自己的网站来进行产品推广和销售。然而,在外贸建站领域中,存在两种常见的类型:外贸自建站和独立站。那么,这两者之…

Android Studio如何创建尺寸大小及API通用的模拟器

目录 前言 一、操作步骤 二、总结 三、更多资源 前言 在开发移动应用程序的过程中,使用模拟器进行测试是一种常见和方便的方式。Android Studio是一款功能强大的集成开发环境,它提供了创建和管理模拟器的功能。在本文中,我们将介绍如何创…

面向对象(类和对象,对象内存图,成员变量和局部变量,封装,构造方法)

1. 类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象类是对象的数据类型,类是具有相同属性和行为的一组对象的集合简单理解:类就是对…

C++的基础语句

C前奏 1.变量的定义2.键入和输出3.运算符4.sizeof()函数5.判断6.goto语句7.总结 这个专题,我会用简单的语言介绍C的语法,并会适当的对比实现相同或相似功能的C与python代码写法上的不同。 1.变量的定义 对于python来说,我们可以跳过定义直接…

python统计分析——直方图(plt.hist)

使用matplotlib.pyplot.hist()函数绘制直方图 from matplotlib.pyplot as pltdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) 下面介绍plt.hist()函数中常用的几个重要参数(参数等号后为默认设置): (1&#xff0…

从C++习题中思考

目录 一.开始1.1 二.变量和基本类型 C Peimer习题集第5版练习。 一.开始 1.1 编写程序&#xff0c;提示用户输入2个整数&#xff0c;打印出这两个整数指定的范围内的所有整数。 方式1&#xff1a;使用while循环。 #include<iostream> using namespace std; int main() …

RA4000CE (RTC模块)适用于汽车,工作温度范围宽,稳定性高

RA4000CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块&#xff0c;适用于汽车&#xff0c;工作温度范围宽&#xff0c;稳定性高。它包括各种功能&#xff0c;如具有闰年校正的秒到年时钟/日历&#xff0c;时间警报&#xff0c;唤醒计时器&#xff0c;时间更新…

深入了解隧道代理HTTP的协议与技术细节

隧道代理HTTP&#xff0c;作为一种网络通信的桥梁技术&#xff0c;其背后的协议与技术细节承载着网络世界的无尽奥秘。对于技术人员而言&#xff0c;深入了解这些细节&#xff0c;不仅有助于优化网络性能&#xff0c;还能为网络安全提供坚实的保障。 一、隧道代理HTTP的协议基…

QQ邮件发送(PHP的Laravel)

1. 开启 QQ 邮箱的 SMTP 支持 2.里面会一个类似于密码之类&#xff08;复制一下&#xff09; 3.然后再 .env文件里面配置一下 MAIL_DRIVERsmtp —— 使用支持 ESMTP 的 SMTP 服务器发送邮件&#xff1b; MAIL_HOSTsmtp.qq.com —— QQ 邮箱的 SMTP 服务器地址&#xff0c;必…

MySQL之四大引擎、账号管理以及建库认识

目录 一、数据库存储引擎&#xff08;发动机&#xff09; 1.1、认识引擎 1.2、查看存储引擎 1.3、引擎常识 1.4、support字段说明 1.5、四大引擎 二、数据库管理 2.1、元数据库介绍&#xff1a; 2.2、分类&#xff1a; 2.3、增删改查以及使用操作 2.4、权限 三、数…

【docker】安装 Redis

查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…

八大算法排序@希尔排序(C语言版本)

目录 希尔排序概念算法思想示例分析结论算法步骤选择增量序列按增量分组逐步缩小增量 算法优势 代码实现核心算法希尔排序代码实现&#xff1a; 时间复杂度空间复杂度特性总结 该排序会关联到直接插入排序的知识点&#xff0c;如果对于直接插入排序还有所疑惑&#xff0c;可以跳…

Android studio ViewPager2 底部圆点指示器应用设计

一、activity_main.xml布局文件&#xff1a; <androidx.viewpager2.widget.ViewPager2android:id"id/viewpager2"android:layout_width"403dp"android:layout_height"442dp"app:layout_constraintEnd_toEndOf"parent"app:layout_c…

基于YOLOv8深度学习的人脸面部表情识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

基于Python +Selenium的爬虫详解

今天我们来详细学习一些 selenium 的强大用法 一、selenium简介 由于requests模块是一个不完全模拟浏览器行为的模块&#xff0c;只能爬取到网页的HTML文档信息&#xff0c;无法解析和执行CSS、JavaScript代码&#xff0c;因此需要我们做人为判断&#xff1b; 1、什么是sele…