## myisam引擎
小于等于5.5mysql默认的存储引擎。
(ISAM——索引顺序访问方法)是Indexed Sequential Access Method(索引顺序存取方法)的缩写 .它是一种索引机制,用于高效访问文件中的数据行,擅长与处理高速读与写。
### 存储方式
1. 数据,索引,结构分别存储于不同的文件中。
2. mysiam存储引擎数据表,每个数据表都有三个文件*.frm *.MYD *.MYI
3. **这三个文件支持物理复制、粘贴操作(直接备份还原)。**
![](https://box.kancloud.cn/2cf54701a1fee28ae82b73ca2ae97444_798x239.png)
### 数据的存储顺序为插入顺序
~~~
insert into test values(100,'1'),(50,'2'),(1,'3'),(1000,'4');
~~~
~~~
+------+------+
| id | name |
+------+------+
| 100 | 1 |
| 50 | 2 |
| 1 | 3 |
| 1000 | 4 |
+------+------+
~~~
数据查询的顺序,与写入的顺序一致。
数据写入时候,没有按照主键id值给予排序存储,该特点导致数据**写入的速度非常快**。
### 并发性
mysiam的并发性较比innodb要稍逊色,因为数据表是“表锁”
### 压缩性
如果一个myisam数据表存储的数据非常多,就会占据很大的硬盘空间,为了节省空间,可以把这个myisam数据表给进行压缩处理。
语法: 在bin文件夹下另外运行终端
~~~
myisampack 完整路径/表名
~~~
压缩完成后需要flush刷新下,使得硬盘数据与内存数据同步:
~~~
flush table 表名;
~~~
重建索引:压缩后的数据表需要根据最新的数据位置把索引重新建立一次。根据压缩后的数据把索引重建建立起来。
重建索引工具 : 在bin文件夹下另外运行终端
~~~
myisamchk -rq 完整路径/表名
~~~
只读特性 :
压缩的数据表不能再写入数据了,必须解压后才可以。压缩的数据表,禁止写操作.
具体解压: 在bin文件夹下另外运行终端
~~~
myisamchk --unpack 完整路径/表名
~~~
完成解压后再刷新,清楚缓冲文件
~~~
flush table 表名;
~~~
解压后文件恢复原大小.
**注意**:什么类型的信息适合压缩:
数据不频繁发生变化,例如全国的邮编信息、地区信息。
### myisam和innodb的取舍
1. myisam: 写入数据非常快,适合使用场合dedecms/phpcms/discuz/微博系统等写入、读取操作多的系统。
2. innodb: 适合业务逻辑比较强的系统,修改 操作较多的,例如ecshop、crm、办公系统、商城系统
3. 一般用innodb就行了.
- MySQL优化概述
- 存储引擎的选择
- innodb引擎
- myisam引擎
- memory引擎
- 查询需优化语句
- 通用查询日志
- 慢查询日志
- profile机制
- 索引
- 索引基本介绍
- 索引类型
- 索引管理语法
- 创建索引主要事项
- 执行计划
- 查看索引类型
- myisam索引数据结构
- innodb索引数据结构
- 索引覆盖
- 索引使用原则
- 列独立
- like查询
- 复合索引使用
- or运算都具有索引
- mysql智能选择
- 优化group by语句
- 前缀索引
- 全文索引
- 查询缓存
- 查询缓存操作
- 无缓存
- limit分页优化
- 分区
- 分区介绍
- list分区
- range分区
- hash分区
- key(键值)分区
- 分区管理
- 分表
- 分表介绍
- 水平分表
- 垂直分表
- MySQL锁机制
- 锁机制介绍
- 锁的几种形式
- 表锁操作
- 行锁操作
- 数据碎片与维护
- 范式
- 第一范式
- 第二范式
- 第三范式
- 反三范式
- 主从复制
- 介绍
- 读写分离