mysql存储引擎

数据库是数据的集合,数据管理系统(DBMS)是操作和管理数据库的应用程序。数据库应用主要有两类:

  • OLTP(Online Transaction Processing):联机事务处理
    实时性要求高
    数据量小
    高并发
    要求满足ACID
  • OLAP(Online Analytical Processing ):联机分析处理
    实时性要求不高
    数据量大
    并发量小

InnoDB存储引擎

  • 面向OLTP的应用
  • 行锁设计、支持外键、并支持类似于Oracle的非锁定读
  • 采用聚集(clustered)的方式,因此每张表的存储都是按主键的顺序进行存放,如果没有在表中显示指定主键,innodb会为每一行生成一个6个字节的rowid,并以此为主键

MyISAM存储引擎

  • 面向OLAP的应用
  • 表锁设计、不支持事务、支持全文索引
  • 存储引擎表由MYD和MYI组成;MYD储放数据文件,MYI存放索引文件;可以通过使用myisampack工具来进一步压缩数据文件,因为myisampack工具使用赫夫曼(Huffman)编码静态算来压缩数据,因此使用myisampack工具压缩后的表是只读的
  • 缓冲池(cache)只缓存索引文件,不缓存数据文件,数据文件的缓存交由操作系统自身完成

NDB存储引擎

  • 是一个集群存储引擎
  • 数据全部存放在内存中,从mysql 5.1 版本开始可以将非索引数据放在磁盘上;因此主键查找快,并且可以通过添加NDB数据存储节点,线性的提高数据库性能
  • 连接操作(join)是放在mysql数据层完成的,而不是在存储引擎层,所以复杂的连接操作,速度很慢

Memory存储引擎(HEAP存储引擎)

  • 将表中的数据存放在内存中,如果数据库重启或者崩溃,数据会消失,适合于存储中间数据的临时表
  • 只支持表锁
  • 不支持TEXT和BLOG列类型
  • 存储变长字段(varchar)时是按照定长字段(char)的方式进行的,会浪费内存
  • 如果用于存储中间结果集时存储的数据大于存储表的容量设置,又或者中间结果集中含有TEXT和BLOG列类型字段,则mysql会把其转换为MyISAM存储引擎表存放到磁盘上,而MyISAM不缓存数据文件,因而产生的临时表性能对于查询会有影响

Archive存储引擎

  • 只支持INSERT和SELECT操作
  • 使用zlib算法将row进行压缩后存储,压缩比列可达1:10
  • 适合存储归档数据,如日志
  • 使用行锁,提高并发,但本身并不是事务安全的存储引擎

Federated存储引擎

  • 本身不存储数据,只是指向一台远程的数据库服务器上面的表
  • 只支持mysql数据库表,不支持异构数据库表

Maria存储引擎

  • 新开发的引擎,主要用来取代MyISAM
  • 支持缓存数据和索引文件、行锁设计、提供了MVCC(多版本并发控制)功能,支持事务和非事务安全的选项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值