MySQL最常用的二种存储引擎MyISAM和InnoDB的介绍

2023-11-18

1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不是事务安全的,而且不支持外键,如果执行大量的select操作,那么MyISAM是比较适合的选择。

 

2.InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。如果有大量的update和insert,建议使用InnoDB,特别是针对多个并发和QPS较高的情况。

 

3.MyISAM:myisam只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。也可以通过lock table命令来锁表,这样操作主要是可以模仿事务,但是消耗非常大,一般只在实验演示中使用。

 

  4.InnoDB:Innodb支持事务和行级锁,是innodb的最大特色。行锁就是要锁住一行记录,阻止其他事务操作该行记录。当然,当insert 操作时,是永远不会产生行锁的,因为插入操作不会操作一条存在的记录(这里不考虑重复的数据)

 

5.myIsAM: myisam在磁盘存储上有三个文件,每个文件名以表名开头,分别是以下三种文件。

       (1).frm 用于存储表的定义

       (2).MYD 用于存放数据

       (3).MYI 用于存放表索引

 

6.InnoDB:innodb属于索引组织表,innodb有两种存储方式,共享表空间存储和多表空间存储。两种存储方式的表结构和myisam一样,以表名开头,扩展名是.frm。

 

7.myisam引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。

 

8.innodb引擎的自动增长咧必须是索引,如果是组合索引也必须是组合索引的第一列。

9.myisam允许没有任何索引和主键的表存在,索引都是保存行的地址。

10.innodb引擎如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见)

11. myisam有保存表的总行数,所以,使用select count(*) from table; 会直接取出出该值

12.innodb没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre 条件后,myisam和innodb处理的方式都一样。

13.myisam支持 FULLTEXT类型的全文索引

14.innodb不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。(sphinx   是一个开源软件,提供多种语言的API接口,可以优化mysql的各种查询)

15.myisam的索引以表名+.MYI文件分别保存。

16.innodb的索引和数据一起保存在表空间里。

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL最常用的二种存储引擎MyISAM和InnoDB的介绍 的相关文章

随机推荐

  • vue 子组件未渲染完成,通过refs调用报错,解决办法。

    在 Vue 中 如果父组件调用子组件的方法时因为子组件未渲染完成而出现错误 一种解决方法是使用 nextTick 方法来等待子组件渲染完成后再进行操作 具体做法如下 在父组件中使用 ref 属性给子组件命名 例如 在模板中给子组件命名为 m
  • C++调用Python程序,无法解析的外部符号 __imp___Py_RefTotal

    C 调用python程序时 出现如下问题 无法解析的外部符号 imp Py RefTotal 无法解析的外部符号 imp Py NegativeRefcount 该符号在函数 import array 中被引用 这是由于安装的python为
  • Linux运维实战:Linux清理僵尸进程

    一 僵尸进程简介 官方解释 当子进程比父进程先结束 而父进程又没有回收子进程 释放子进程占用的资源 此时子进程将成为一个僵尸进程 一般在系统中僵尸进程的关键字为defunct或者dead 僵尸进程一般指进程已经死了或者已经停止运行了 但是它
  • Netty---入门程序,搭建Websocket 服务器

    Netty 常用的场景 1 充当HTTP 服务器 但Netty 并没有遵循servlet 的标准 反而实现了自己的一套标准进行Http 服务 2 RPC 远程调用 在分布式系统中常用的框架 3 Socket 长连接 需要了解的名词 1 Ni
  • 什么是RPC并实现一个简单的RPC

    1 基本的RPC模型 主要介绍RPC是什么 基本的RPC代码 RPC与REST的区别 gRPC的使用 1 1 基本概念 RPC Remote Procedure Call 远程过程调用 简单的理解是一个节点请求另一个节点提供的服务 本地过程
  • screen 使用

    screen 是一款能够实现多窗口远程控制的开源服务程序 基本使用 安装screen yum install screen 创建blackup会话 scrren S blackup 查看已有会话列表 screen ls 恢复会话 scree
  • RabbitMQ消息确认机制

    消息确认 基本流程 说明 生产者发送消息到RabbitMQ Server后 RabbitMQ Server需要对生产者进行消息Confirm确认 消费者消费消息后需要对 RabbitMQ Server进行消息ACK确认 消息确认模式 Rab
  • iterable java_如何在Java中将Iterable转换为Collection?

    iterable java There are various ways to convert Iterable to Collection in Java programming language 有多种方法可以用Java编程语言将Ite
  • BUUCTF--[第二章 web进阶]死亡ping命令

    BUUCTF 第二章 web进阶 死亡ping命令 本文只是对官方wp进行了一点修改 因为在测试过程中发现8080端口弹不回flag 在本地测试也是一样的结果 但是把端口修改成8089 其他端口应该也可以 并且nc监听方式为 nc lvp
  • C++ 之 常量成员函数

    常量成员函数 const member function 可读取类中的数据成员 但不能修改 1 声明 1 1 const 关键字 参数列表后 加 const 关键字 声明为常量成员函数 表明其不被允许修改类的数据成员 下面的类 以年 月 日
  • 【技术经验分享】计算机毕业设计Python+SparkML知识图谱新闻推荐系统 新闻数据分析 新闻爬虫 新闻大数据 新闻可视化 大数据毕业设计 大数据毕设 机器学习 深度学习

    开发技术 Python爬虫 springboot vue js SparkML SparkALS 机器学习 深度学习 协同过滤算法 说明 后端使用SpringBoot Mybatis Plus框架 前端使用Vue js Element Pl
  • Element UI 框架中Loading 区域加载的使用方法

    给自己打个小广告 有开发APP 小程序 网站 后台系统需求 或者 想学习前端的可以私信我哈 Loading 加载用于加载数据时显示动效 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img MgPFZSRk 16602
  • 怎样提升Java水平

    怎样提升Java水平 想更快更好地提高你的Java编程水平 除了在日常工作中积累经验外 你还可以在空闲时间通过学习来提高你的技术技能 首先Java 理论基础不会太差 一个Java基础理论知识都很差的Java程序员 那么你期望他的Java代码
  • docker安装rocketmq4.6.1(精简版)

    一 创建文件 mkdir p usr local rocketmq server logs usr local rocketmq server store usr local rocketmq broker logs usr local r
  • 黑白色老照片一键上色在线工具,让老照片漂亮起来

    每个人家中多少都有一些老旧的黑白照 或是当初拍照时只有拍黑白 跟彩色照片比虽然别有一番风味 但有时候还是会想看如果是彩色不知道会变怎样 会不会更好看 而这款 线上工具就能帮你实现 只要把你的黑白照上传 它就会透过 AI 技术自动帮你上色 我
  • idea中相同包不聚合

    idea中创建子包不折叠 项目场景 问题描述 原因分析 解决方案 项目场景 提示 idea使用中出现的问题 突然发现相同包不能聚合了 问题描述 提示 相同包不能聚合 突然出现很多路径相同的很多包下的文件 原因分析 提示 不小心将设置动了 解
  • 95-38-055-Buffer-UnpooledDirectByteBuf

    文章目录 1 总述 1 1 局部图 1 2 概述 1 总述 1 1 局部图 1 2 概述 Netty的UnpooledDirectByteBuf在NIO的DirectByteBuf上采用组合的方式进行了封装 屏蔽了对程序员不友好的地方 并使
  • 如何使用js创建一个构造函数及重写toString的方法

    在js中使用function可以创建一个函数 也可用创建一个构造函数 这个构造函数可用于实例化对象 代码如下
  • 解析Java-throw抛出异常详细过程

    首先 我们知道Java有3种抛出异常的形式 throw 执行的时候一定抛出某种异常对象 throws 出现异常的可能性 不一定会发生 系统自动抛出异常 throw用在一个语句抛出异常的时候 throw an instance of exce
  • MySQL最常用的二种存储引擎MyISAM和InnoDB的介绍

    1 MyISAM 默认表类型 它是基于传统的ISAM类型 ISAM是Indexed Sequential Access Method 有索引的顺序访问方法 的缩写 它是存储记录和文件的标准方法 不是事务安全的 而且不支持外键 如果执行大量的