mysql体系结构及引擎

 

目录

 

一、mysql体系结构

 二、存储引擎简介

2.1查看当前数据库支持的存储引擎

三、存储引擎的特点

3.1innodb

3.2myisam

3.3memory

四、存储引擎的选择


一、mysql体系结构

 连接层
 最上层是一些客户端和连接服务,主要完成一些类似于连接处理,授权认证,及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限;
 服务层
 第二层架构主要完成大多数的核心服务功能,如sql接口,并完成缓存的查询,sql的分析和优化,部分内置函数的执行,所有跨存储引擎的功能也在这一层实现,如过程、函数等;
 引擎层
 存储引擎真正的负责了mysql中数据的存储和提取,服务器通过api和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的引擎;
 存储层
 主要是将数据存储在文件系统之上,并完成与引擎的交互。

 二、存储引擎简介

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

2.1查看当前数据库支持的存储引擎

show engines;

三、存储引擎的特点

3.1innodb

innodb是一种兼顾可靠性和高性能的通用存储引擎,在mysql5.5之后,innodb是默认的mysql存储引擎

innodb的特点

DML操作遵循ACID模型,支持事务;
行级锁,提高并发访问性能;
支持外键foreign key约束,保证数据的完整性和正确性;

innodb的文件

xxx.ibd:xxx代表的是表名,innodb引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。

3.2myisam

myisam是MySQL最早期的默认存储引擎。

myisam特点

不支持事务,不支持外键;
支持表锁,不支持行锁;
访问速度快。

myisam文件

xxx.sdi:存储表结构信息
xxx.myd:存储数据
xxx.myi 存储索引

3.3memory

menmory引擎的表数据是存储在内存中的,由于受到硬件问题,或断电问题的影响,只能将这些表作为临时表或缓存使用。

memory的特点

内存存放
hash索引(默认)

文件

xxx.sdi:存储表结构信息

四、存储引擎的选择

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


innodb:是mysql的默认存储引擎,支持事务,外键,行级锁。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询外,还包含很多的更新、删除操作,那么innodb存储引擎比较合适。

myisam如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎非常合适。

memory:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。memory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

        难才有意思,just do it!

        自由的前提是自律,自律的顶端是享受,愿你以渺小启程,以伟大结局;

        希望我们都能成为自由又自律的人。

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

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

相关文章

C- 使用原子变量实现自旋锁

自旋锁 自旋锁(Spinlock)是一种常用于多线程编程中的低开销锁,其特点是当线程尝试获取锁而锁已被其他线程占用时,该线程会处于一个持续的忙等待(busy-wait)状态,直到它可以获取到锁为止。这种方…

哈夫曼树的建立(C++,最优树)

介绍: 哈夫曼树(Huffman Tree)是一种用于数据压缩的树形数据结构。它是由刚特哈夫曼于1952年发明的。 哈夫曼树的特点是:对于一个长度为n的字符集,它可以将每个字符在树上表示为一个唯一的二进制编码。在哈夫曼树中&am…

NSSCTF做题(10)

叫10好听一点,就是补9的 第7页的内容 [SWPUCTF 2022 新生赛]ez_sql get传参说是不安全,那就只能用post了 有回显了,两个假的flag 发现万能密码 1 or 11#变成了 11# 11# 1 11#1# 11# 11# 发现or和空格都无了,union也过滤 …

golang的json转pb验证

基于这篇文章的最后一个代码进行验证。 https://blog.csdn.net/mijichui2153/article/details/133894403?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22133894403%22%2C%22source%22%3A%22mijichui2153%22%7D 1、准备 &…

Python新手常犯的8个错误,你中招了吗?

我们都知道Python是一门非常流行和强大的编程语言,而作为一个刚入门Python编程的新手,你可能会犯一些常见的错误,这些错误可能会阻碍你的学习和项目进展。 如何避免这些常见的错误呢?在本文中,小编将为你介绍8个新手P…

OJ第四篇

文章目录 链表分割环形链表有效的括号 链表分割 链接: 链表分割 虽然这个题牛客网中只有C,但是无所谓,我们只要知道C是兼容C的就可以了 至于说这个题的思路,我们就弄两个链表,把小于x的结点放到一个链表中,剩下的放到另一个链表…

群狼调研(长沙社情民意调查) | 残疾人服务满意度调查流程

以下是一个基本的残疾人服务满意度调查流程,可以根据实际情况进行调整和修改: 1. 制定调查目标和范围:明确调查的目标、范围和重点,确定需要评估的服务类型和方面。 2. 制定调查计划:确定调查的时间表、预算、人员分…

【c#】Quartz开源任务调度框架学习及练习Demo

Quartz开源任务调度框架学习及练习Demo 1、定义、作用 2、原理 3、使用步骤 4、使用场景 5、Demo代码参考示例 6、注意事项 7、一些Trigger属性说明 1、定义、作用 Quartz是一个开源的任务调度框架,作用是支持开发人员可以定时处理业务,比如定时…

Python常用视频编辑操作——读取与保存视频、更改帧数、拼接视频、视频语音合并、视频与图像互转等

1.更改视频帧数 降低视频帧数,简单的操作只能降低视频帧数,如果要增加视频帧数,那就要使用深度学习进行插帧处理: import cv2 from moviepy.editor import * def change_fps(inpt_path,output_path,fps):# 加载视频video Video…

python实现TCPclient

python实现TCPclient是一件简单的事情,只要通过socket这个模块就可以实现。 一、实现步骤 1、导入模块: 首先,你需要导入Python的socket模块。 import socket2、创建Socket对象: 使用socket.socket()函数创建一个新的socket对…

Flink学习---15、FlinkCDC(CDC介绍、案例实操)

星光下的赶路人star的个人主页 未来总是藏在迷雾中让人胆怯,但当你踏入其中,便会云开雾散 文章目录 1、CDC简介1.1 什么是CDC1.2 CDC的种类1.3 Flink-CDC 2、FlinkCDC案例实操2.1 开启MySQL Binlog并重启MySQL2.2 FlinkSQL方式的应用2.2.1 导入依赖2.2.2…

Elasticsearch2.x Doc values

文档地址: https://www.elastic.co/guide/en/elasticsearch/reference/2.4/doc-values.html https://www.elastic.co/guide/en/elasticsearch/guide/2.x/docvalues-intro.html https://www.elastic.co/guide/en/elasticsearch/guide/2.x/docvalues.html https://ww…

【Java 进阶篇】HTML DOM 事件详解

当用户在网页上点击按钮、输入文本、鼠标移动到某个区域或执行其他互动操作时,这些动作都可以触发事件。HTML DOM(文档对象模型)允许我们使用JavaScript来捕获、处理和响应这些事件,以实现网页的交互和动态性。本篇博客将围绕HTML…

iOS原生、Android 原生, flutter 三种方式给照片流添加文字(水印)

效果图:三中代码实现的效果差不多 Swift:代码 import UIKitclass ImageWatermarking: NSObject {static func textToImage(drawText text: String, inImage initImage: UIImage, atPoint point: CGPoint) -> UIImage {let textColor = UIColor.whitelet textFont = UIFon…

ccpc2023秦皇岛F. Mystery of Prime(dp)

题目要求改变数组中的数字使相邻数字之和是质数,同时改变数字的次数最少 因为改变的数字可以无穷大 我假设当一个数改变为一个某一个偶数时,他周围的任意的奇数肯定能和他相加变成质数 当一个数变为某一个大于1的奇数时,他周围任意偶数肯定…

港联证券:资金融通构成强支撑 “一带一路”金融合作开新局

本年是共建“一带一路”主张提出十周年。经过十年打开,共建“一带一路”从夯基垒台、立柱架梁到落地生根、持久打开,已成为打开包容、互利互惠、协作共赢的国际协作途径。“资金融通”作为首份“一带一路”白皮书提出的“五通”之一,定位为“…

DPDK收发包流程分析

一、 前言 DPDK是intel工程师开发的一款用来快速处理数据包的框架,最初的目的是为了证明传统网络数据包处理性能低不是intel处理器导致的,而是传统数据的处理流程导致,后来随着dpdk的开源及其生态的快速发展,dpdk成为了高性能网络数据处理的优秀框架。本篇文章主要介绍DPDK…

Django实现音乐网站 ⒇

使用Python Django框架做一个音乐网站, 本篇音乐播放器-添加播放音乐功能实现。 目录 创建播放器数据表 设置表结构 执行创建表 命令 执行 数据表结构 添加单个歌曲 创建路由 加入播放器视图 模板处理 基类方法 子页面调用 优化弹窗 加入layui文件 基…

在URP管线中添加ShaderMaterial自定义GUI的方法

编写GUI面板 1. 新建GUI子面板 using UnityEngine; using UnityEngine.Rendering;namespace UnityEditor.Rendering.Universal.ShaderGUI {internal class CP_XXXOutLineGUI{public static class Styles{}public struct LitProperties{public LitProperties(MaterialProperty…

vxe-table添加排序

在 <vxe-column> 中添加sortable属性 <vxe-columnfield"longitude"sortabletitle"经度"></vxe-column><vxe-columnfield"latitude"sortabletitle"纬度"></vxe-column><vxe-columnfield"dateEst…