MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

2023-11-17

①. 查看、修改存储引擎

  • ①. 查看mysql提供什么存储引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  • ②. 查看默认的存储引擎
mysql> show variables like '%storage_engine%';
+---------------------------------+-----------+
| Variable_name                   | Value     |
+---------------------------------+-----------+
| default_storage_engine          | InnoDB    |
| default_tmp_storage_engine      | InnoDB    |
| disabled_storage_engines        |           |
| internal_tmp_mem_storage_engine | TempTable |
+---------------------------------+-----------+
4 rows in set (0.01 sec)

mysql> SELECT @@default_storage_engine;
+--------------------------+
| @@default_storage_engine |
+--------------------------+
| InnoDB                   |
+--------------------------+
1 row in set (0.00 sec)
  • ③. 修改默认的存储引擎
    如果在创建表的语句中没有显式指定表的存储引擎的话,那就会默认使用 InnoDB 作为表的存储引擎。 如果我们想改变表的默认存储引擎的话,可以这样写启动服务器的命令行:
# 临时修改
SET DEFAULT_STORAGE_ENGINE=MyISAM;
# 永久生效:或者修改 my.cnf 文件:
default-storage-engine=MyISAM
# 重启服务
systemctl restart mysqld.service
  • ④. 创建表时指定存储引擎
    存储引擎是负责对表中的数据进行提取和写入工作的,我们可以为不同的表设置不同的存储引擎 ,也就是 说不同的表可以有不同的物理存储结构,不同的提取和写入方式
# 1. 创建表时指定存储引擎
CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
# 2. 修改表的存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎名称;

②. InnoDB和MyISAM对比

  • ①. InnoDB引擎:具备外键支持功能的事务存储引擎,行锁
  1. MySQL从3.23.34开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎
  2. InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)
  3. 除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎
  4. 数据文件结构:
    表名.frm存储表结构(MySQL8.0时,合并在表名.ibd中)
    表名.ibd存储数据和索引
  5. InnoDB是为处理巨大数据量的最大性能设计
  6. 对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引
  7. MyISAM只缓存索引,不缓存真实数据。InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响
  • ②. MyISAM引擎:主要的非事务处理存储引擎
  1. MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是崩溃后无法安全恢复
  2. 5.5之前默认的存储引擎
  3. 优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用
  4. 针对数据统计有额外的常数存储。故而count(*)的查询效率很高
  5. 数据文件结构
    表名.frm存储表结构
    表名.MYD存储数据 (MYData)
    表名.MYI存储索引 (MYIndex)
  6. 应用场景:只读应用或者以读为主的业务
  • ③. MyISAM和InnoDB对比
    在这里插入图片描述

③. Archive引擎 - 归档

  • ①. archive是归档的意思,仅仅支持插入和查询两个功能(行被插入后不能修改)

  • ②. 在MYSQL5.5以后支持索引功能

  • ③. 拥有很好的压缩机制,使用zlib压缩库,在记录请求的时候实时进行压缩,经常被用来作为仓库使用

  • ④. acchive适合日志和数据采集(归档)类应用,适合存储大量的独立的作为历史记录的数据,拥有很高的插入速度,但是对查询的支持较差
    在这里插入图片描述

④. Blackhole引擎丢数据

  • ①. Blackhole引擎没有实现任何存储机制,它会丢弃所有插入的数据,不做任何保存

  • ②. 服务器会记录Blackhole表的日志,所以可以用来复制数据到备库,或者简单地记录到日志。但这种应用会碰到很多问题,因此并不推荐

⑤. CSV - 引擎

  • ①. 使用案例如下
mysql> SELECT @@default_storage_engine;
+--------------------------+
| @@default_storage_engine |
+--------------------------+
| InnoDB                   |
+--------------------------+
1 row in set (0.00 sec)

mysql>  CREATE TABLE test (i INT NOT NULL, c CHAR(10) NOT NULL) ENGINE = CSV;
Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO test VALUES(1,'record one'),(2,'record two');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM test;
+---+------------+
| i | c          |
+---+------------+
| 1 | record one |
| 2 | record two |
+---+------------+
2 rows in set (0.00 sec)
  • ②. 创建CSV表还会创建相应的元文件 ,用于 存储表的状态 和 表中存在的行数 。此文件的名称与表的名称相同,后缀为CSM
    在这里插入图片描述
  • ③. 如果检查test.CSV 通过执行上述语句创建的数据库目录中的文件,其内容使用Notepad++打开如下:
"1","record one"
"2","record two"
  • ④. 这种格式可以被 Microsoft Excel 等电子表格应用程序读取,甚至写入。使用Microsoft Excel打开如图所示
    在这里插入图片描述

⑥. Memory引擎 - 内存表

  • ①. Memory采用的逻辑介质是内存,响应速度很快,但是当mysqld守护进程崩溃的时候数据会丢失。另外,要求存储的数据是数据长度不变的格式,比如,Blob和Text类型的数据不可用(长度不固定的)

  • ②. 主要特征

  1. Memory同时支持哈希(HASH)索引和B+树索引
  2. Memory表至少比MyISAM表要快一个数量级
  3. MEMORY 表的大小是受到限制的。表的大小主要取决于两个参数,分别是max_rows和 max_heap_table_size。其中,max_rows可以在创建表时指定;max_heap_table_size的大小默 认为16MB,可以按需要进行扩大
  4. 数据文件与索引文件分开存储
  5. 缺点:其数据易丢失,生命周期短。基于这个缺陷,选择MEMORY存储引擎时需要特别小心
  • ③. 使用Memory存储引擎的场景
  1. 目标数据比较小,而且非常频繁的进行访问,在内存中存放数据,如果太大的数据会造成内存溢出。可以通过参数 max_heap_table_size 控制Memory表的大小,限制Memory表的最大的大小
  2. 如果数据是临时的 ,而且必须立即可用得到,那么就可以放在内存中
  3. 存储在Memory表中的数据如果突然间丢失的话也没有太大的关系

⑦. Federated引擎 - 访问远程表

  • Federated引擎是访问其他MySQL服务器的一个代理 ,尽管该引擎看起来提供了一种很好的跨服务器的灵活性 ,但也经常带来问题,因此默认是禁用的

⑧. Merge引擎 - 管理多个MyISAM

  • Merge引擎:管理多个MyISAM表构成的表集合

⑨. NDB引擎 - 集群专用

  • NDB引擎也叫做 NDB Cluster 存储引擎,主要用于MySQL Cluster分布式集群 环境,类似于Oracle的RAC集群
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍 的相关文章

  • Java 密钥库 - 以编程方式从密钥库文件中选择要使用的证书

    我有一个 java 密钥库文件 其中包含多个客户端证书 我希望在 Java 应用程序中仅选择其中一个证书来连接到服务 有没有一种简单的方法可以做到这一点 到目前为止 我找到解决方案的唯一方法是使用原始密钥库文件中的客户端证书详细信息 通过其
  • 整理有关 QueryDSL-JPA 的提示

    有没有办法用 QueryDSL 来执行它 粗体部分 从地点选择 其中名称如 cafe 整理 Latin1 general CI AI 我将 JPA 与 hibernate 一起使用 您可以使用addFlag QueryFlag Positi
  • 如何在Eclipse中制作war文件[重复]

    这个问题在这里已经有答案了 制作war文件的简单方法是什么 当我右键单击 在服务器上运行 时 我的项目正在运行 但我想部署在 tomcat 服务器上 我已经安装了m2clipse但这给了我一个错误 maven是否必须制作war文件 我需要特
  • ActiveMQ 桥连接器到 WebSphereMQ 而不使用 XML 配置

    我想在嵌入式代理中创建一个代理来代理 ActiveMQ 和 WebSphere MQ 之间的连接 我知道 activemq 中存在网络连接器来执行此操作 代理到代理 但我不知道如何配置它以连接到 WebSphere MQ 在网络上进行搜索时
  • Postgresql 中的 id 列位置重要吗?

    我正在测试删除主键列 id 的迁移 我想使用外键作为主键 当我运行并恢复迁移时 我看到表的状态是相同的 只是 id 列现在是最后一个 它会以任何方式改变我的数据库的行为吗 我是否应该费心去恢复迁移恢复代码中的列顺序 理论上一切都应该没问题
  • 使用绑定和空值命中 Oracle 索引的最佳查询

    我有一个表 该表在多个列上有一个索引 其中许多列可以为空 CREATE UNIQUE INDEX UX MYTABLE A B C D E ON MYTABLE A B C D E 现在 我在 C 代码中尝试检查该表并精确命中索引 对于每个
  • 无法解析 ListView 适配器中的 getSystemService 方法

    我正在研究约翰霍顿的Android 编程初学者 目前正在尝试创建一个笔记应用程序 霍顿刚刚介绍ListViews 但是 我遇到了麻烦adapter class public class NoteAdapter extends BaseAda
  • 在java中迭代日期

    我需要遍历一系列日期 不确定如何在 for 循环中获取第二天 我在用java util Date So plusDays 1 不能在 for 循环中用于获取下一个日期 Used date1 new Date date1 getTime 10
  • 自 Java 7 以来 HttpServer 延迟 1 秒

    我们正在使用内部HttpServer项目中的类 用于通过 HTTP 在客户端和服务器之间交换数据 当我们切换到 Java 7 时 我们意识到结果交付存在延迟 我们可以将问题简化为以下示例 Class EchoServer创建上下文 echo
  • Java Swing 组件的命名约定(前缀)

    在 Java 中使用 Swing 进行编程时 我想到的一个问题是 它是 Swing 组件的推荐还是 官方 最常用的命名约定 前缀 例如 尽管其他人可能更喜欢其他命名约定 但这就是我当前正在使用的 JTextField 的 txt JButt
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • RecyclerView:禁用焦点变化引起的滚动

    TL DR我有一个RecyclerView of EditTexts 当用户注意力集中时EditText 1并点击EditText 2 我想EditText 2获得焦点 但我不想要ReyclerView滚动 我怎样才能实现这个目标 我正在尝
  • android.R.layout.simple_list_item_1是什么?

    在我看到的所有示例中 他们在创建 ArrayAdapter 时仅使用 android R layout simple list item 1 android R layout simple list item 1是什么 它只是一个名为sim
  • ClassNotFoundException:在嵌入了 cxf 依赖项的 OSGi 包中找不到 org.glassfish.jersey.internal.RuntimeDelegateImpl

    这与jax rs 2 0 更改默认实现 https stackoverflow com questions 17366266 jax rs 2 0 change default implementation我有一个 OSGi 包 其中包含
  • ElasticSearch - 定义自定义字母顺序进行排序

    我正在使用 ElasticSearch 2 4 2 通过 Java 的 HibernateSearch 5 7 1 Final 我在字符串排序方面遇到问题 我的应用程序的语言有变音符号 它们有特定的字母顺序 订购 例如 直接在之后L 追随O
  • IntelliJ IDEA 中的项目语言级别是多少?

    我正在使用 Java 7 SDK 和 IntelliJ IDEA IDE java version 1 7 0 11 Java TM SE Runtime Environment build 1 7 0 11 b21 Java HotSpo
  • 如何为信号量中等待的线程提供优先级?

    我使用信号量来限制访问函数的线程数量 我希望接下来要唤醒的线程应该由我将给出的某个优先级选择 而不是默认信号量唤醒它们的方式 我们怎样才能做到这一点 这是实现 class MyMathUtil2 implements Runnable do
  • 如何检测 Postgres 中持有锁的查询?

    我想不断跟踪 postgres 中的互锁 我碰到锁具监控 https wiki postgresql org wiki Lock Monitoring文章并尝试运行以下查询 SELECT bl pid AS blocked pid a us
  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7

随机推荐

  • 用户信息表(查询数据 、 修改密码 、 添加数据)

    效果 列表的数据 添加用户的效果 修改用户表
  • Excel读取返回List<Map>工具方法

  • cocos2d-x

    http www myexception cn operating system 1222879 html http www tuicool com articles zQ3Q7n http www myexception cn opera
  • 服装商城小程序制作:打造便捷购物体验和提升销售额的利器

    随着移动互联网的发展 服装商城小程序成为各大服装品牌推广销售的重要工具 它不仅能够为用户提供便捷的购物体验 还能帮助服装商城实现更高效的销售和管理 下面给大家介绍下服装商城小程序的优点以及制作流程 让您了解并充分利用这一利器 优点 便捷购物
  • 云端部署code-server

    code server下载地址 GitHub coder code server VS Code in the browser 操作环境 本文配置环境为 aliyun ECS Debian 11 5 准备工作 Xftp 阿里云ECS云服务器
  • 算法--吃火锅

    题目 和朋友一起吃火锅 有m个菜品 你的手速是n 即吃完一道菜 要经过时间n才能再去夹菜 任一菜品下锅后 都需要经过对应时间才能熟 过时就不可口了 怎样可以吃到最多的可口的菜 输入 第1行 菜品数量m 手速n 第2 m行 每行两个数字 第一
  • 所有的USB C 设备都需要CC芯片吗

    所有的DFP 如电源适配器 所有的DRP 如电脑 手机 平板 移动电源 所有需要检测DFP电流输出能力的UFP 所有支持PD的设备 都需要CC逻辑检测与端口控制芯片 换句话说 只有因为功耗较低而不需要检测电流能力的UFP U盘 耳机 鼠标等
  • 第五届蓝桥杯校内选拔赛试题java组_2014年第五届蓝桥杯国赛试题(JavaA组)

    1 结果填空 满分15分 2 结果填空 满分45分 3 代码填空 满分30分 4 程序设计 满分30分 5 程序设计 满分80分 6 程序设计 满分100分 1 标题 海盗分金币 有5个海盗 相约进行一次帆船比赛 比赛中天气发生突变 他们被
  • 【经典分割网络】网络+模块+数据集+实验结果(整理中。。

    KolektorSDD数据集中包 含了 50组电子换向器图片 其中每组包含 8张图 片以及对应的语义分割标签 图像宽均为 500像 素 高为 1 240 1 273像素 1 FCN 2 U net 3 PSPnet 4 deeplab 5
  • Kafka详解及面试常问问题

    Kafka 简介 Kafka 是一个分布式流式处理平台 这到底是什么意思呢 流平台具有三个关键功能 消息队列 发布和订阅消息流 这个功能类似于消息队列 这也是 Kafka 也被归类为消息队列的原因 容错的持久方式存储记录消息流 Kafka
  • Linux编译器gcc/g++

    目录 一 关于gcc g 程序翻译的过程 预处理 编译 汇编 链接 二 gcc的使用 gcc的常见命令 E S c 三 动静态库 四 make Makefile 一 关于gcc g 首先 在我们自己的云服务器中 运行gcc v g v如果能
  • 开发浏览器扩展程序(js脚本)

    一 打开谷歌浏览器扩展程序 二 打开 开发者模式 三 加载已解压的扩展程序 四 选择编写好的脚本文件夹 看不到文件 没关系 默认会加载 manifest json 文件 实际文件夹内容 五 加载成功 六 开始编辑脚本文件 name 扩展名字
  • 老师讲课博客目录

    http www bootcdn cn bootstrap bootstrap cdn在线地址 http www cnblogs com vamei archive 2012 09 13 2682778 html http www xuli
  • google地图、高德地图基于基站定位位置纠偏

    GPS纠偏算法 适用于google 高德体系的地图 精确度还比较高 我试了一下比高德本身的纠偏还精确点 gps纠偏算法 适用于google 高德体系的地图 author Administrator public class GpsCorre
  • idea 使用Maven 打包本地jar包及引用第三方jar包

    一 使用本地mvn 环境编译本地jar包 mvn install install file Dfile E Bank lib Envelope jar jar包的全称 还可以使用全路径这样可以直接使用命令不用进入文件目录中运行命令了 Dgr
  • Unity操作技巧

    Alt 鼠标左键 围绕游戏物体观察 Persp模式下需要ALT键 ISO模式下直接左键就行 Alt 鼠标右键 放大和缩小视野 Persp模式下跟中间的滚轮可不一样 很粗糙的 但ISO模式下滚轮很细腻 鼠标中键 移动视野 视野观察的两种模式
  • java实现重建二叉树

    题目 输入某二叉树的前序遍历和中序遍历的结果 请重建出该二叉树 假设输入的前序遍历和中序遍历的结果中都不含重复的数字 例如输入前序遍历序列 1 2 4 7 3 5 6 8 和中序遍历序列 4 7 2 1 5 3 8 6 则重建二叉树并返回
  • 干货!干货!在Python的Django框架中更新数据库数据的方法总结

    本文来源于公众号 csdn2299 喜欢可以关注公众号 程序员学府 这篇文章主要介绍了在Python的Django框架中更新数据库数据 对此Django框架中提供了便利的插入和更新方法 需要的朋友可以参考下 先使用一些关键参数创建对象实例
  • GoogLeNet 网络简介

    GoogLeNet 网络简介 目录 GoogLeNet 历史 网络亮点 Inception结构 辅助分类器 Auxiliary Classifier 网络结构 模型参数对比 参考资料 5 1 GoogLeNet网络详解 https www
  • MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

    文章目录 查看 修改存储引擎 InnoDB和MyISAM对比 Archive引擎 归档 Blackhole引擎丢数据 CSV 引擎 Memory引擎 内存表 Federated引擎 访问远程表 Merge引擎 管理多个MyISAM NDB引