MySQL进阶 -存储引擎

目录

  • 存储引擎
    • MySQL的体系结构
    • 存储引擎简介
    • InnoDB存储引擎
    • MyISAM存储引擎
    • Memory存储引擎
    • InnoDB,MyISAM和Memory的区别
    • 存储引擎的选择
    • 小结

存储引擎

MySQL的体系结构

  • MySQL的体系结构图:
    在这里插入图片描述
    MySQL服务端的体系结构(MySQL Server):
    分层,分为连接层,服务层,存储引擎层,存储层。

  • 连接层:
    主要是接收客户端的连接,完成一些连接处理,以及一些认证授权的操作(例如用户的登录等),一些安全方案,检查是否超过最大连接数等

  • 服务层:
    绝大多数核心功能都是在服务层完成的,像SQL接口,查询解析器,查询优化器,查询缓存,所有的跨存储引擎的实现也都是在服务层完成的

  • 存储引擎层:
    MySQL本身提供了很多的存储引擎,如果感觉不行还可以进行扩展,存储引擎控制的就是MySQL中数据提取和存入的方式,服务器会通过API和存储引擎进行通信,交互,索引就是在存储引擎层实现的,不同的存储引擎索引的结构是不一样的

  • 存储层:
    数据存储的地方

在这里插入图片描述

存储引擎简介

存储引擎是MySQL中特有的

存储引擎就是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于的,而不是基于库,所以存储引擎也可被称为表类型

一个数据库下的多张表可以选择不同的存储引擎

MySQL默认的存储引擎是InnoDB

查询建表语句:

show create table 表名;-- 可以查询到建立这张表的SQL语句
show create table account;CREATE TABLE `account` (`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',`name` varchar(10) DEFAULT NULL COMMENT '姓名',`money` int DEFAULT NULL COMMENT '储蓄',PRIMARY KEY (`id`)
) 
ENGINE=InnoDB -- 默认存储引擎InnoDB
AUTO_INCREMENT=3 -- 自增的下一个id值
DEFAULT CHARSET=utf8mb4 -- 当前表的字符集
COLLATE=utf8mb4_0900_ai_ci -- 默认排序方式
COMMENT='账户表'
  • 创建表时指定存储引擎:
CREATE TABLE 表名(字段1 字段1类型 [COMMENT 字段1注释],......字段n 字段n类型 [COMMENT 字段n注释]	
)ENGINE=INNODB[COMMENT 表注释] -- 这里engine后跟的就是存储引擎名create table 表名(字段1 字段1类型 [comment 字段1注释],......字段n 字段n类型 [comment 字段n注释]	
)engine=innodb[comment 表注释] -- 这里engine后跟的就是存储引擎名
  • 查看当前数据库支持的存储引擎:
SHOW ENGINES;show engines;

练习:

create table my_myisam(id int primary key auto_increment comment 'ID',name varchar(10) comment 'name'
)engine =myisam;
show create table my_myisam;CREATE TABLE `my_myisam` (`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',`name` varchar(10) DEFAULT NULL COMMENT 'name',PRIMARY KEY (`id`)
) ENGINE=MyISAM 
DEFAULT CHARSET=utf8mb4 
COLLATE=utf8mb4_0900_ai_ci

InnoDB存储引擎

InnoDB存储引擎是MySQL中一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB就是MySQL的默认存储引擎;

  • InnoDB的特点:
    1.InnoDB的DML操作遵循ACID(事务的四大特性)模型,支持事务。

    2.行级锁,提高并发访问性能

    3.支持外键FOREIGN KEY(foreign key)约束,保证数据的完整性和正确性

    用三个词概括就是:事务,外键,行级锁

  • InnoDB引擎所涉及到的磁盘文件:
    在InnoDB中,每一个表都会对应一个表空间文件(xxx.ibd,xxx是表名),这个文件会存储该表的:表结构(frm,sdi),数据和索引

    此外还有一个参数:innodb_file_per_table
    这个参数可以决定是多张表共用一个表文件还是一张表对应一个表文件,打开就代表一张表对应一个表文件,关闭相反,MySQL默认打开

    查看参数innodb_file_per_table的状况:

    show variables like 'innodb_file_per_table';
    

    使用指令:idb2sdi 表名.idb可以查看idb文件的情况

  • InnoDB引擎的逻辑存储结构
    主要分为5段:
    1.TableSpece:表空间
    2.Segment:段
    3.Extent:区
    4.Page:页
    5.Row:行
    在这里插入图片描述

MyISAM存储引擎

MyISAM是MySQL早期的默认存储引擎

  • MyISAM存储引擎特点:
    1.不支持事务,不支持外键

2.支持表锁,不支持行锁

3.访问速度块

  • MyISAM存储引擎所涉及到的磁盘文件
    有三个:xxx.MYD, xxx.MYI, xxx.sdi(xxx是表名)

    MYD:存储数据
    sdi:存储表结构信息
    MYI:存储索引

Memory存储引擎

Memory存储引擎的表数据存放在内存中,由于数据存放在内存中,所以会收到硬件或断电问题的影响,这些影响可能会导致数据丢失,所以,使用Memory存储引擎的表一般当作临时表或缓存使用

  • Memory存储引擎的特点:
    1.数据存放在内存中。访问速度块

    2.默认是hash索引

  • Memory存储引擎所涉及到的磁盘文件
    只有xxx.sdi文件,用来存放表的结构信息,表的数据等信息都存放在内存中

InnoDB,MyISAM和Memory的区别

在这里插入图片描述

存储引擎的选择

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎,对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合

  • InnoDB的应用场景
    如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新,删除操作,那么使用InnoDB存储引擎是比较合适的选择,例如:业务中的日志数据,电商中评论和足迹等

  • MyISAM的应用场景
    如果应用是以读取操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择MyISAM是很合适的

  • Memoey的应用场景
    因为Memoey将数据存放在内存中,访问速度块,所以常用于临时表和缓存,Memory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性

绝大多数使用的存储引擎还是InnoDB,后面两个都被新的数据库的存储引擎给替代了

小结

在这里插入图片描述

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

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

相关文章

Scala基本语法

1.注释 Scala注释使用和Java完全一样。 注释是一个程序员必须要具有的良好编程习惯。 将自己的思想通过注释先整理出来,再用代码去体现。 基本语法 单行注释:// 多行注释:/* */ 文档注释: /** * */ 2.变量和常量 基本语法 va…

python识别图片中的文字、数值并转文档

最近工作中有把图片中的文字和数字识别出来的需求,但是网上的图片转excel有些直接收费,有些网址每天前几次免费,后续依然要收费。想着趁周末有时间,倒腾一下,如果后续这种需求多的话,可以节省一点成本&…

提取图片文字,python三行代码足矣!

文章目录 一、提取图片文字1、代码及运行成果2、库的安装及一些问题的解决方案 二、Blogger’s speech 身处数据爆炸增长的信息时代,各种各样的数据都飞速增长,以图片的形式出现的数据更是数不胜数。有时候,我们想要提取图片中的文字&#xf…

Python图像处理之识别图像中的文字

①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install pytesseract ④安装autopy3: 先安装wheel:pip install wheel …

【C++入门】auto关键字 与 基于范围的for循环(C++11)

目录 引言 类型别名的思考 一、概念 二、使用细则 1.auto与指针和引用结合起来使用 2.在同一行定义多个变量 三、auto不适用的场景 基于范围的for循环(C11) 一、范围for的语法 二、使用条件 1.for循环迭代的范围必须是确定的 2.迭代的对象要实现…

如何用Python识别图片中的文字?

如何用Python识别图片中的文字? 转:https://mp.weixin.qq.com/s/wXDJoAAI8y1mtbUuwATngQ 以下文章来源于微信公众号:新建文件夹X ,作者ZackSock 新建文件夹X 大自然用数百亿年创造出我们现实世界,而程序员用几百年…

【Python案例】OCR提取图片中的文字

很多软件内置了OCR功能,即图片提取文字功能。有些是免费提供给大家使用,但有些是收费的。不管是免费的还是收费的,终究逃离不了隐私问题。用别人的OCR,总得把图片传到对方的服务器。今天我们使用Python开发一个OCR软件&#xff0c…

python写一个自动识别图片提取文字

python写一个自动识别图片提取文字。 ** 1.介绍 使用python写一个自动识别图片提取文字的exe. 进行图像的文字识别,将图像中的文字提取出来,可以帮助我们完成很多有趣的事情。 准备工作 import keyboard #安装: pip install keyboard fr…

基于Tesseract模块Python实现提取图片中的文字信息(安装+使用教程)

Python实现提取图片中的文字可以使用Optical Character Recognition (OCR) 技术来解决。OCR是指将图像中的文本转换成可编辑的文本的过程。Python有许多OCR库,但最流行和最广泛使用的是Tesseract库。 下面是一个使用Python和Tesseract来提取图像中的文本的简单示例…

Python图片文字提取

图片信息现在越来越广泛的存在于我们的日常生活中,获取图片内的文字信息也渐渐的成为当今生活中的需求,在学习完Python的基础知识后,本小白以此语言为工具,使用百度提供的图像识别接口来实现简单的图片文字提取(承蒙各…

pytesseract提取识别图片中的文字

目录 1、获取tesseract版本号 2、获取语言包列表 3、识别图片中的文字 4、获取图片中文字的详细信息 5、识别图片中的文字和位置 6、识别osd信息 7、识别并生成xml文件 避坑指南: pytesseract是对Tesseract-OCR命令行的封装,实际上底层调用的还是…

python 图片文字提取

转载:python怎么读取png(python 图像处理)-天道酬勤-花开半夏 图像处理不是一件简单的工作。 对你来说,一看到某样东西,马上就知道你在看什么很容易。 但是,电脑不是这样工作的。 对你来说太难的任务,比如复杂的算术&a…

用Python提取图片截图中的文字

《用Python“破解”某度文库等文库复制的限制》 tips:当个标题党真刺激啊 开发背景 临近期末,CYooQ要写许多作业。迫不得已寻找度娘解决问题,找到之后,CYooQ习惯性地ctrlc,当ctrlv时发现,emmm!?没有啊!仔…

Python利用OCR提取图片中的文字

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 Python利用OCR提取图片中的文字 很多软件内置了OCR功能,即图片提取文字功能。有些是免费提供给大家使用,但有些…

如何使用Python从图片中提取文字?

目录 Python图片识别文字一、Tesseract下载及安装二、配置环境变量三、代码部分 Python图片识别文字 一、Tesseract下载及安装 下载链接 Index of /tesseract. 点击下载适合电脑配置的最新版本 下载完成并开始安装 选择默认英文 点击下一步 点击我同意 点击为任何使用计算机…

Redis事务详解

目录 一、前言二、Redis事务 - 基本使用三、Redis事务 - 错误处理四、Redis事务 - 事务冲突1、事务所产生的问题2、悲观锁&乐观锁3、watch监听4、watch的应用场景 五、Redis 事务特性 一、前言 事务是指一个完整的动作,要么全部执行,要么什么也没有…

python--识别图片中的文字

本篇文章主要参考了 python图像处理之识别图像中的文字 这篇文章,在实现的过程中出现了些偏差,特此记录。因为此时笔者不是第一次安装,所展示的结果会和首次安装的结果有所差别。 1.安装PIL 以管理员的身份打开命令提示符,输入&…

【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR

【Python例】利用 python 进行图片文字信息的提取 — OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成。 什么是 OCR? OCR OCR(Optical character recognition,光学字符识别)是一种将图像中的…

Python提取图片中的文字信息

Python提取图片中的文字信息 使用的Python库 Python tesseract是Python的一个光学字符识别(OCR)工具。也就是说,它将识别并“读取”嵌入图像中的文本。 Python tesseract是Google tesseract OCR引擎的包装器。它还可用作tesseract的独立调…

Python识别图片中的文字

Python识别图片中的文字 一、前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制。或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存。但是…