mysql存储引擎相关(一)

又看了一次基本的存储引擎相关,为了以后好找,就把自己认为需要巩固的放在了上面,仅做参考。


什么是存储引擎:

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎(也称作表类型)。 MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。


MySQL常用的存储引擎为MyISAM、InnoDB、MEMORY、MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。


MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种:               

其数据保存有.frm、.MYI、.MYD三种格式的文件,其中表定义在.frm这里;数据文件保存在.MYD;索引保存在.MYI里。


InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

InnoDB的数据保存与MyISAM的不同,其数据文件保存在类似ibdate1这样的文件里面,而在库下面只有一个.frm相关的表定义文件


查看当前系统支持的存储引擎类型:

mysql> show engines;

+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)


下面举些实际数字:

开始查看一个表的格式为InnoDB的

mysql> show table status like 'pet_bak'\G
*************************** 1. row ***************************
           Name: pet_bak
         Engine: InnoDB
        Version: 10
     Row_format: Compact


其在库下面对应的只有表定义文件:

-rw-rw---- 1 mysql mysql 8690 May 29 17:05 pet_bak.frm


然后修改表的存储引擎类型:

mysql> alter table pet_bak engine=MyISAM;

其在库下面的文件就变成了:

-rw-rw---- 1 mysql mysql 1024 May 29 16:57 pet_bak.MYI
-rw-rw---- 1 mysql mysql    0 May 29 16:57 pet_bak.MYD
-rw-rw---- 1 mysql mysql 8690 May 29 16:57 pet_bak.frm



相关参考链接:

存储引擎比较

http://menglimengwai.iteye.com/blog/464667    

浅谈MySql的存储引擎(表类型)
http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html


MySQL 架构 - MySQL 存储引擎 -MyISAM

http://database.ctocio.com.cn/18/8904518.shtml




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值