## myisam引擎
小于等于5.5mysql默認的存儲引擎。
(ISAM——索引順序訪問方法)是Indexed Sequential Access Method(索引順序存取方法)的縮寫 .它是一種索引機制,用于高效訪問文件中的數據行,擅長與處理高速讀與寫。
### 存儲方式
1. 數據,索引,結構分別存儲于不同的文件中。
2. mysiam存儲引擎數據表,每個數據表都有三個文件*.frm *.MYD *.MYI
3. **這三個文件支持物理復制、粘貼操作(直接備份還原)。**

### 數據的存儲順序為插入順序
~~~
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鎖機制
- 鎖機制介紹
- 鎖的幾種形式
- 表鎖操作
- 行鎖操作
- 數據碎片與維護
- 范式
- 第一范式
- 第二范式
- 第三范式
- 反三范式
- 主從復制
- 介紹
- 讀寫分離