在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。
而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。
MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB,另外还有合并、记忆(堆)等。
<强>主要的几个存储引擎强>
MyISAM管理非事务表,提供高速存储和检索,以及全文搜索能力。
MyISAM是Mysql的默认存储引擎。当创建创建新表时,未指定新表的存储引擎时,默认使用MyISAM。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义),.MYD (MYData,存储数据),。MYI (MYIndex存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
InnoDB存储引擎用于事务处理应用程序,具有众多特性,包括酸事务支持,提供了具有提交,回滚和崩溃恢复能力的事务安全。但是对比MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
内存将所有数据保存在内存中,可以应用于临时表中在需要快速查找引用和其他类似数据的环境下,可提供极快的访问.Memory使用哈希索引,所以数据的存取速度非常快。
合并允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
<强>不同存储引擎的横向对比强>,
特点 MyISAM BDB 内存 InnoDB 存储限制 没有 没有 有 64年结核病 事务安全 , 支持 , 支持 锁机制 表锁 页锁 表锁 行锁 B树索引 支持 支持 支持 支持 哈希索引 , , 支持 支持 全文索引 支持 , , , 集群索引 , , , 支持 数据缓存 , , 支持 支持 索引缓存 支持 , 支持 支持 数据可压缩 支持 , , , 空间使用 低 低 N/A 高 内存使用 低 低 中等 高 批量插入的速度 高 高 高 低 支持外键 , , , 支持
<强>查看和配置存储引擎的操作强>
1。用显示引擎;命令可以显示当前数据库支持的存储引擎情况,
2。要查看表的定义结构等信息可以使用以下几种命令:
Desc(活性离子束腐蚀)表;//查看数据表的结构 显示创建表的表;//显示表的创建语句,可以查看创建表时指定的引擎 显示表状态像‘表’\ G显示表的当前状态值
3。设置或修改表的存储引擎
创建数据库表时设置存储存储引擎的基本语法是:
创建表的表( columnName(列名1)类型(数据类型)素质(属性设置), columnName(列名2)类型(数据类型)素质(属性设置), ……. .)引擎=engineName
修改存储引擎,可以用命令
改变表的表引擎=engineName
对于整个服务器或方案,你并不一定要使用相同的存储引擎,可以为方案中的每个表使用不同的存储引擎。
InnoDB使用页面存储结构,下面是InnoDB的表空间结构图:
页面页面存储格式如下图所示:
<强>一个页面的存储由以下几部分组成:强>
-
<李>页头(页眉):记录页面的控制信息,共占150字节,包括页的左右兄弟页面指针,页面空间使用情况等,页头的详细说明会在下一篇中描述。