Linux中,MySQL存储引擎

存储引擎

在数据库中保存的是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库。而在设计表的时候,最关注的一个问题是使用什么存储引擎。
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的、不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体性能。
例如,如果在研究大量的临时数据,也许需要使用内存类存储引擎。内存存储引擎能够在内存中存储相关数据。又或者,需要使用一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。
这些不同的技术以及配套的相关功能在 MSQL中被称作存储引擎(也称作表类型)。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在 MySQL服务器中启用。选择适用于服务器、数据库和表格的存储引擎,可以在存储信息、检索数据时,提供最大的灵活性。
关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于 Excel电子表格的形式。有的表简单、有的表复杂、有的表根本不用来存储任何长期数据、有的表读取时非常快,但是插入数据时却很差。在实际开发过程中,就可能需要各种各样的表,不同的表就意味着存储不同类型的数据,数据的处理上也会存在着差异。那么,对于MySQL米说,它提供了很多种类型的存储引擎(或者说不同的表类型),根据对数据处理的需求,可以选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。
在 MySQL客户端中,使用以下命令可以査看 MySQL支持的引擎。

查看支持的引擎

mylsam存储引擎

空间:256T

功能:b树索引、不支持事务、支持全文索引、插入和查询速度快

MyISAM 存储引擎不支持事务,也不支持外键,特点是访问速度快,对事务完整性没有要求,以 SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
每个MyISAM表在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:
tm(存储表定义)
MYD(MYData,存储数据)
MYI(MYIndex,存储索引)

MyISAM 表还支持3种不同的存储格式:
静态(固定长度)表
动态表
压缩表

innoDB存储引擎

空间64T

功能:支持b树索引、支持数据缓存、支持外键、不支持全文索引、支持行级锁定。

InnoDB 是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。MySQL 从5.5.5版本开始,默认的存储引擎为InnoDB。InnoDB 存储引擎还引入了行级锁定和外键约束,在以下场景中使用InnoDB 存储引擎是最理想的选择:
更新密集的表:InnoDB存储引整特别适合处理多重并发的更新请求。
事务:InnoDB 存储引擎是支持事务的标准MySQL存储引。
自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
外键约束:MySQL支持外键的存储引擎只有InnoDB.
支持自动增加列 AUTO INCREMENT 属性。
一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。
而 MyISAM 和InnoDB 两种存储引擎的区别主要表现在以下几个方面。

InnoDB 支持事务,MyISAM不支持,这一点是非常重要的。事务是一种高级的处理方式,如对一些表中的列进行增删改的过程中只要哪个出错还可以回滚还原,而 MyISAM就不可以。
MyISAM 适合查询、插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用。
InnoDB 支持外键,MyISAM 不支持。
从 MySQL5.5.5 以后,InnoDB 是默认引擎。
MySQL 从5.6 版本开始 InnoDB 引擎才支持 FULLTEXT 类型的索引,
InnoDB 中不保存表的行数,如 select count(*)from table 时,InnoDB 需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。需要注意的是,当 count(*)语句包含 where 条件时 MyISAM 也需要扫描整个表。
对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在 MyISAM 表中可以和其他字段一起建立组合案引。
清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表。InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like"%ee%;)。

mylsam与innodb选择使用

MyISAM 和 InnoDB 是 MySQL 数据库提供的两种存储引擎。两者的优劣可谓是各有千秋。InnoDB会支持一些关系数据库的高级功能,如事务功能和行级锁,MyISAM 不支持。MyISAM 的性能更优,占用的存储空间少。所以,选择何种存储引擎,视具体应用而定。
(1)如果应用程序一定要使用事务,毫无疑问要选择InnoDB 引擎。但要注意,InnoDB的行级锁是有条件的。在 where 条件没有使用主键时,照样会锁全表。比如 DELETE FROMmytable 这样的删除语句。
(2)如果应用程序对查询性能要求较高,就要使用MyISAM了。MyISAM 索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于InnoDB。压缩后的索引也能节约一些磁盘空间。
有人说 MyISAM 只能用于小型应用,其实这只是一种偏见。如果数据量比较大,这是需要通过升级架构来解决,比如分表分库,而不是单纯地依赖存储引警。

修改默认的存储引擎

修改默认引擎有四种方法,分别如下:

其他的一些引擎

memory:内存 b树索引 hash索引、不支持事务
archive:none、不支持事物、不支持全文索引
 

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值