九爷 带你玩转mysql引擎Mylsam

一、 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 工具来对数据库中某个(或某些)表进行检测或者修复。不过强烈建议不到万不得已不要轻易对表进行修复操作,修复之前尽量做好可能的备份工作,以免带来不必要的后果。

时间: 2024-10-10 09:36:39

九爷 带你玩转mysql引擎Mylsam的相关文章

九爷带你玩转 php单元测试

<我不是九爷> 我总感觉 PHP 的开发者们并没有对 PHP 的质量有所追求,可能是因为 PHP 的机制问题吧,让大?糠值目⒄咦芤晕榔鞣梦示兔挥形侍猓院芏嗍焙颍? PHP 开发的,就没有单元测试的这些概念了.能不能有点追求? 我个人也是 PHP,但同时我也比较讨厌那些完事就算了的开发者,作为一个开发者,或者说是一个产品的经手人,就应该用心地去做好每个细节,一次比一次要更好. 但是做单元测试,质量检查,是需要一定的时间和人力投入的,但我敢保证地说,你花时间投入的,绝对不会是没用的,一定对你,对项

九爷带你玩转 Big Data

Big Data(大数据)技术简析 Big Data是近来的一个技术热点,但从名字就能判断它并不是什么新词.毕竟,大是一个相对概念.历史上,数据库.数据仓库.数据集市等信息管理领域的技术,很大程度上也是为了解决大规模数据的问题.被誉为数据仓库之父的Bill Inmon早在20世纪90年代就经常将Big Data挂在嘴边了. 然而,Big Data作为一个专有名词成为热点,主要应归功于近年来互联网.云计算.移动和物联网的迅猛发展.无所不在的移动设备.RFID.无线传感器每分每秒都在产生数据,数以亿

九爷带你玩转 docker 五大监控

轻量级虚拟化容器 Docker,自发布以来便广受业界关注,在开源界和企业界掀起了一阵风.Docker 容器相对于 VM 有以下几个优势:启动速度快:资源利用率高:性能开销小. 从图中可以看出 Docker 和 虚拟机的差异,虚拟机的 Guest OS 和 Hypervisor 层在 Docker 中被 Docker Engine 层所替代,Docker 有着比虚拟机更少的抽象层.由于 Docker 不需要通过 Hypervisor 层实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用

8招带你玩转规则引擎 | 我的物联网成长记

[摘要] 华为云物联网平台提供的规则引擎包括数据转发和设备联动等多种能力,这些能力都要怎么使用?本文教您8招最常用的用法,带您玩转规则引擎. 规则引擎是华为云物联网平台提供的一种能力,用户对接入平台的设备设定相应的规则,在条件满足所设定的规则后,平台会触发相应的动作来满足用户需求.规则引擎包含数据转发和设备联动两种类型. 数据转发规则:物联网平台支持将设备上报的数据(和设备信息)转发至其他云服务,包括数据接入服务DIS.对象存储服务OBS.企业集成平台ROMA等,并支持对转发的数据进行过滤. 设

九爷 带你走向职场 百度篇

 转眼即逝,步入IT行业的我不知不觉已经在这个领域打拼了三个年头.虽然称不上什么技术大牛,但一路也是乘风破浪.                             畅想未来;      起初的我刚刚大学毕业,拿着一份简历四处求职,那个时候可以说互联网行业已经步入正轨.转眼2017年已经过了三分之一 ,回头看去中国IT行业正在逐步攀升.从大型机械时代 个人PC时代 互联网时代 云计算时代 人工智能化时代 机器人时代 每个时代的变迁都考验着IT精英的迅速递进.随着云计算大数据的来临每个IT精英都

我不是九爷 带你了解 ansible

  <我不是九爷> Ansible 1. 了解什么是ansible ansible是个什么东西呢?官方的title是"Ansible is Simple IT Automation"--简单的自动化IT工具.这个工具的目标有这么几项:让我们自动化部署APP:自动化管理配置项:自动化的持续交付:自动化的(AWS)云服务管理. 所有的这几个目标本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已.就像我之前有介绍过的Fabric,以及我们基于Fabric开发的自动化应用

九爷带你了解 mysql 主从复制的 工作原理

mysql 主从复制原理 主从形式 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制--- 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 主从原理 mysql主从复制原理 从库生成两个线程,一个I/O线程,一个SQL线程: i

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

对于大多数人来说,可能不知道Unity3D是什么,但是却知道VR虚拟现实是什么,更不会把VR虚拟现实和Unity3D联系在一起,外行的人根本不知道这两者之间有什么关系.那么,今天来给你讲解一下Unity3D与VR虚拟现实之间的区别和联系分别是什么? 什么是Unity3D?Unity3D是一软专业3D游戏引攀,其具备跨平台发布.离效能优化.高性价比,AAA级游戏画面演染效果等特点.目前Unity3D应用范围广泛,从手机游戏到联网的大型游戏,从严肃游戏到电子商务,再到VR虚拟现实均可完美呈现. 什么

九爷带你了解 带你了解 Nosql Redis ttserver Flare memcache比较

Nosql Redis ttserver Flare memcache比较 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速.而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如: 1.High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动