一、 mysql存储引擎介绍:


MySQL在5.1(不包括)之前的版本中,存储引擎是需要在MySQL 安装的时候就必须和MySQL 一起被编译并同时被安装的。

但是从MySQL5.1 开始,MySQL AB 对其结构体系做了较大的改造,并引入了一个新的概念:插件式存储引擎体系结构。 MySQL AB 在架构改造的时候,让存储引擎层和sql layer各自更为独立,耦合更小,甚至可以做到在线加载新的存储引擎,也就是完全可以将一个新的存储引擎加载到一个正在运行的MySQL 中,而不影响MySQL 的正常运行。插件式存储引擎的架构,为存储引擎的加载和移出更为灵活方便,也使自行开发存储引擎更为方便简单。

MySQL的插件式存储引擎主要包括MyISAMInnodbNDB ClusterMariaFalconMemoryArchive等,其中最著名而且使用最为广泛的MyISAM Innodb两种存储引擎。MyISAM 是MySQL 最早的ISAM 存储引擎的升级版本,也是MySQL 默认的存储引擎。而Innodb 实际上并不是MySQ 公司的,而是第三方软件公司Innobase(在2005 年被Oracle 公司所收购)所开发,其最大的特点是提供了事务控制等特性, 所以使用者也非常广泛

       二、MyISAM 存储引擎简介:


1、mysql5.1之前默认存储引擎。

2、MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。

首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm 文件,另外还有.MYD和.MYI 文件,分别存放了表的数据(.MYD)和索引数据(.MYI)。每个表都有且仅有这样三个文件做为MyISAM 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。

3、MyISAM 支持以下三种类型的索引:

B-Tree 索引

B-Tree 索引,就是所有的索引节点都按照balance tree 的数据结构来存储,所有的索引数据节点都在叶节点。

R-Tree 索引

R-Tree 索引的存储方式和b-tree 索引有一些区别,主要设计用于为存储空间和多维数据的字段做索引,所以目前的MySQL 版本来说,也仅支持geometry 类型的字段作索引。

Full-text 索引

Full-text 索引就是全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like 查询的低效问题。

MyISAM 上面三种索引类型中,最经常使用的就是B-Tree 索引了,偶尔会使用到Fulltext,但是R-Tree 索引一般系统中都是很少用到的。另外MyISAM 的B-Tree 索引有一个较大的限制,那就是参与一个索引的所有字段的长度之和不能超过1000 字节。

1、不支持事务

2、只有表锁

3、如下情况会造成表损坏:

Mysqld正在写入该表时,被kill掉


主机宕机(Crash)

磁盘硬件故障

MyISAM存储引擎的bug

虽然每一个MyISAM的表都是存放在一个相同后缀名的.MYD 文件中,但是每个文件的存放格式实际上可能并不是完全一样的,因为MyISAM 的数据存放格式是分为静态(FIXED)固定长度、动态(DYNAMIC)可变长度以及压缩(COMPRESSED)这三种格式。

当然三种格式中是否压缩是完全可以任由自己选择的,可以在创建表的时候通过ROW_FORMAT 来指定{COMPRESSED | DEFAULT},也可以通过myisampack 工具来进行压缩,默认是不压缩的。

而在非压缩的情况下,是静态还是动态,就和我们表中个字段的定义相关了。只要表中有可变长度类型的字段存在,那么该表就肯定是DYNAMIC 格式的,如果没有任何可变长度的字段,则为FIXED 格式,当然,你也可以通过alter table 命令,强行将一个带有VARCHAR 类型字段的DYNAMIC 的表转换为FIXED,但是所带来的结果是原VARCHAR 字段类型会被自动转换成CHAR 类型。相反如果将FIXED 转换为DYNAMIC,也会将CHAR 类型字段转换为VARCHAR 类型,

知识点扩展:如何根据表的记录数量估算占用的磁盘空间

首先先算一个表中一行有多少个字节。

然后根据数据库中的表每天增加多少行记录,就能够算出每天要增加多少硬盘空间,这样就可根据数据量估算规划多大的空间。

例如在数据库test中创建一张tb1表

执行mysql>desc  test1.tb1查看tb1的表结构

10个字节+20个字节+2个字节+20字节+8字节+8字节+100个字节=168字节

Tb1表的一个行有118个字节

如果每天增加10000条记录,大约需要10000x168/1024/1024=1.6MB

这样就可以根据每天增加的记录数,合理规划好磁盘空间了

MyISAM 存储引擎的某个表文件出错之后,仅影响到该表,而不会影响到其他表,更不会影响到其他的数据库。如果我们的数据库正在运行过程中发现某个MyISAM 表出现问题了,则可以在线通过check table 命令来尝试校验他,并可以通过repair table 命令来尝试修复。在数据库关闭状态下,我们也可以通过myisamchk 工具来对数据库中某个(或某些)表进行检测或者修复。不过强烈建议不到万不得已不要轻易对表进行修复操作,修复之前尽量做好可能的备份工作,以免带来不必要的后果。

九爷 带你玩转mysql引擎Mylsam相关推荐

  1. mysql为什么用b加树_为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生【宇哥带你玩转MySQL 索引篇(二)】...

    为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生 在上一节,我们聊到数据库为了让我们的查询加速,通过索引方式对数据进行冗余并排序,这样我们在使用时就可以在排好序的数据里进行快速的二分查找,使得查 ...

  2. 六天带你玩转Mysql笔记--第五天

    六天带你玩转Mysql笔记--第五天 1.外键 1.1增加外键 1.2修改外键&删除外键 1.3外键作用 1.4外键条件 1.5外键约束 2联合查询 2.1基本语法 2.2意义 2.3 ord ...

  3. 【我的物联网成长记11】8招带你玩转规则引擎

    [摘要] 华为云物联网平台提供的规则引擎包括数据转发和设备联动等多种能力,这些能力都要怎么使用?本文教您8招最常用的用法,带您玩转规则引擎. 规则引擎是华为云物联网平台提供的一种能力,用户对接入平台的 ...

  4. 我不是九爷 带你了解 ansible

      <我不是九爷> Ansible 1. 了解什么是ansible ansible是个什么东西呢?官方的title是"Ansible is Simple IT Automatio ...

  5. 我不是九爷 带了解 Unity3D与VR虚拟现实

    对于大多数人来说,可能不知道Unity3D是什么,但是却知道VR虚拟现实是什么,更不会把VR虚拟现实和Unity3D联系在一起,外行的人根本不知道这两者之间有什么关系.那么,今天来给你讲解一下Unit ...

  6. 5天玩转mysql视频教程_六天带你玩转MySQL

    教程列表: 01数据库课程介绍 02数据库(基础知识) 03数据库(关系型数据库) 04数据库(关系型数据库关键字说明) 05数据库(SQL) 06数据库(mysql数据库) 07数据库(mysql服 ...

  7. 九爷 带你了解 nginx优化与防盗链

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP  ...

  8. 极客学院mysql教程_干货分享 速成必备视频 六天带你玩转MySQL视频教程 数据库......

    ├─mysql第一天 │  └─video4 p7 v* M+ D& s │          01数据库课程介绍.mp4 │          02数据库(基础知识).mp45 X# y2 ...

  9. 带你玩转Mysql高可用方案--PXC

    目录 理论篇 基于Galere协议的高可用方案:pxc PXC介绍 PXC特性 PXC优缺点 PXC原理描述 PXC的架构示意图 数据读写示意图 下面看传统复制流程 异步复制 半同步 超过10秒的阀值 ...

  10. 6天带你玩转mysql课程第一天

    数据库基础 1.什么是数据库? 数据库: database, 存储数据的仓库 数据库: 高效的存储和处理数据的介质(介质主要是两种: 磁盘和内存) 2.数据库的分类? 数据库基于存储介质的不同: 进行 ...

最新文章

  1. Linux火狐解压完运行不了,在Ubuntu系统下firefox账号无法登录的解决
  2. 处理Http请求Gzip格式响应
  3. Linux下rgmii接口,zynq7010 petalinux 2019.2 RGMII via EMIO 连接问题
  4. 获取页面可见区域,屏幕区域的尺寸
  5. vue-day01-vue模板语法
  6. Python 03 基础作业
  7. java重div获取下拉框值_获取下拉框的value和值
  8. ext.net 2.5 导出excel的使用方法
  9. MyBatis学习 之 七、mybatis各种数据库的批量修改
  10. 使用 JS 实现一个简单的日历
  11. 氮化硼纳米片原位负载纳米氧化硅杂化填料|立方氮化硼粉体的表面改性修饰|水溶性六方氮化硼纳米片(BNNS)|茶多酚修饰氮化硼纳米片分散液
  12. 下载并还原AdventureWorksDW2012数据库
  13. 《信息安全系统设计基础》实验三 《实时系统的移植》 问题总结
  14. C# 读取西门子S7系列PLC教程及源码
  15. Maven编译Docker 镜像并推送到Nexus
  16. javascript获取本周、本月、本季度、本年时间
  17. java人民币大小写转换函数_java开发_数字转换汉语中人民币的大写_完整版
  18. 刘长炯老师的java 学习大草原
  19. 大数据指一笔巨大价值的资产
  20. html制作小短片,如何制作视频短片

热门文章

  1. 在vue中如何使用umy-ui
  2. python erp源码_分享|值得考虑的 9 个开源 ERP 系统
  3. 2017年世界各国GDP总值排名预测榜单
  4. 洛谷.3733.[HAOI2017]八纵八横(线性基 线段树分治 bitset)
  5. 爬取小说【含完整代码】
  6. UCF动作识别的数据集及处理(pytorch)
  7. java使用keytool 的ssl证书的导入、查看与删除——彻底解决unable to find valid certification path to requested target(好文章!)
  8. 腾讯收入证明泄漏,税后250万,月均20万...
  9. python 天天向上求几天数_Python十题(第2课)
  10. Java app接入微信和支付宝支付