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

MySQL数据库引擎

前言:本篇博文主要记录尚硅谷的MySQL视频<<MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!>>中P113-114节视频笔记。

视频链接:https://www.bilibili.com/video/BV1iq4y1u7vj?p=113

在这里插入图片描述

本篇博文目录:

      • 1.数据库存储引擎
      • 2.InnoDB 引擎和MyISAM 引擎
        • (1) InnoDB 引擎
        • (2) MyISAM 引擎
        • (3) InnoDB 引擎与MyISAM 引擎的对比
      • 3.其他数据库引擎

1.数据库存储引擎

为了管理方便,人们把 连接管理查询缓存语法解析查询优化 这些并不涉及真实数据存储的功能划分为 MySQL server 的功能,把真实存取数据的功能划分为存储引擎的功能 。所以在MySQL server完成了查询优化后,只需按照生成的 执行计划 调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。MysQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。其实存储引擎以前叫做表处理器,后来改名为存储引擎,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。

关于数据库引擎的常用操作SQL语句,如下:

  • 查看mysql提供什么存储引擎:
show engines;

在这里插入图片描述

  • 查看默认的存储引擎
show variables like '%storage_engine%';
#或
SELECT @@default_storage_engine;

在这里插入图片描述

在这里插入图片描述

  • 修改默认的存储引擎

如果在创建表的语句中没有显式指定表的存储引擎的话,那就会默认使用数据库默认引擎作为表的存储引擎,如果我们想改变表的默认存储引擎的话,可以这样写启动服务器的命令行:

SET DEFAULT_STORAGE_ENGINE=MyISAM;

在这里插入图片描述

或者修改my.ini(Linux为my.cnf )文件:

在这里插入图片描述

修改配置文件的方式需要重启服务:

Windwos采用net start MySQL服务名,Linux采用 systemctl restart mysqld.service

在这里插入图片描述

在这里插入图片描述

  • 创建表时指定存储引擎

存储引擎是负责对表中的数据进行提取和写入工作的,我们可以为 不同的表设置不同的存储引擎 ,也就是说不同的表可以有不同的物理存储结构,不同的提取和写入方式。

在创建的时候设置表的存储引擎:

CREATE TABLE 表名(
 建表语句;
) ENGINE = 存储引擎名称;
  • 修改表的存储引擎

如果表已经创建号,可以通过 ALTER TABLE 表名 ENGINE = 存储引擎名称; 修改表的存储引擎:

在这里插入图片描述

2.InnoDB 引擎和MyISAM 引擎

(1) InnoDB 引擎

InnoDB引擎是具备外键支持功能的事务存储引擎,MySQL5.5即以后默认采用引擎,由于是事务性引擎所以被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback),如果业务中涉及到大量的更新,删除等操作优先使用InnoDB引擎。

InnoDB引擎的数据结构类型:

  • 表名.frm 存储表结构(MySQL8.0时,合并在表名.ibd中)
  • 表名.ibd 存储数据和索引

下表为MySQL5.6版本中test数据库中的数据文件列表:

在这里插入图片描述

上图中的account表采用的数据库引擎为InnoDB:

在这里插入图片描述

(2) MyISAM 引擎

MyISAM 引擎是一种非事务处理存储引擎,提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM 不支持事务、行级锁、外键 ,有一个毫无疑问的缺陷就是 崩溃后无法安全恢复 ,该数据库引擎是MySQL5.5之前默认采用引擎,该数据引擎的优势是访问的 速度快 ,对事务完整性没有要求或者以SELECT、INSERT为主的应用,所以适合只读应用或者以读为主的业务,针对数据统计有额外的常数存储,故而 count(*) 的查询效率很高。

MyISAM 引擎的数据结构类型:

  • 表名.frm 存储表结构
  • 表名.MYD 存储数据 (MYData)
  • 表名.MYI 存储索引 (MYIndex)

下表为MySQL5.6版本中test数据库中的数据文件列表:

在这里插入图片描述

上图中的account_myisam表采用的数据库引擎为MyISAM :

在这里插入图片描述

(3) InnoDB 引擎与MyISAM 引擎的对比

对比项MyISAMInnoDB
外键不支持支持
事务不支持支持
行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作
缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响
自带系统表使用YN
关注点性能:节省资源、消耗少、简单业务事务:并发写、事务、更大资源
默认安装YY
默认使用NY

3.其他数据库引擎

数据引擎描述
Archive用于数据存档
Blackhole丢弃写操作,读操作会返回空内容
CSV存储数据时,以逗号分隔各个数据项
Memory置于内存的表
Federated访问远程表
Merge管理多个MyISAM表构成的表集合
NDBMySQL集群专用存储引擎

数据库引擎对比如下图所示:

特点MyISAMInnoDBMEMORYMERGENDB
存储限制64TB没有
事务安全支持
锁机制表锁行锁表锁表锁行锁
B树索引支持支持支持支持支持
哈希索引支持支持
全文索引支持
集群服务支持
数据缓存支持支持支持
索引缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响支持支持支持
数据可压缩支持
空间使用N/A
内存使用中等
批量插入的速度
支持外键支持

相关文章:

  • 实时即未来,车联网项目之将数据落地到文件系统和数据库【三】
  • 非零基础自学Java (老师:韩顺平) 第23章 反射(reflection) 23.5 哪些类型 有 Class 对象
  • 一文精通数据库操作--mysql(25分钟)
  • 地理信息系统:绪论重点基础知识
  • deeplab v3论文精读
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • MSOX3052A是德混合信号示波器500MHz
  • python字符串拼接
  • 边缘计算:基于tflite实现安卓边缘端在线训练on device training(端侧训练)万字长文详解
  • Vue计算属性computed和监听属性watch的区别
  • Spring 单例注入其它 scope 的四种解决方法 @Scope 源码解读
  • FastAPI简介与快速体验
  • 《微信小程序案例9》小程序登录流程
  • 【Python初级人工智能精讲】用Paddlehub给一段没有标点符号的文字加上合适的标点符号
  • idea使用fiddler抓包分析,fiddler抓取https
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 77. Combinations
  • cookie和session
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js递归,无限分级树形折叠菜单
  • React 快速上手 - 07 前端路由 react-router
  • redis学习笔记(三):列表、集合、有序集合
  • Vue UI框架库开发介绍
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 爬虫模拟登陆 SegmentFault
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 我从编程教室毕业
  • 用 Swift 编写面向协议的视图
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 智能网联汽车信息安全
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 正则表达式-基础知识Review
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (四) 虚拟摄像头vivi体验
  • (转)C#调用WebService 基础
  • (转)菜鸟学数据库(三)——存储过程
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ../depcomp: line 571: exec: g++: not found
  • .net core 6 redis操作类
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .ui文件相关
  • @31省区市高考时间表来了,祝考试成功
  • @WebServiceClient注解,wsdlLocation 可配置
  • []sim300 GPRS数据收发程序
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [Android] Android ActivityManager
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C++基础]-入门知识
  • [CISCN2019 华北赛区 Day1 Web2]ikun
  • [Deep Learning] 神经网络基础
  • [Flutter]打包IPA
  • [IE 技巧] 显示/隐藏IE 的菜单/工具栏