Mysql之MyISAM存储引擎
MyISAM是Mysql的默认存储引擎,它在磁盘上存储为三个文件, .MYD是数据文件 .MYI是索引文件 .frm是存储表定义。我们可以考虑把数据文件和索引文件分别存到不同的磁盘,实现IO平均分布。
如果对事务完整性没有要求,或者以select 、insert 为主的操作,可以选择该存储引擎。
1、MyISAM只会对索引进行缓存,而数据文件则是使用操作系统缓存,当索引数据大于key buffer的时候,也会使用操作系统缓存。
2、使用count(*)的时候很快,因为行数是单独保存的。
3、不支持事务,不支持外键,访问快。
4、使用表级锁定。
5、每张表一个数据文件,备份的时候可以直接复制,恢复的时候也可以直接覆盖,操作方便。
6、可以使用myisamchk进行故障恢复。
MyISAM表的存储格式:静态表(固定长度)【默认格式】、动态表、压缩表
1、固定格式的特点:快速、容易缓存、崩溃后容易恢复、比动态表占用更大空间。但是静态表里面的字段是固定长度的,如果存储的数据长度不够,那么其他位就是用空格填充,在使用的时候,会由系统去掉空格。所以这个地方引入一个问题,如果我们的数据里面尾部本来就含有空格,那么在使用数据的时候,空格会被去掉, 关于这一点我们需要非常小心。
2、动态表格式的特点:除了长度小于4的列,其他字符型的列长度是可变的;比静态固定格式使用较少空间;如果一行变得很大的时候,会进行分片,所以会造成碎片化,可以使用optimize table或者myisamchk -r来改善性能,使用myisamchk -ei获取表的统计信息;如果崩溃了,比静态格式表的恢复困难。
效果截图--------
root->/tmp# myisamchk -r /var/lib/mysql/test/test_table.MYI
- recovering (with keycache) MyISAM-table '/var/lib/mysql/test/test_table.MYI'
Data records: 23068672
root->/tmp# myisamchk -ei /var/lib/mysql/test/test_table.MYI
Checking MyISAM file: /var/lib/mysql/test/test_table.MYI
Data records: 23068672 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check records and index references
Records: 23068672 M.recordlength: 7 Packed: -40%
Recordspace used: 100% Empty space: 0% Blocks/Record: 1.00
Record blocks: 23068672 Delete blocks: 0
Record data: 161480704 Deleted data: 0
Lost space: 0 Linkdata: 0
User time 1.25, System time 0.12
Maximum resident set size 1684, Integral resident set size 0
Non-physical pagefaults 516, Physical pagefaults 0, Swaps 0
Blocks in 0 out 0, Messages in 0 out 0, Signals 0
Voluntary context switches 25, Involuntary context switches 2746
root->/tmp#
3、压缩表的特点:占用非常少的磁盘空间;
root->/var/lib/mysql/test# ls -lh
total 155M
-rw-rw---- 1 mysql mysql 8.5K Sep 29 14:05 err_table.frm
-rw-rw---- 1 mysql mysql 612 Sep 29 14:05 err_table.MYD
-rw-rw---- 1 mysql mysql 1.0K Nov 26 16:16 err_table.MYI
-rw-rw---- 1 mysql mysql 8.4K Jan 19 23:34 test_table.frm
-rw-rw---- 1 mysql mysql 154M Jan 22 11:19 test_table.MYD
-rw-rw---- 1 mysql mysql 1.0K Jan 22 11:19 test_table.MYI
root->/var/lib/mysql/test# myisampack test_table.MYI
Compressing test_table.MYD: (23068672 records)
- Calculating statistics
- Compressing file
71.43%
root->/var/lib/mysql/test# ls -lh
total 45M
-rw-rw---- 1 mysql mysql 8.5K Sep 29 14:05 err_table.frm
-rw-rw---- 1 mysql mysql 612 Sep 29 14:05 err_table.MYD
-rw-rw---- 1 mysql mysql 1.0K Nov 26 16:16 err_table.MYI
-rw-rw---- 1 mysql mysql 8.4K Jan 19 23:34 test_table.frm
-rw-rw---- 1 mysql mysql 45M Jan 22 11:19 test_table.MYD
-rw-rw---- 1 mysql mysql 1.0K Jan 22 11:24 test_table.MYI
测试MyISAM的事务性
----------------------
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into err_table(errsql) values('ppyy');
Query OK, 1 row affected (0.03 sec)
mysql> select * from err_table;
+---------+--------+--------+
| errcode | errsql | retime |
+---------+--------+--------+
| NULL | ppyy | NULL |
+---------+--------+--------+
1 row in set (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select * from err_table;
+---------+--------+--------+
| errcode | errsql | retime |
+---------+--------+--------+
| NULL | ppyy | NULL |
+---------+--------+--------+
1 row in set (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from err_table;
+---------+--------+--------+
| errcode | errsql | retime |
+---------+--------+--------+
| NULL | ppyy | NULL |
+---------+--------+--------+
1 row in set (0.00 sec)
mysql> alter table err_table engine=innodb;
Query OK, 1 row affected (0.19 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into err_table(errsql) values('zzqqq');
Query OK, 1 row affected (0.00 sec)
mysql> select * from err_table;
+---------+--------+--------+
| errcode | errsql | retime |
+---------+--------+--------+
| NULL | ppyy | NULL |
| NULL | zzqqq | NULL |
+---------+--------+--------+
2 rows in set (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.05 sec)
mysql> select * from err_table;
+---------+--------+--------+
| errcode | errsql | retime |
+---------+--------+--------+
| NULL | ppyy | NULL |
+---------+--------+--------+
1 row in set (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from err_table;
+---------+--------+--------+
| errcode | errsql | retime |
+---------+--------+--------+
| NULL | ppyy | NULL |
+---------+--------+--------+
1 row in set (0.00 sec)
----------------------
查看表状体
----------------------
mysql> show table status like 'test_table'\G;
*************************** 1. row ***************************
Name: test_table
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 46137344
Avg_row_length: 7
Data_length: 322961408
Max_data_length: 1970324836974591
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2015-01-19 23:34:54
Update_time: 2015-01-22 11:19:17
Check_time: 2015-01-22 11:19:17
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
ERROR:
No query specified
----------------------
MyISAM表常见损坏情况:
1、在写过程中Mysql的进程被杀掉;
2、主机宕机(例如硬件故障)
转载于:https://blog.51cto.com/woodywoodpecker/1606984
Mysql之MyISAM存储引擎相关推荐
- mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...
概述 mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Inno ...
- MySQL数据库MyISAM存储引擎转为Innodb
之前公司的数据库存储引擎全部为MyISAM,数据量和访问量都不是很大,所以一直都没什么问题.但是最近出现了MySQL数据表经常被锁的情况,直接导致了用户连接网站时超时而返回502,于是决定把存储引擎转 ...
- MySQL 两种存储引擎:MyISAM与InnoDB对比及理解
MySQL 两种存储引擎:MyISAM与InnoDB对比及理解 目前MySQL默认的存储引擎是InnoDB 现在大多数时候我们使用的都是InnoDB存储引擎,但是在某些情况下使用MyISAM更好,比如 ...
- mysql myisam存储引擎_MySQL浅谈MyISAM存储引擎
本文来源于:IT摆渡网---一个IT实时问答系统快速解决你的任何IT问题,无需等待! mysql中用的最多存储引擎就是innodb和myisam.做为Mysql的默认存储引擎,myisam值得我们学习 ...
- mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败
mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败. 添加显示成功后,可以轻松删除父表.
- MySQL学习笔记(二):MyISAM 存储引擎
MyISAM 存储引擎 MyISAM 基于旧的 (不再可用) ISAM 存储引擎, 但有许多有用的扩展. 每个 MyISAM 表都存储在三个文件中的磁盘上.这些文件具有以表名开头的名称, 并具有用于指 ...
- MySQL中的InnoDB和MyISAM存储引擎区别
区别: 1. InnoDB 支持事务,MyISAM 不支持事务.这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一: 2. InnoDB 支持外键,而 MyISAM ...
- MYSQL 浅谈MyISAM 存储引擎
思维导图 介绍 mysql中用的最多存储引擎就是innodb和myisam.做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对<高性能MYSQL>书中提到的myisam ...
- MyISAM 存储引擎(mysql 8.0)
MyISAM基于旧的(不再可用的)ISAM存储引擎,但有许多有用的扩展. 表 16.2 MyISAM 存储引擎特性 特征 支持 B树索引 是的 备份/时间点恢复(在服务器中实现,而不是在存储引擎中.) ...
最新文章
- 【 数字信号处理 】定点数的表示之二进制数的原码与补码
- 图像几何变换之透视变换
- jQuery 表格自动增加
- 1.4 第一个Python程序
- 将ocx和DLL文件打包成cab文件,inf的编写
- 使用Flask-SocketIO完成服务端和客户端的双向通信
- html5翻卡片游戏,用 JavaScript 写一个卡片小游戏
- XManager 远程访问 Ubuntu16.04 图形界面
- python调用flask接口实例化_常用业务接口界面化 in python flask
- 面试题:React实现鼠标托转文字绕原点旋转
- ubuntu下怎样安装星际译王stardict和下载本地词典
- 组合模式-完美处理树形递归结构
- 硬盘格式化后数据还可以恢复吗?格式化硬盘的恢复方法
- Java | 绘图:Graphics2D
- php垃圾回收,PHP垃圾回收机制的理解
- 小学计算机写字板教案,小学第二册信息技术《第9课走进“写字板”》教学参考...
- Designing an Encoder for StyleGAN Image Manipulation论文解读
- 劳务员培训建筑八大员培训劳务员建筑劳务分包管理突出的问题
- DNF纯图色起号源码
- Dashgo D1使用手册
热门文章
- Laravel自定义artisan命令在Sell中运行
- 计算机水平怎么填范例,简历表个人能力怎么写(大学生个人获奖情况范例)
- 第十二届蓝桥杯省赛一等奖国赛一等奖经验总结
- android10全面屏手势 操作图,全面屏手势浪潮来临?安卓Q测试版新发现,手势操作十分便捷...
- 对付不良商家,恶补攒机知识
- 状语从句不是简单句_英语简单句、从句分类及解析
- Qt(三)--- 实现QQ登陆界面头像状态栏的功能
- 朴素贝叶斯算法,点进来了解了解。
- 梦幻古龙服务器 文档,梦幻古龙GM命令大全较完整
- 1600-卡斯丁狗要吃糖葫芦 ZCMU