澳门在线威尼斯官方 > 电脑数据库 > MySQL学习笔记,开辟基础类别9

原标题:MySQL学习笔记,开辟基础类别9

浏览次数:100 时间:2019-10-06

  MyISAM是mysql 默认存储引擎,它不支持事务,外键。但访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上都可以使用这个引擎。
每个MyISAM在磁盘上存储成3个文件,文件名都和表名相同,扩展分别是:
.frm(存储表定义)
.MYD(MYdata 存储数据)
.MYI( MYIndex 存储索引)
数据文件和索引文件可以放置在不同的目录,平均分布IO,获取更快速度。

在5.5版本之前,MyISAM是MySQL默认的存储引擎。MyISAM不支持事务、也不支持外键,其优势是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用都可以使用这个引擎来创建表。每个MyISAM在磁盘上存储成3个文件,其文件名和表名相同,但扩展名分别是:

1.  指定索引文件和数据文件的路径

  • .frm(存储表的定义)
  • .MYD(MYData,存储数据)
  • .MYI(MYIndex,存储索引)

  在创建表的时候通过data directory和 index directory语句指定, 也就是不同MyISAM表的索引文件和数据文件可以放置到不同的路径下,文件路径需要是绝对路径,并且有访问权限

数据文件和索引文件可以分别存放在不同的目录,平均分布IO,以获得更快的速度。要指定索引文件和数据文件的路径,需要在创建表时通过DATA DIRECTORYINDEX DIRECTORY语句指定,也就是说不同的MyISAM表的索引文件和数据文件可以放到不同的路径下。文件路径要是绝对路径,并有访问权限。

--  默认存储路径
SELECT @@datadir;

MyISAM类型的表可能损坏,原因可能是多种多样的,损坏后的表可能不能被访问,会提示需要修复或者访问后返回错误的结果。MyISAM类型的表提供了修复工具,可以用 CHECK TABLE 语句来检查MyISAM的健康状态,并用 REPAIR TABLE 语句修复一个损坏的MyISAM表。表损坏可能导致数据库异常重启。

图片 1

MyISAM表支持3中不同的存储格式,分别是:

--  首先要创建/ibddir目录,有5.6才支持单表指定目录
CREATE TABLE test_dir_table(
  strative_id VARCHAR(16)  NOT NULL,
  date_id VARCHAR(8) NOT NULL
  PRIMARY KEY (strative_id)
) ENGINE=MYISAM DATA DIRECTORY = '/ibddir' INDEX DIRECTORY= '/ibddir';
  • 静态表(固定长度)
  • 动态表
  • 压缩表

2. 检查表的健康状态

静态表是默认的存储格式。静态表中的字段都是定长字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多。静态表的数据在存储的时候会按照列的宽度定义补足空格,但是在应用访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉了。

  表可能会损坏,原因多种多样,check table对MYISAM和InnoDB表都有作用,如检查有异常使用(repair table表名;)来修复。

但是也有些需要特别注意的问题,如果需要保存的内容后面本来就带有空格,那么在返回结果的时候也会被去掉。下面的例子演示了插入的记录包含空格时的处理情况:

语法:
CHECK TABLE tbl_name[,tbl_name] ... [option] ...
option= {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

mysql> create table myisam_char (name char(10)) engine=myisam;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into myisam_char values('abcde'),('abcde  '),('  abcde'),('abcde  ');
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> select name,length(name) from myisam_char;
+---------+--------------+
| name    | length(name) |
+---------+--------------+
| abcde   |            5 |
| abcde   |            5 |
|   abcde |            7 |
| abcde   |            5 |
+---------+--------------+
4 rows in set (0.00 sec)
CHECK TABLE ai;

动态表中包含变长字段,记录不是固定长度的,这样存储的优点是占用空间相对较少,但是频繁的更新或删除记录会产生碎片,需要定期执行optimize table语句或myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难。

图片 2

压缩表由 myisampack 工具创建,占据非常小的磁盘空间。因为每个记录是被单独压缩的,所以只有非常小的访问开销。

本文由澳门在线威尼斯官方发布于电脑数据库,转载请注明出处:MySQL学习笔记,开辟基础类别9

关键词:

上一篇:审计操作概念

下一篇:没有了